From ce85d6b74fa2192ebdfc560e713961d3b5471711 Mon Sep 17 00:00:00 2001 From: Pieryvdl Date: Sun, 29 Sep 2024 20:26:18 +0200 Subject: [PATCH 01/22] hotfix on main with API key --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c200951a..0577280f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,6 +44,7 @@ jobs: echo "IOS_BUNDLE_ID=${{ secrets.IOS_BUNDLE_ID }}" >> .env echo "DEFAULT_IMAGE_URL=${{ secrets.DEFAULT_IMAGE_URL }}" >> .env echo "DEFAULT_BANNER_URL=${{ secrets.DEFAULT_BANNER_URL }}" >> .env + echo "RAWG_API_KEY=${{ secrets.RAWG_API_KEY }}" >> .env shell: bash # Step 5: Create local.properties file From 468f1b32071661795dbd44d3c80c80dd959be430 Mon Sep 17 00:00:00 2001 From: Monika Theiss <131775579+MonikaTheiss@users.noreply.github.com> Date: Mon, 30 Sep 2024 06:57:31 +0200 Subject: [PATCH 02/22] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a8c2ca4..74469bc7 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ Up until now, gamers never really had a platform for themselves. GameOnConnect s **Link to Demo 1 video: [here](https://drive.google.com/file/d/1whQs6Kx2UuDGEKiUvoNlYNBY0Hbh9hmQ/view?usp=sharing)**
**Link to Demo 2 video: [here](https://drive.google.com/file/d/1JRtQugU-ON1kP8CeSCID6KgyyPMjlJUA/view?usp=sharing)**
-**Link to Demo 3 video: [here](https://drive.google.com/file/d/1-KsOKCFhXqeEjshtNliyp3Kam7eaeQtH/view?usp=sharing)**

+**Link to Demo 3 video: [here](https://drive.google.com/file/d/1-KsOKCFhXqeEjshtNliyp3Kam7eaeQtH/view?usp=sharing)**
+**Link to Demo 4 video: [here](https://drive.google.com/file/d/1ZP6sayu-9IS_WDN0ru2rhSn9RI-h-QIj/view?usp=sharing)**

# Documentation Links: # **[SRS Documents](https://github.com/COS301-SE-2024/GameOnConnect/wiki)**
**[Github project board](https://github.com/orgs/COS301-SE-2024/projects/54)**
From 44a579cac767db7cb74b76a4e6294e032ae114d4 Mon Sep 17 00:00:00 2001 From: Pieryvdl Date: Wed, 16 Oct 2024 13:28:46 +0200 Subject: [PATCH 03/22] utility fixes --- README.md | 1 - lib/view/components/home/start_timer.dart | 2 +- pubspec.lock | 204 ++++++++++++---------- 3 files changed, 115 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index 74469bc7..1c728b07 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ Up until now, gamers never really had a platform for themselves. GameOnConnect s **[Coding Standards](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Coding-Standards)**
# 🎮Badges: # -[![codecov](https://codecov.io/github/COS301-SE-2024/GameOnConnect/graph/badge.svg?token=Wer3BjZWpE)](https://codecov.io/github/COS301-SE-2024/GameOnConnect) [![Issue Tracking](https://img.shields.io/badge/Issue_Tracking-GitHub_Issues-blue)](https://github.com/COS301-SE-2024/GameOnConnect/issues) [![issues - GameOnConnect](https://img.shields.io/github/issues/COS301-SE-2024/GameOnConnect)](https://github.com/COS301-SE-2024/GameOnConnect/issues) ![issues - GameOnConnect](https://img.shields.io/github/issues-closed/COS301-SE-2024/GameOnConnect?color=brightgreen) diff --git a/lib/view/components/home/start_timer.dart b/lib/view/components/home/start_timer.dart index 068c42e7..dc756c60 100644 --- a/lib/view/components/home/start_timer.dart +++ b/lib/view/components/home/start_timer.dart @@ -110,7 +110,7 @@ class _GameTimer extends State { return Text('Error: ${snapshot.error}'); } else if (!snapshot.hasData || snapshot.data!.isEmpty) { - return const Text('No data found'); + return const Text('Add a game to \'My Games\' to start'); } else { return FittedBox( child: DropdownMenu( diff --git a/pubspec.lock b/pubspec.lock index 7b9f11c2..86c174c4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: args - sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6 url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.6.0" async: dependency: transitive description: @@ -205,10 +205,10 @@ packages: dependency: "direct main" description: name: cloud_firestore - sha256: a08d0f4aae40e63e7a57102de890d5d3c93d719ce38985b2a36c2672283af7d2 + sha256: bdc7607e9169ee3ce736bbbe6a81c2a6cb15c41379346b74f77f8e641211a17f url: "https://pub.dev" source: hosted - version: "5.4.3" + version: "5.4.4" cloud_firestore_platform_interface: dependency: transitive description: @@ -269,10 +269,10 @@ packages: dependency: transitive description: name: crypto - sha256: ec30d999af904f33454ba22ed9a86162b35e52b44ac4807d1d93c288041d7d27 + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.6" csslib: dependency: transitive description: @@ -357,18 +357,18 @@ packages: dependency: transitive description: name: file_selector_linux - sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" + sha256: "712ce7fab537ba532c8febdb1a8f167b32441e74acd68c3ccb2e36dcb52c4ab2" url: "https://pub.dev" source: hosted - version: "0.9.2+1" + version: "0.9.3" file_selector_macos: dependency: transitive description: name: file_selector_macos - sha256: cb284e267f8e2a45a904b5c094d2ba51d0aabfc20b1538ab786d9ef7dc2bf75c + sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc" url: "https://pub.dev" source: hosted - version: "0.9.4+1" + version: "0.9.4+2" file_selector_platform_interface: dependency: transitive description: @@ -381,10 +381,10 @@ packages: dependency: transitive description: name: file_selector_windows - sha256: "2ad726953f6e8affbc4df8dc78b77c3b4a060967a291e528ef72ae846c60fb69" + sha256: "8f5d2f6590d51ecd9179ba39c64f722edc15226cc93dcc8698466ad36a4a85a4" url: "https://pub.dev" source: hosted - version: "0.9.3+2" + version: "0.9.3+3" firebase_app_check: dependency: "direct main" description: @@ -485,10 +485,10 @@ packages: dependency: "direct main" description: name: firebase_storage - sha256: "8a8a21f3a359129a1257e2e77ece1de9678f40e43876635b3d411388ee388729" + sha256: e00e2909e36f5e44f839fd77dff90ff764f7bb303ed548d43617014ce05c77c8 url: "https://pub.dev" source: hosted - version: "12.3.2" + version: "12.3.3" firebase_storage_platform_interface: dependency: transitive description: @@ -501,18 +501,18 @@ packages: dependency: transitive description: name: firebase_storage_web - sha256: "40c52d5585ce63659b4b698fee0d47412ce499392ae3edf69c8e6141c22daf9a" + sha256: d9221c943c1341ee2cba51857ddb5916686994b16b181e9e9d2e0d5a9056f9b7 url: "https://pub.dev" source: hosted - version: "3.10.2" + version: "3.10.3" fixnum: dependency: transitive description: name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" fl_chart: dependency: "direct main" description: @@ -525,26 +525,26 @@ packages: dependency: "direct main" description: name: flame - sha256: e6873a8540a197a9bfe251e10c9e1f200329041d6e6d70df2cf38aa681cf2ef7 + sha256: "89d65fdb10b8c4ac46c86b8d5541e560604bf55317c01f3f558d09c4a65953c1" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.20.0" flame_audio: dependency: "direct main" description: name: flame_audio - sha256: a86839f1448bbf9e2cd9c5d396be8dfc745428a9d27db6dfcdd9680466d8370e + sha256: af1b4d7972ebe8a11457ec7949ffad390118c0f50ab02160d4c462a7ffe661e9 url: "https://pub.dev" source: hosted - version: "2.10.3" + version: "2.10.4" flame_tiled: dependency: "direct main" description: name: flame_tiled - sha256: bb00888e0893413ffeb083e24cee3d5f7c08cbae5d8df551f14a564fdf7c5282 + sha256: "9c8fabdff44cd8ef907660d2530110d68156beccaf468147051bcff465bc48a3" url: "https://pub.dev" source: hosted - version: "1.20.3" + version: "1.20.4" flutter: dependency: "direct main" description: flutter @@ -562,18 +562,18 @@ packages: dependency: "direct main" description: name: flutter_card_swiper - sha256: "880ad669017154d6d1f8c3abd861db08af97b3b7b0f7d7d5cbde690a9253811d" + sha256: "1eacbfab31b572223042e03409726553aec431abe48af48c8d591d376d070d3d" url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "7.0.2" flutter_dotenv: dependency: "direct main" description: name: flutter_dotenv - sha256: "9357883bdd153ab78cbf9ffa07656e336b8bbb2b5a3ca596b0b27e119f7c7d77" + sha256: b7c7be5cd9f6ef7a78429cabd2774d3c4af50e79cb2b7593e3d5d763ef95c61b url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.2.1" flutter_driver: dependency: transitive description: flutter @@ -599,18 +599,18 @@ packages: dependency: transitive description: name: flutter_inappwebview - sha256: "9f023eaa11c91330344aca4c45cd537aba9ccd92ef74b41cd9e112a862530a4f" + sha256: "80092d13d3e29b6227e25b67973c67c7210bd5e35c4b747ca908e31eb71a46d5" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.1.5" flutter_inappwebview_android: dependency: transitive description: name: flutter_inappwebview_android - sha256: "6b24fbbaa69168da2d2ab4ddb2d65677468e2a0a0d593d629558537f710786dc" + sha256: "62557c15a5c2db5d195cb3892aab74fcaec266d7b86d59a6f0027abd672cddba" url: "https://pub.dev" source: hosted - version: "1.1.0+4" + version: "1.1.3" flutter_inappwebview_internal_annotations: dependency: transitive description: @@ -623,42 +623,42 @@ packages: dependency: transitive description: name: flutter_inappwebview_ios - sha256: "571b0bfdb963548fcb945b9abe357352b4a523c249b4f9816fc5a83e2a71d9ec" + sha256: "5818cf9b26cf0cbb0f62ff50772217d41ea8d3d9cc00279c45f8aabaa1b4025d" url: "https://pub.dev" source: hosted - version: "1.1.0+3" + version: "1.1.2" flutter_inappwebview_macos: dependency: transitive description: name: flutter_inappwebview_macos - sha256: e5e7f09dabd7b5b2ef15b00c07ed4da4a45bd597db0c4221702485665b6628b7 + sha256: c1fbb86af1a3738e3541364d7d1866315ffb0468a1a77e34198c9be571287da1 url: "https://pub.dev" source: hosted - version: "1.1.0+3" + version: "1.1.2" flutter_inappwebview_platform_interface: dependency: transitive description: name: flutter_inappwebview_platform_interface - sha256: da6c7bf193beba655bdfcd825b6c7f7b51da4944e1eb76bf9faddf685ca15fa2 + sha256: cf5323e194096b6ede7a1ca808c3e0a078e4b33cc3f6338977d75b4024ba2500 url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.3.0+1" flutter_inappwebview_web: dependency: transitive description: name: flutter_inappwebview_web - sha256: ee1389bfec8c9ef07ba4be48a117207c9392dbdbf366330aa26d69f67a826978 + sha256: "55f89c83b0a0d3b7893306b3bb545ba4770a4df018204917148ebb42dc14a598" url: "https://pub.dev" source: hosted - version: "1.1.0+2" + version: "1.1.2" flutter_inappwebview_windows: dependency: transitive description: name: flutter_inappwebview_windows - sha256: "3ad92e93bafc2984f90f627783c3f5fc705842fb8d4f7213f92bb9027c6eac94" + sha256: "8b4d3a46078a2cdc636c4a3d10d10f2a16882f6be607962dbfff8874d1642055" url: "https://pub.dev" source: hosted - version: "0.3.0+1" + version: "0.6.0" flutter_launcher_icons: dependency: "direct dev" description: @@ -679,10 +679,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "9ee02950848f61c4129af3d6ec84a1cfc0e47931abc746b03e7a3bc3e8ff6eda" + sha256: "9b78450b89f059e96c9ebb355fa6b3df1d6b330436e0b885fb49594c41721398" url: "https://pub.dev" source: hosted - version: "2.0.22" + version: "2.0.23" flutter_svg: dependency: "direct main" description: @@ -742,18 +742,18 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: "0608de03fc541ece4f91ba3e01a68b17cce7a6cf42bd59e40bbe5c55cc3a49d8" + sha256: "0928059d2f0840f63c7b07a30cf73b593ae872cdd0dbd46d1b9ba878d2599c01" url: "https://pub.dev" source: hosted - version: "6.1.30" + version: "6.1.33" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: "4898410f55440049e1ba8f15411612d9f89299d89c61cd9baf7e02d56ff81ac7" + sha256: "83f015169102df1ab2905cf8abd8934e28f87db9ace7a5fa676998842fed228a" url: "https://pub.dev" source: hosted - version: "5.7.7" + version: "5.7.8" google_sign_in_platform_interface: dependency: transitive description: @@ -806,10 +806,10 @@ packages: dependency: transitive description: name: image - sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8" + sha256: f31d52537dc417fdcde36088fdf11d191026fd5e4fae742491ebd40e5a8bea7d url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.3.0" image_picker: dependency: "direct main" description: @@ -822,10 +822,10 @@ packages: dependency: transitive description: name: image_picker_android - sha256: c0a6763d50b354793d0192afd0a12560b823147d3ded7c6b77daf658fa05cc85 + sha256: d34e0d9e024e81321b2aeed7b202ec6181cc282e6a1c0c0b4e6ad07ef1065d82 url: "https://pub.dev" source: hosted - version: "0.8.12+13" + version: "0.8.12+16" image_picker_for_web: dependency: transitive description: @@ -838,10 +838,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: "6703696ad49f5c3c8356d576d7ace84d1faf459afb07accbb0fae780753ff447" + sha256: "4f0568120c6fcc0aaa04511cb9f9f4d29fc3d0139884b1d06be88dcec7641d6b" url: "https://pub.dev" source: hosted - version: "0.8.12" + version: "0.8.12+1" image_picker_linux: dependency: transitive description: @@ -955,10 +955,10 @@ packages: dependency: "direct main" description: name: loading_animation_widget - sha256: ee3659035528d19145d50cf0107632bf647e7306c88b6a32f35f3bed63f6d728 + sha256: "9fe23381f3096e902f39e87e487648ff7f74925e86234353fa885bb9f6c98004" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.3.0" logger: dependency: "direct main" description: @@ -1059,10 +1059,10 @@ packages: dependency: transitive description: name: package_info_plus - sha256: a75164ade98cb7d24cfd0a13c6408927c6b217fa60dee5a7ff5c116a58f28918 + sha256: "894f37107424311bdae3e476552229476777b8752c5a2a2369c0cb9a2d5442ef" url: "https://pub.dev" source: hosted - version: "8.0.2" + version: "8.0.3" package_info_plus_platform_interface: dependency: transitive description: @@ -1099,10 +1099,10 @@ packages: dependency: transitive description: name: path_provider_android - sha256: "6f01f8e37ec30b07bc424b4deabac37cacb1bc7e2e515ad74486039918a37eb7" + sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a url: "https://pub.dev" source: hosted - version: "2.2.10" + version: "2.2.12" path_provider_foundation: dependency: transitive description: @@ -1243,26 +1243,26 @@ packages: dependency: "direct main" description: name: share_plus - sha256: "468c43f285207c84bcabf5737f33b914ceb8eb38398b91e5e3ad1698d1b72a52" + sha256: fec12c3c39f01e4df1ec6ad92b6e85503c5ca64ffd6e28d18c9ffe53fcc4cb11 url: "https://pub.dev" source: hosted - version: "10.0.2" + version: "10.0.3" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "6ababf341050edff57da8b6990f11f4e99eaba837865e2e6defe16d039619db5" + sha256: c57c0bbfec7142e3a0f55633be504b796af72e60e3c791b44d5a017b985f7a48 url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.0.1" sign_in_with_apple: dependency: "direct main" description: name: sign_in_with_apple - sha256: "3c9dc9dcd5c42a17c6d4b912556198e8bd8e731ab67ac30f4a655974f95e7260" + sha256: "602f1374c9c4c33889c969b53ebf7cc8417c22cc7e25ea771581330173bc6603" url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "6.1.3" sign_in_with_apple_platform_interface: dependency: transitive description: @@ -1312,18 +1312,42 @@ packages: dependency: transitive description: name: sqflite - sha256: ff5a2436ef8ebdfda748fbfe957f9981524cb5ff11e7bafa8c42771840e8a788 + sha256: "79a297dc3cc137e758c6a4baf83342b039e5a6d2436fcdf3f96a00adaaf2ad62" url: "https://pub.dev" source: hosted - version: "2.3.3+2" + version: "2.4.0" + sqflite_android: + dependency: transitive + description: + name: sqflite_android + sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3" + url: "https://pub.dev" + source: hosted + version: "2.4.0" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "2d8e607db72e9cb7748c9c6e739e2c9618320a5517de693d5a24609c4671b1a4" + sha256: "4468b24876d673418a7b7147e5a08a715b4998a7ae69227acafaab762e0e5490" + url: "https://pub.dev" + source: hosted + version: "2.5.4+5" + sqflite_darwin: + dependency: transitive + description: + name: sqflite_darwin + sha256: "769733dddf94622d5541c73e4ddc6aa7b252d865285914b6fcd54a63c4b4f027" + url: "https://pub.dev" + source: hosted + version: "2.4.1-1" + sqflite_platform_interface: + dependency: transitive + description: + name: sqflite_platform_interface + sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" url: "https://pub.dev" source: hosted - version: "2.5.4+4" + version: "2.4.0" stack_trace: dependency: transitive description: @@ -1448,18 +1472,18 @@ packages: dependency: "direct main" description: name: url_launcher - sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" + sha256: "9d06212b1362abc2f0f0d78e6f09f726608c74e3b9462e8368bb03314aa8d603" url: "https://pub.dev" source: hosted - version: "6.3.0" + version: "6.3.1" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: e35a698ac302dd68e41f73250bd9517fe3ab5fa4f18fe4647a0872db61bacbab + sha256: "8fc3bae0b68c02c47c5c86fa8bfa74471d42687b0eded01b78de87872db745e2" url: "https://pub.dev" source: hosted - version: "6.3.10" + version: "6.3.12" url_launcher_ios: dependency: transitive description: @@ -1552,34 +1576,34 @@ packages: dependency: "direct main" description: name: video_player - sha256: e30df0d226c4ef82e2c150ebf6834b3522cf3f654d8e2f9419d376cdc071425d + sha256: "4a8c3492d734f7c39c2588a3206707a05ee80cef52e8c7f3b2078d430c84bc17" url: "https://pub.dev" source: hosted - version: "2.9.1" + version: "2.9.2" video_player_android: dependency: transitive description: name: video_player_android - sha256: "45d21bbba3d10b7182aa08ade5d4c68ed3367016d40f29732bb04a799b26842d" + sha256: "340b29bc38b2c341ed3afa08148f3d9f351220403cdd2b3a9eb38b71a4be1a9d" url: "https://pub.dev" source: hosted - version: "2.7.5" + version: "2.7.12" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: d1e9a824f2b324000dc8fb2dcb2a3285b6c1c7c487521c63306cc5b394f68a7c + sha256: cd5ab8a8bc0eab65ab0cea40304097edc46da574c8c1ecdee96f28cd8ef3792f url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "2.6.2" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: "236454725fafcacf98f0f39af0d7c7ab2ce84762e3b63f2cbb3ef9a7e0550bc6" + sha256: "229d7642ccd9f3dc4aba169609dd6b5f3f443bb4cc15b82f7785fcada5af9bbb" url: "https://pub.dev" source: hosted - version: "6.2.2" + version: "6.2.3" video_player_web: dependency: transitive description: @@ -1640,10 +1664,10 @@ packages: dependency: transitive description: name: webview_flutter_android - sha256: "6e64fcb1c19d92024da8f33503aaeeda35825d77142c01d0ea2aa32edc79fdc8" + sha256: "47a8da40d02befda5b151a26dba71f47df471cddd91dfdb7802d0a87c5442558" url: "https://pub.dev" source: hosted - version: "3.16.7" + version: "3.16.9" webview_flutter_platform_interface: dependency: transitive description: @@ -1656,10 +1680,10 @@ packages: dependency: transitive description: name: webview_flutter_wkwebview - sha256: "1942a12224ab31e9508cf00c0c6347b931b023b8a4f0811e5dec3b06f94f117d" + sha256: d4034901d96357beb1b6717ebf7d583c88e40cfc6eb85fe76dd1bf0979a9f251 url: "https://pub.dev" source: hosted - version: "3.15.0" + version: "3.16.0" webviewtube: dependency: "direct main" description: @@ -1672,18 +1696,18 @@ packages: dependency: transitive description: name: win32 - sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" + sha256: e5c39a90447e7c81cfec14b041cdbd0d0916bd9ebbc7fe02ab69568be703b9bd url: "https://pub.dev" source: hosted - version: "5.5.4" + version: "5.6.0" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.1.0" xml: dependency: transitive description: From 64629a3534f0078e881f8f348cd3afdb78283d5b Mon Sep 17 00:00:00 2001 From: Pieryvdl Date: Thu, 17 Oct 2024 14:13:43 +0200 Subject: [PATCH 04/22] added multiple api keys to code and fixed username error via delay on profilename function --- lib/main.dart | 20 +++++++++++- lib/services/profile_S/profile_service.dart | 36 +++++++++++++-------- lib/view/pages/badges/badge_page.dart | 2 +- 3 files changed, 43 insertions(+), 15 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 8ad9d296..471bb69f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,7 @@ // ignore_for_file: prefer_const_constructors +import 'dart:math'; + import 'package:flame/flame.dart'; import 'package:flutter/material.dart'; import 'package:firebase_core/firebase_core.dart'; @@ -32,7 +34,7 @@ void main() async { WidgetsFlutterBinding.ensureInitialized(); await dotenv.load(); - globals.apiKey = dotenv.env['RAWG_API_KEY']; + _loadRandomApiKey(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); @@ -93,6 +95,22 @@ void main() async { ChangeNotifierProvider.value(value: themeProvider, child: const MyApp())); } +void _loadRandomApiKey() { + final apiKeys = [ + dotenv.env['RAWG_API_KEY'], + dotenv.env['RAWG_API_KEY2'], + dotenv.env['RAWG_API_KEY3'], + dotenv.env['RAWG_API_KEY4'], + dotenv.env['RAWG_API_KEY5'], + ]; + + final random = Random(DateTime.now().millisecondsSinceEpoch); + final selectedApiKey = apiKeys[random.nextInt(apiKeys.length)]; + + globals.apiKey = selectedApiKey; + print('Selected API key: $selectedApiKey'); +} + class MyApp extends StatelessWidget { // ignore: use_super_parameters const MyApp({Key? key}) : super(key: key); diff --git a/lib/services/profile_S/profile_service.dart b/lib/services/profile_S/profile_service.dart index abb37f77..8a9ae98d 100644 --- a/lib/services/profile_S/profile_service.dart +++ b/lib/services/profile_S/profile_service.dart @@ -101,21 +101,31 @@ class ProfileService { Future getProfileName(String userId) async { FirebaseFirestore db = FirebaseFirestore.instance; + const int maxRetries = 5; + const Duration retryDelay = Duration(milliseconds: 500); - DocumentSnapshot profileSnapshot = await db - .collection("profile_data") - .doc(userId) - .get(); //get the document - Map data = - profileSnapshot.data() as Map; //map the overall data - Map userInfo = - data['username'] as Map; //map the username data - // Return profile name if exists otherwise give an empty string - if (profileSnapshot.exists) { - return userInfo['profile_name']; - } else { - return ''; + for (int attempt = 0; attempt < maxRetries; attempt++) { + try { + DocumentSnapshot profileSnapshot = await db + .collection("profile_data") + .doc(userId) + .get(); //get the document + Map data = profileSnapshot.data() + as Map; //map the overall data + Map userInfo = + data['username'] as Map; //map the username data + // Return profile name if exists otherwise give an empty string + if (profileSnapshot.exists) { + return userInfo['profile_name']; + } + } catch (e) { + //print('Attempt $attempt failed: $e'); + } + // Wait before retrying + await Future.delayed(retryDelay); } + //return empty string if the profile name is not found + return ''; } Future setCurrentlyPlaying(String gameId) async { diff --git a/lib/view/pages/badges/badge_page.dart b/lib/view/pages/badges/badge_page.dart index 50301213..d621aa89 100644 --- a/lib/view/pages/badges/badge_page.dart +++ b/lib/view/pages/badges/badge_page.dart @@ -104,7 +104,7 @@ class _BadgePageState extends State { } else if (snapshot.hasError) { return Text('Error: ${snapshot.error}'); } else if (!snapshot.hasData || snapshot.data!.isEmpty) { - return const Text('No users with the unlocked badge'); + return const Text('No connections with the unlocked badge'); } else { List profilePictures = snapshot.data!; From 727116a9beac77bb65212f061f686ba48f9716b5 Mon Sep 17 00:00:00 2001 From: Pieryvdl Date: Thu, 17 Oct 2024 14:29:01 +0200 Subject: [PATCH 05/22] updated workflow code with rawg keys --- .github/workflows/build.yml | 5 +++++ .github/workflows/flutter.yml | 6 ++++++ lib/main.dart | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0577280f..f81844ed 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -45,6 +45,11 @@ jobs: echo "DEFAULT_IMAGE_URL=${{ secrets.DEFAULT_IMAGE_URL }}" >> .env echo "DEFAULT_BANNER_URL=${{ secrets.DEFAULT_BANNER_URL }}" >> .env echo "RAWG_API_KEY=${{ secrets.RAWG_API_KEY }}" >> .env + echo "RAWG_API_KEY2=${{ secrets.RAWG_API_KEY2 }}" >> .env + echo "RAWG_API_KEY3=${{ secrets.RAWG_API_KEY3 }}" >> .env + echo "RAWG_API_KEY4=${{ secrets.RAWG_API_KEY4 }}" >> .env + echo "RAWG_API_KEY5=${{ secrets.RAWG_API_KEY5 }}" >> .env + echo "RAWG_API_KEY6=${{ secrets.RAWG_API_KEY6 }}" >> .env shell: bash # Step 5: Create local.properties file diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 2f96bbdc..2d1c7428 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -41,6 +41,12 @@ jobs: echo "IOS_BUNDLE_ID=${{ secrets.IOS_BUNDLE_ID }}" >> .env echo "DEFAULT_IMAGE_URL=${{ secrets.DEFAULT_IMAGE_URL }}" >> .env echo "DEFAULT_BANNER_URL=${{ secrets.DEFAULT_BANNER_URL }}" >> .env + echo "RAWG_API_KEY=${{ secrets.RAWG_API_KEY }}" >> .env + echo "RAWG_API_KEY2=${{ secrets.RAWG_API_KEY2 }}" >> .env + echo "RAWG_API_KEY3=${{ secrets.RAWG_API_KEY3 }}" >> .env + echo "RAWG_API_KEY4=${{ secrets.RAWG_API_KEY4 }}" >> .env + echo "RAWG_API_KEY5=${{ secrets.RAWG_API_KEY5 }}" >> .env + echo "RAWG_API_KEY6=${{ secrets.RAWG_API_KEY6 }}" >> .env shell: bash # Step 4: Install all the dependencies diff --git a/lib/main.dart b/lib/main.dart index 471bb69f..423f648d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -102,13 +102,13 @@ void _loadRandomApiKey() { dotenv.env['RAWG_API_KEY3'], dotenv.env['RAWG_API_KEY4'], dotenv.env['RAWG_API_KEY5'], + dotenv.env['RAWG_API_KEY6'], ]; final random = Random(DateTime.now().millisecondsSinceEpoch); final selectedApiKey = apiKeys[random.nextInt(apiKeys.length)]; globals.apiKey = selectedApiKey; - print('Selected API key: $selectedApiKey'); } class MyApp extends StatelessWidget { From 00dda877d83c6478d40086e97c3184a253616fe9 Mon Sep 17 00:00:00 2001 From: Pieryvdl Date: Thu, 17 Oct 2024 14:57:32 +0200 Subject: [PATCH 06/22] updated readme --- README.md | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 1c728b07..604dccbc 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,27 @@ Up until now, gamers never really had a platform for themselves. GameOnConnect solves this problem! Gamers will now be able to connect with other gamers and will be able to share their gaming adventures with their GameOnConnect friends.

-**Link to Demo 1 video: [here](https://drive.google.com/file/d/1whQs6Kx2UuDGEKiUvoNlYNBY0Hbh9hmQ/view?usp=sharing)**
-**Link to Demo 2 video: [here](https://drive.google.com/file/d/1JRtQugU-ON1kP8CeSCID6KgyyPMjlJUA/view?usp=sharing)**
-**Link to Demo 3 video: [here](https://drive.google.com/file/d/1-KsOKCFhXqeEjshtNliyp3Kam7eaeQtH/view?usp=sharing)**
-**Link to Demo 4 video: [here](https://drive.google.com/file/d/1ZP6sayu-9IS_WDN0ru2rhSn9RI-h-QIj/view?usp=sharing)**

-# Documentation Links: # -**[SRS Documents](https://github.com/COS301-SE-2024/GameOnConnect/wiki)**
-**[Github project board](https://github.com/orgs/COS301-SE-2024/projects/54)**
-**[User Manual](https://github.com/COS301-SE-2024/GameOnConnect/wiki/User-Manual)**
-**[Technical Installation Manual](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Technical-Installation-Manual)**
-**[Testing Policy](https://docs.google.com/document/d/10SZXMNlQi8xhokbqxjlvTRlBppCDD6TswzttYGKr07E)**
-**[Coding Standards](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Coding-Standards)** +# Demo Videos +| Demo | Link | +|------|------| +| Demo 1 | [Watch here](https://drive.google.com/file/d/1whQs6Kx2UuDGEKiUvoNlYNBY0Hbh9hmQ/view?usp=sharing) | +| Demo 2 | [Watch here](https://drive.google.com/file/d/1JRtQugU-ON1kP8CeSCID6KgyyPMjlJUA/view?usp=sharing) | +| Demo 3 | [Watch here](https://drive.google.com/file/d/1-KsOKCFhXqeEjshtNliyp3Kam7eaeQtH/view?usp=sharing) | +| Demo 4 | [Watch here](https://drive.google.com/file/d/1ZP6sayu-9IS_WDN0ru2rhSn9RI-h-QIj/view?usp=sharing) | +

+ +# Documentation Links + +| Document | Description | Link | +|----------|-------------|------| +| SRS Documents | Software Requirements Specification | [View here](https://github.com/COS301-SE-2024/GameOnConnect/wiki) | +| Github Project Board | Project management and tracking | [View here](https://github.com/orgs/COS301-SE-2024/projects/54) | +| User Manual | Guide for users on how to use the application | [View here](https://github.com/COS301-SE-2024/GameOnConnect/wiki/User-Manual) | +| Technical Installation Manual | Instructions for setting up the application | [View here](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Technical-Installation-Manual) | +| Testing Policy | Policies and procedures for testing | [View here](https://docs.google.com/document/d/10SZXMNlQi8xhokbqxjlvTRlBppCDD6TswzttYGKr07E) | +| Coding Standards | Guidelines for coding practices | [View here](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Coding-Standards) |
+ # 🎮Badges: # [![Issue Tracking](https://img.shields.io/badge/Issue_Tracking-GitHub_Issues-blue)](https://github.com/COS301-SE-2024/GameOnConnect/issues) [![issues - GameOnConnect](https://img.shields.io/github/issues/COS301-SE-2024/GameOnConnect)](https://github.com/COS301-SE-2024/GameOnConnect/issues) @@ -25,10 +34,6 @@ Up until now, gamers never really had a platform for themselves. GameOnConnect s ![GitHub pull requests](https://img.shields.io/github/languages/count/COS301-SE-2024/GameOnConnect) - - - - # 🎮Team members description #
Franco Dreyer

From 8aed20a3eb51fe2092eb7141d80a909701d3a7f7 Mon Sep 17 00:00:00 2001 From: Pieryvdl Date: Thu, 17 Oct 2024 19:27:24 +0200 Subject: [PATCH 07/22] updated wiki again --- README.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 604dccbc..1c4f7d38 100644 --- a/README.md +++ b/README.md @@ -2,25 +2,25 @@ Up until now, gamers never really had a platform for themselves. GameOnConnect solves this problem! Gamers will now be able to connect with other gamers and will be able to share their gaming adventures with their GameOnConnect friends.

-# Demo Videos -| Demo | Link | -|------|------| -| Demo 1 | [Watch here](https://drive.google.com/file/d/1whQs6Kx2UuDGEKiUvoNlYNBY0Hbh9hmQ/view?usp=sharing) | -| Demo 2 | [Watch here](https://drive.google.com/file/d/1JRtQugU-ON1kP8CeSCID6KgyyPMjlJUA/view?usp=sharing) | -| Demo 3 | [Watch here](https://drive.google.com/file/d/1-KsOKCFhXqeEjshtNliyp3Kam7eaeQtH/view?usp=sharing) | -| Demo 4 | [Watch here](https://drive.google.com/file/d/1ZP6sayu-9IS_WDN0ru2rhSn9RI-h-QIj/view?usp=sharing) | -

+# Demos +| Demo | Demo Slides | Demo Video | +|------|--------|------| +| Demo 1 | [Demo 1](https://www.canva.com/design/DAGGtptGMhc/opvx0fEJTxBaW690gcEeLw/view?utm_content=DAGGtptGMhc&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Demo 1](https://drive.google.com/file/d/1whQs6Kx2UuDGEKiUvoNlYNBY0Hbh9hmQ/view?usp=sharing) | +| Demo 2 | [Demo 2](https://www.canva.com/design/DAGIgpN2HEM/KrfXoBmqN84AEYWFxiCoJw/view?utm_content=DAGIgpN2HEM&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Demo 2](https://drive.google.com/file/d/1JRtQugU-ON1kP8CeSCID6KgyyPMjlJUA/view?usp=sharing) | +| Demo 3 | [Demo 3](https://www.canva.com/design/DAGM_5j1XcY/lJ9VW1D5_X13_dlZZb9DTw/view?utm_content=DAGM_5j1XcY&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Demo 3](https://drive.google.com/file/d/1-KsOKCFhXqeEjshtNliyp3Kam7eaeQtH/view?usp=sharing) | +| Demo 4 | [Demo 4](https://www.canva.com/design/DAGR2ZqN7x8/N92XF6FsotQ-uuZIfdpS2Q/view?utm_content=DAGR2ZqN7x8&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Demo 4](https://drive.google.com/file/d/1ZP6sayu-9IS_WDN0ru2rhSn9RI-h-QIj/view?usp=sharing) | +
# Documentation Links -| Document | Description | Link | -|----------|-------------|------| -| SRS Documents | Software Requirements Specification | [View here](https://github.com/COS301-SE-2024/GameOnConnect/wiki) | -| Github Project Board | Project management and tracking | [View here](https://github.com/orgs/COS301-SE-2024/projects/54) | -| User Manual | Guide for users on how to use the application | [View here](https://github.com/COS301-SE-2024/GameOnConnect/wiki/User-Manual) | -| Technical Installation Manual | Instructions for setting up the application | [View here](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Technical-Installation-Manual) | -| Testing Policy | Policies and procedures for testing | [View here](https://docs.google.com/document/d/10SZXMNlQi8xhokbqxjlvTRlBppCDD6TswzttYGKr07E) | -| Coding Standards | Guidelines for coding practices | [View here](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Coding-Standards) | +| Document | Description | +|----------|-------------| +| [SRS Documents](https://github.com/COS301-SE-2024/GameOnConnect/wiki) | Software Requirements Specification | +| [Github Project Board](https://github.com/orgs/COS301-SE-2024/projects/54) | Project management and tracking | +| [User Manual](https://github.com/COS301-SE-2024/GameOnConnect/wiki/User-Manual) | Guide for users on how to use the application | +| [Technical Installation Manual](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Technical-Installation-Manual) | Instructions for setting up the application | +| [Testing Policy](https://docs.google.com/document/d/10SZXMNlQi8xhokbqxjlvTRlBppCDD6TswzttYGKr07E) | Policies and procedures for testing | +| [Coding Standards](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Coding-Standards) | Guidelines for coding practices |
# 🎮Badges: # From 5280eae55446fb073c5d05ea984a75560c9ec93b Mon Sep 17 00:00:00 2001 From: Pieryvdl Date: Thu, 17 Oct 2024 20:27:09 +0200 Subject: [PATCH 08/22] updated readme --- README.md | 40 ++++++++++++-------- assets/default_images/Frame 158.png | Bin 0 -> 82870 bytes assets/default_images/Logo_dark.png | Bin 0 -> 2441 bytes assets/default_images/byte_squad_logo 2.png | Bin 0 -> 69261 bytes 4 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 assets/default_images/Frame 158.png create mode 100644 assets/default_images/Logo_dark.png create mode 100644 assets/default_images/byte_squad_logo 2.png diff --git a/README.md b/README.md index 1c4f7d38..cf335109 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,33 @@ -# Byte Squad - GameOnConnect - A social media platform for gamers! +
+ GameOnConnect Logo +
+

+ +
+ + + +# GameOnConnect - A social media platform for gamers! Up until now, gamers never really had a platform for themselves. GameOnConnect solves this problem! Gamers will now be able to connect with other gamers and will be able to share their gaming adventures with their GameOnConnect friends.

+# 🎮Badges: # +[![Issue Tracking](https://img.shields.io/badge/Issue_Tracking-GitHub_Issues-blue)](https://github.com/COS301-SE-2024/GameOnConnect/issues) +[![issues - GameOnConnect](https://img.shields.io/github/issues/COS301-SE-2024/GameOnConnect)](https://github.com/COS301-SE-2024/GameOnConnect/issues) +![issues - GameOnConnect](https://img.shields.io/github/issues-closed/COS301-SE-2024/GameOnConnect?color=brightgreen) +[![Flutter](https://github.com/COS301-SE-2024/GameOnConnect/actions/workflows/flutter.yml/badge.svg?branch=main)](https://github.com/COS301-SE-2024/GameOnConnect/actions/workflows/flutter.yml) +![GitHub pull requests](https://img.shields.io/github/repo-size/COS301-SE-2024/GameOnConnect) +![GitHub pull requests](https://img.shields.io/github/last-commit/COS301-SE-2024/GameOnConnect) +![GitHub pull requests](https://img.shields.io/github/issues-pr/COS301-SE-2024/GameOnConnect) +![GitHub pull requests](https://img.shields.io/github/languages/count/COS301-SE-2024/GameOnConnect) + # Demos | Demo | Demo Slides | Demo Video | |------|--------|------| -| Demo 1 | [Demo 1](https://www.canva.com/design/DAGGtptGMhc/opvx0fEJTxBaW690gcEeLw/view?utm_content=DAGGtptGMhc&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Demo 1](https://drive.google.com/file/d/1whQs6Kx2UuDGEKiUvoNlYNBY0Hbh9hmQ/view?usp=sharing) | -| Demo 2 | [Demo 2](https://www.canva.com/design/DAGIgpN2HEM/KrfXoBmqN84AEYWFxiCoJw/view?utm_content=DAGIgpN2HEM&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Demo 2](https://drive.google.com/file/d/1JRtQugU-ON1kP8CeSCID6KgyyPMjlJUA/view?usp=sharing) | -| Demo 3 | [Demo 3](https://www.canva.com/design/DAGM_5j1XcY/lJ9VW1D5_X13_dlZZb9DTw/view?utm_content=DAGM_5j1XcY&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Demo 3](https://drive.google.com/file/d/1-KsOKCFhXqeEjshtNliyp3Kam7eaeQtH/view?usp=sharing) | -| Demo 4 | [Demo 4](https://www.canva.com/design/DAGR2ZqN7x8/N92XF6FsotQ-uuZIfdpS2Q/view?utm_content=DAGR2ZqN7x8&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Demo 4](https://drive.google.com/file/d/1ZP6sayu-9IS_WDN0ru2rhSn9RI-h-QIj/view?usp=sharing) | +| Demo 1 | [Slides 1](https://www.canva.com/design/DAGGtptGMhc/opvx0fEJTxBaW690gcEeLw/view?utm_content=DAGGtptGMhc&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Video 1](https://drive.google.com/file/d/1whQs6Kx2UuDGEKiUvoNlYNBY0Hbh9hmQ/view?usp=sharing) | +| Demo 2 | [Slides 2](https://www.canva.com/design/DAGIgpN2HEM/KrfXoBmqN84AEYWFxiCoJw/view?utm_content=DAGIgpN2HEM&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Video 2](https://drive.google.com/file/d/1JRtQugU-ON1kP8CeSCID6KgyyPMjlJUA/view?usp=sharing) | +| Demo 3 | [Slides 3](https://www.canva.com/design/DAGM_5j1XcY/lJ9VW1D5_X13_dlZZb9DTw/view?utm_content=DAGM_5j1XcY&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Video 3](https://drive.google.com/file/d/1-KsOKCFhXqeEjshtNliyp3Kam7eaeQtH/view?usp=sharing) | +| Demo 4 | [Slides 4](https://www.canva.com/design/DAGR2ZqN7x8/N92XF6FsotQ-uuZIfdpS2Q/view?utm_content=DAGR2ZqN7x8&utm_campaign=designshare&utm_medium=link&utm_source=editor) | [Video 4](https://drive.google.com/file/d/1ZP6sayu-9IS_WDN0ru2rhSn9RI-h-QIj/view?usp=sharing) |
# Documentation Links @@ -23,17 +42,6 @@ Up until now, gamers never really had a platform for themselves. GameOnConnect s | [Coding Standards](https://github.com/COS301-SE-2024/GameOnConnect/wiki/Coding-Standards) | Guidelines for coding practices |
-# 🎮Badges: # -[![Issue Tracking](https://img.shields.io/badge/Issue_Tracking-GitHub_Issues-blue)](https://github.com/COS301-SE-2024/GameOnConnect/issues) -[![issues - GameOnConnect](https://img.shields.io/github/issues/COS301-SE-2024/GameOnConnect)](https://github.com/COS301-SE-2024/GameOnConnect/issues) -![issues - GameOnConnect](https://img.shields.io/github/issues-closed/COS301-SE-2024/GameOnConnect?color=brightgreen) -[![Flutter](https://github.com/COS301-SE-2024/GameOnConnect/actions/workflows/flutter.yml/badge.svg?branch=main)](https://github.com/COS301-SE-2024/GameOnConnect/actions/workflows/flutter.yml) -![GitHub pull requests](https://img.shields.io/github/repo-size/COS301-SE-2024/GameOnConnect) -![GitHub pull requests](https://img.shields.io/github/last-commit/COS301-SE-2024/GameOnConnect) -![GitHub pull requests](https://img.shields.io/github/issues-pr/COS301-SE-2024/GameOnConnect) -![GitHub pull requests](https://img.shields.io/github/languages/count/COS301-SE-2024/GameOnConnect) - - # 🎮Team members description #
Franco Dreyer

diff --git a/assets/default_images/Frame 158.png b/assets/default_images/Frame 158.png new file mode 100644 index 0000000000000000000000000000000000000000..97815a7dfebdb76038a7149ea84efcf540fde06a GIT binary patch literal 82870 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