diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 4a2ba2ec9..6c5d78f65 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,15 +1,24 @@ - - - + + + - + - - + + @@ -19,4 +28,4 @@ - + \ No newline at end of file diff --git a/assets/data/meta.json b/assets/data/meta.json index d45739317..f468df78d 100644 --- a/assets/data/meta.json +++ b/assets/data/meta.json @@ -1,5 +1,5 @@ { - "GameVersion": "4.47", - "GameBuildNumber": 12971329, - "GeneratedDate": "2024-01-02" + "GameVersion": "4.48", + "GameBuildNumber": 13084894, + "GeneratedDate": "2024-02-05" } \ No newline at end of file diff --git a/assets/data/patronsBackup.json b/assets/data/patronsBackup.json index 6577236e0..fb82ae78f 100644 --- a/assets/data/patronsBackup.json +++ b/assets/data/patronsBackup.json @@ -11,24 +11,30 @@ "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/ED9C91D2FE5AAD1EE73BC335262D137F.png", "url": "https://assistantapps.com" }, - { - "name": "Miked", - "imageUrl": "https://cdn-usr.assistantapps.com/patreon/F1B99D864863A4B973E1CC17FEBBCB22.png", - "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/F1B99D864863A4B973E1CC17FEBBCB22.png", - "url": "https://assistantapps.com" - }, { "name": "Robert J. Grasmuck", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/7BC69DFF9073C4095CDFF66E3FF59F73.png", "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/7BC69DFF9073C4095CDFF66E3FF59F73.png", "url": "https://assistantapps.com" }, + { + "name": "Miked", + "imageUrl": "https://cdn-usr.assistantapps.com/patreon/F1B99D864863A4B973E1CC17FEBBCB22.png", + "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/F1B99D864863A4B973E1CC17FEBBCB22.png", + "url": "https://assistantapps.com" + }, { "name": "Zig Justice", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/678B05CAC113685E13841EDA3A55EC5D.png", "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/678B05CAC113685E13841EDA3A55EC5D.png", "url": "https://assistantapps.com" }, + { + "name": "evanjpw", + "imageUrl": "https://cdn-usr.assistantapps.com/patreon/DD21247329CC4E7DCE5B2F8F58C1D8CE.png", + "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/DD21247329CC4E7DCE5B2F8F58C1D8CE.png", + "url": "https://assistantapps.com" + }, { "name": "cyberpunk2350", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/2710524A9D208523926238EA123749E9.png", @@ -59,18 +65,6 @@ "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/9D164DB8AB45EC2616D52CA92EEE2CBF.png", "url": "https://assistantapps.com" }, - { - "name": "evanjpw", - "imageUrl": "https://cdn-usr.assistantapps.com/patreon/DD21247329CC4E7DCE5B2F8F58C1D8CE.png", - "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/DD21247329CC4E7DCE5B2F8F58C1D8CE.png", - "url": "https://assistantapps.com" - }, - { - "name": "christopher perkins", - "imageUrl": "https://cdn-usr.assistantapps.com/patreon/FA9FE210914BA3B97BA99F05F233924D.png", - "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/FA9FE210914BA3B97BA99F05F233924D.png", - "url": "https://assistantapps.com" - }, { "name": "chrisagiddings", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/AD2DB07A3A0A976AAC85AA5B0FF4E898.png", @@ -84,9 +78,9 @@ "url": "https://assistantapps.com" }, { - "name": "nyxsis", - "imageUrl": "https://cdn-usr.assistantapps.com/patreon/D5D8C41865D8A28075F8BFD30E93BFA2.png", - "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/D5D8C41865D8A28075F8BFD30E93BFA2.png", + "name": "christopher perkins", + "imageUrl": "https://cdn-usr.assistantapps.com/patreon/FA9FE210914BA3B97BA99F05F233924D.png", + "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/FA9FE210914BA3B97BA99F05F233924D.png", "url": "https://assistantapps.com" }, { @@ -95,6 +89,12 @@ "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/D994924AA5EF51C5BDFBFBDAC12A04FF.png", "url": "https://assistantapps.com" }, + { + "name": "nyxsis", + "imageUrl": "https://cdn-usr.assistantapps.com/patreon/D5D8C41865D8A28075F8BFD30E93BFA2.png", + "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/D5D8C41865D8A28075F8BFD30E93BFA2.png", + "url": "https://assistantapps.com" + }, { "name": "Alistair", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/48CFDD47C31B9CA61068EAF6762E9932.png", @@ -149,12 +149,6 @@ "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/BCD210FF084C2EA92DA567C0E2D3C08C.png", "url": "https://assistantapps.com" }, - { - "name": "hedge", - "imageUrl": "https://cdn-usr.assistantapps.com/patreon/AAA55602849BBC341939275ED809BC4A.png", - "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/AAA55602849BBC341939275ED809BC4A.png", - "url": "https://assistantapps.com" - }, { "name": "Ryan Plucker", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/7E4A8CDEB3F3702F32B1DCCD7BD11A1E.png", @@ -192,9 +186,9 @@ "url": "https://assistantapps.com" }, { - "name": "Bob Hicks", - "imageUrl": "https://cdn-usr.assistantapps.com/patreon/DD1C7D1D53DF36A2EE6BEE497DFA5F59.png", - "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/DD1C7D1D53DF36A2EE6BEE497DFA5F59.png", + "name": "HunterFlakeDigitalContent", + "imageUrl": "https://cdn-usr.assistantapps.com/patreon/9562503CD06F0D1C493E08873DAE7F00.png", + "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/9562503CD06F0D1C493E08873DAE7F00.png", "url": "https://assistantapps.com" }, { @@ -203,6 +197,12 @@ "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/F747B6016A3E3C3F8F1A60CF3494CA58.png", "url": "https://assistantapps.com" }, + { + "name": "MEOGI", + "imageUrl": "https://cdn-usr.assistantapps.com/patreon/931F9C05676AC1EAA21F3B68FEE879F9.png", + "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/931F9C05676AC1EAA21F3B68FEE879F9.png", + "url": "https://assistantapps.com" + }, { "name": "Palis Airuta", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/48F55AF63BF651EA9264F22310E716C5.png", @@ -227,18 +227,6 @@ "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/9CF50630ADBF46DD1F8C3BC5874B518F.png", "url": "https://assistantapps.com" }, - { - "name": "Arcadie", - "imageUrl": "https://cdn-usr.assistantapps.com/patreon/7B48FDA94614713E7E91CB53CCAF1552.png", - "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/7B48FDA94614713E7E91CB53CCAF1552.png", - "url": "https://assistantapps.com" - }, - { - "name": "Galactic Monkeh", - "imageUrl": "https://cdn-usr.assistantapps.com/patreon/4422CEA6F012C8F338994799459CF3A8.png", - "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/4422CEA6F012C8F338994799459CF3A8.png", - "url": "https://assistantapps.com" - }, { "name": "Jdia Plum", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/97A74E429C4BDDDE7FA1A82AF690CB64.png", @@ -257,6 +245,12 @@ "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/64547E8411DE881D1602DE08B4410E94.png", "url": "https://assistantapps.com" }, + { + "name": "Galactic Monkeh", + "imageUrl": "https://cdn-usr.assistantapps.com/patreon/4422CEA6F012C8F338994799459CF3A8.png", + "thumbnailUrl": "https://cdn-usr.assistantapps.com/patreon/4422CEA6F012C8F338994799459CF3A8.png", + "url": "https://assistantapps.com" + }, { "name": "Nick", "imageUrl": "https://cdn-usr.assistantapps.com/patreon/1290AD2AC8E1EB7EF8A40B17D0561DC3.png", diff --git a/assets/data/updates.json b/assets/data/updates.json index 7248f1868..bc6e8a8d7 100644 --- a/assets/data/updates.json +++ b/assets/data/updates.json @@ -1,4 +1,14 @@ [ + { + "guid": "68cc6afa-ffeb-4fcf-ad22-941460a68591", + "title": "Holiday 2023 Expeditions", + "icon": "update/expeditionsRevisited2023.png", + "gameVersion": "4.46", + "updateType": 2, + "releaseDate": "2023-12-08T00:00:00", + "postUrl": "https://www.nomanssky.com/2023/12/holiday-2023-expeditions/", + "itemIds": [] + }, { "guid": "30f117ed-cdd9-4781-a26d-b2460c9a43ae", "title": "Echoes", diff --git a/assets/guide/HowToCreateAutoDoor/firstPart.jpeg b/assets/guide/HowToCreateAutoDoor/firstPart.jpeg new file mode 100644 index 000000000..2522329b8 Binary files /dev/null and b/assets/guide/HowToCreateAutoDoor/firstPart.jpeg differ diff --git a/assets/guide/HowToCreateAutoDoor/guide.en.json b/assets/guide/HowToCreateAutoDoor/guide.en.json new file mode 100644 index 000000000..d7a7a0a57 --- /dev/null +++ b/assets/guide/HowToCreateAutoDoor/guide.en.json @@ -0,0 +1,69 @@ +{ + "guid": "f0ae51c5-9e29-a3d5-cb3f-a53c2bacb144", + "title": "How to Create an Automatic Door", + "shortTitle": "Automatic Door", + "showCreatedByUser": true, + "author": "Muhaddil", + "image": "guide.png", + "languageCode": "en", + "minutes": 10, + "date": "2024-01-13T22:01:09.776Z", + "tags": [ + "Echoes", + "Construction" + ], + "sections": [ + { + "heading": "Requirements", + "items": [ + { + "type": "text", + "content": "You need any kind of switch you wantand the most important part, the power inverter." + }, + { + "type": "image", + "image": "requirements.png" + } + ] + }, + { + "heading": "First part (easy)", + "items": [ + { + "type": "text", + "content": "Firstly we place the switch, in my case I'm using the proximity switch, but you can use other switches only thing that changes it's the switch position. " + }, + { + "type": "image", + "image": "firstPart.jpeg" + } + ] + }, + { + "heading": "Second Part", + "items": [ + { + "type": "image", + "image": "secondPart.jpg" + }, + { + "type": "text", + "content": "We put a power inverter anywhere we want. Then we connect a cable that has current to the input of the switch and to the input of the inverter (it is important that it is to the input that is replicated on the opposite side). Secondly, we connect the output of the switch to the input that is not replicated of the inverter, that is, to the one that is perpendicular to the one to which we have previously connected the live cable. Finally, we connect a cable to the free input of the inverter and connect it to the door.And we would have our door that opens automatically when we approach." + } + ] + }, + { + "heading": "Other examples", + "items": [ + { + "type": "text", + "content": "If you don't want to use the proximity switch you can always use other switches like the floor switch, here is an example of that.\nWe do the same as in the previous example but we connect it to the new switch, here is a scheme" + }, + { + "type": "image", + "image": "otherExample.jpg" + } + ] + } + ] +} \ No newline at end of file diff --git a/assets/guide/HowToCreateAutoDoor/guide.png b/assets/guide/HowToCreateAutoDoor/guide.png new file mode 100644 index 000000000..db6cd90bb Binary files /dev/null and b/assets/guide/HowToCreateAutoDoor/guide.png differ diff --git a/assets/guide/HowToCreateAutoDoor/otherExample.jpg b/assets/guide/HowToCreateAutoDoor/otherExample.jpg new file mode 100644 index 000000000..616147a55 Binary files /dev/null and b/assets/guide/HowToCreateAutoDoor/otherExample.jpg differ diff --git a/assets/guide/HowToCreateAutoDoor/requirements.png b/assets/guide/HowToCreateAutoDoor/requirements.png new file mode 100644 index 000000000..26321cdbf Binary files /dev/null and b/assets/guide/HowToCreateAutoDoor/requirements.png differ diff --git a/assets/guide/HowToCreateAutoDoor/secondPart.jpg b/assets/guide/HowToCreateAutoDoor/secondPart.jpg new file mode 100644 index 000000000..77bdbd07b Binary files /dev/null and b/assets/guide/HowToCreateAutoDoor/secondPart.jpg differ diff --git a/assets/images/update/expeditionsRevisited2023-icon.png b/assets/images/update/expeditionsRevisited2023-icon.png new file mode 100644 index 000000000..5eaa23ede Binary files /dev/null and b/assets/images/update/expeditionsRevisited2023-icon.png differ diff --git a/assets/images/update/expeditionsRevisited2023.png b/assets/images/update/expeditionsRevisited2023.png new file mode 100644 index 000000000..e0e95a799 Binary files /dev/null and b/assets/images/update/expeditionsRevisited2023.png differ diff --git a/assets/json/de/Guides.lang.json b/assets/json/de/Guides.lang.json index 0c489ff25..3ccb7bbed 100644 --- a/assets/json/de/Guides.lang.json +++ b/assets/json/de/Guides.lang.json @@ -86,5 +86,9 @@ { "folder": "TheLoreAndPlot", "file": "guide.en" + }, + { + "folder": "HowToCreateAutoDoor", + "file": "guide.en" } ] \ No newline at end of file diff --git a/assets/json/en/Guides.lang.json b/assets/json/en/Guides.lang.json index d8c485299..3b4141cfb 100644 --- a/assets/json/en/Guides.lang.json +++ b/assets/json/en/Guides.lang.json @@ -82,5 +82,9 @@ { "folder": "TheLoreAndPlot", "file": "guide.en" + }, + { + "folder": "HowToCreateAutoDoor", + "file": "guide.en" } ] \ No newline at end of file diff --git a/assets/json/es/Guides.lang.json b/assets/json/es/Guides.lang.json index 43107c77f..83f2d46e5 100644 --- a/assets/json/es/Guides.lang.json +++ b/assets/json/es/Guides.lang.json @@ -82,5 +82,9 @@ { "folder": "TheLoreAndPlot", "file": "guide.en" + }, + { + "folder": "HowToCreateAutoDoor", + "file": "guide.en" } ] \ No newline at end of file diff --git a/assets/json/fr/Guides.lang.json b/assets/json/fr/Guides.lang.json index 4e6794aaf..5de4a5202 100644 --- a/assets/json/fr/Guides.lang.json +++ b/assets/json/fr/Guides.lang.json @@ -82,5 +82,9 @@ { "folder": "TheLoreAndPlot", "file": "guide.en" + }, + { + "folder": "HowToCreateAutoDoor", + "file": "guide.en" } ] \ No newline at end of file diff --git a/assets/json/it/Guides.lang.json b/assets/json/it/Guides.lang.json index 954d32e7c..4ade8169b 100644 --- a/assets/json/it/Guides.lang.json +++ b/assets/json/it/Guides.lang.json @@ -74,5 +74,9 @@ { "folder": "TheLoreAndPlot", "file": "guide.en" + }, + { + "folder": "HowToCreateAutoDoor", + "file": "guide.en" } ] \ No newline at end of file diff --git a/assets/json/pt-br/Guides.lang.json b/assets/json/pt-br/Guides.lang.json index 0fa881784..221810d33 100644 --- a/assets/json/pt-br/Guides.lang.json +++ b/assets/json/pt-br/Guides.lang.json @@ -82,5 +82,9 @@ { "folder": "TheLoreAndPlot", "file": "guide.en" + }, + { + "folder": "HowToCreateAutoDoor", + "file": "guide.en" } ] \ No newline at end of file diff --git a/assets/lang/language.es.json b/assets/lang/language.es.json index 63887d8aa..b93865eb1 100644 --- a/assets/lang/language.es.json +++ b/assets/lang/language.es.json @@ -472,9 +472,9 @@ "tapAndHoldToDrag": "Mantén pulsado un objeto para arrastrarlo y cambiar el orden ", "copiedToClipboard": "Copiado al portapapeles", "ukrainian": "Ucraniano", - "showReduxExpeditions": "Show Redux Expeditions", - "optional": "Optional", - "dataFromNMSCD": "Data below supplied by the NMSCD", - "communityMissionProgressTracker": "Community Mission Progress Tracker", - "hashCode": "872D3747F0395AAB30E3125F42210284" + "showReduxExpeditions": "Mostrar las Expediciones Redux", + "optional": "Opcional", + "dataFromNMSCD": "Datos a continuación proporcionados por NMSCD", + "communityMissionProgressTracker": "Seguimiento del Progreso de la Misión Comunitaria", + "hashCode": "03EF18131FF50800832D3FA489622D92" } \ No newline at end of file diff --git a/assets/lang/language.fr.json b/assets/lang/language.fr.json index d8030f4d2..64349bf48 100644 --- a/assets/lang/language.fr.json +++ b/assets/lang/language.fr.json @@ -472,9 +472,9 @@ "tapAndHoldToDrag": "Touchez et tirez un objet pour changer l’ordre", "copiedToClipboard": "Copié dans le presse-papier", "ukrainian": "Ukrainien", - "showReduxExpeditions": "Show Redux Expeditions", - "optional": "Optional", - "dataFromNMSCD": "Data below supplied by the NMSCD", - "communityMissionProgressTracker": "Community Mission Progress Tracker", - "hashCode": "34141907A1878ECA344DC3B6A26C781B" + "showReduxExpeditions": "Afficher les expéditions Redux", + "optional": "Facultatif", + "dataFromNMSCD": "Données ci-dessous fournies par le NMSCD", + "communityMissionProgressTracker": "Suivi des progrès de la mission communautaire", + "hashCode": "BE1F686F362FBD510295B64553B1E594" } \ No newline at end of file diff --git a/assets/lang/language.nl.json b/assets/lang/language.nl.json index 89ab455ea..56547c2cd 100644 --- a/assets/lang/language.nl.json +++ b/assets/lang/language.nl.json @@ -336,23 +336,23 @@ "manufacturingFacilityRewards": "Beloningen voor productiefaciliteiten", "creditToYakuzaSuskeForCreatingHDImage": "Met dank aan Yakuza_Suske voor het maken van HD-versies van alle game-itempictogrammen", "learnNewWord": "Leer nieuwe woorden", - "factionStanding": "{0} standing {1}", - "blueprint": "Blueprint", - "viewPossibleRewards": "View {0} possible rewards", - "noRewards": "No rewards", - "changeChoice": "Change choice", - "unlockItemsUsingTheFactoryOverrideUnit": "Unlock the following items using the Factory Override Unit", - "assistantApps": "AssistantApps", - "displaySeasonalBackground": "Display Seasonal Background", - "japanese": "Japanese", - "enabled": "Enabled", + "factionStanding": "{0} staand {1}", + "blueprint": "Blauwdruk", + "viewPossibleRewards": "Bekijk {0} mogelijke beloningen", + "noRewards": "Geen beloningen", + "changeChoice": "Keuze wijzigen", + "unlockItemsUsingTheFactoryOverrideUnit": "Ontgrendel de volgende items met behulp van de Factory Override Unit", + "assistantApps": "AssistentApps", + "displaySeasonalBackground": "Seizoensgebonden achtergrond weergeven", + "japanese": "Japans", + "enabled": "Ingeschakeld", "percentage": "{0}%", "lightYear": "{0} ly", "meter": "{0} m", - "proceduralStats": "Stats (Min: {0}, Max: {1})", - "stats": "Stats", - "statAlwaysIncluded": "Always included", - "statPossible": "Possible", + "proceduralStats": "Statistieken (min: {0}, max: {1})", + "stats": "Statistieken", + "statAlwaysIncluded": "Altijd inbegrepen", + "statPossible": "Geen afbeeldingen", "translationPercentageComplete": "Translation per Language", "useTranslationTool": "Use Translation Tool", "norwegian": "Norwegian", @@ -474,7 +474,7 @@ "ukrainian": "Ukrainian", "showReduxExpeditions": "Show Redux Expeditions", "optional": "Optional", - "dataFromNMSCD": "Data below supplied by the NMSCD", + "dataFromNMSCD": "Onderstaande gegevens zijn verstrekt door de NMSCD", "communityMissionProgressTracker": "Community Mission Progress Tracker", - "hashCode": "09BC8E148AD69EEE0590EDB8DD5369CD" + "hashCode": "961F5E387573F30A76231D354F95A1BF" } \ No newline at end of file diff --git a/assets/lang/language.ru.json b/assets/lang/language.ru.json index 571b30829..3d7a59174 100644 --- a/assets/lang/language.ru.json +++ b/assets/lang/language.ru.json @@ -472,9 +472,9 @@ "tapAndHoldToDrag": "Нажмите и удерживайте для перемещения ", "copiedToClipboard": "Скопировано в буфер обмена", "ukrainian": "Українська ", - "showReduxExpeditions": "Show Redux Expeditions", - "optional": "Optional", - "dataFromNMSCD": "Data below supplied by the NMSCD", - "communityMissionProgressTracker": "Community Mission Progress Tracker", - "hashCode": "155C43F067D8821B06D4B104C4EC0370" + "showReduxExpeditions": "Русский", + "optional": "Необязательный", + "dataFromNMSCD": "Данные ниже предоставлены NMSCD.", + "communityMissionProgressTracker": "Отслеживание прогресса миссии сообщества", + "hashCode": "0B9E20975C355438029CA33E450C0C7B" } \ No newline at end of file diff --git a/installers/assistantNMS.iss b/installers/assistantNMS.iss index 303901c05..cc3af8b0e 100644 --- a/installers/assistantNMS.iss +++ b/installers/assistantNMS.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Assistant for No Man's Sky" -#define MyAppVersion "2.21.0" +#define MyAppVersion "2.22.0" #define MyAppPublisher "AssistantApps" #define MyAppURL "https://nmsassistant.com/" #define MyAppExeName "assistantnms_app.exe" diff --git a/lib/app.dart b/lib/app.dart index ee04ad567..9380e22c3 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -30,10 +30,6 @@ class _AssistantNMSState extends State { super.initState(); initDependencyInjection(widget.env); initReduxState(); - - if (kReleaseMode) { - // initFirebaseAdMob(); - } } Future initReduxState() async { diff --git a/lib/assistant_apps_settings.dart b/lib/assistant_apps_settings.dart index 9c2880604..ffba2fae2 100644 --- a/lib/assistant_apps_settings.dart +++ b/lib/assistant_apps_settings.dart @@ -1,3 +1,3 @@ const assistantAppsApiUrl = 'https://api.assistantapps.com'; const assistantAppsAppGuid = '589405b4-e40f-4cd9-b793-6bf37944ee09'; -const currentWhatIsNewGuid = '4a32332b-3831-4a68-93a2-f65ae33ec048'; +const currentWhatIsNewGuid = 'aff679cd-cc9a-4ed7-85e6-c1afc917e06e'; diff --git a/lib/components/tilePresenters/seasonal_expedition_tile_presenter.dart b/lib/components/tilePresenters/seasonal_expedition_tile_presenter.dart index f91989edb..e58e448b9 100644 --- a/lib/components/tilePresenters/seasonal_expedition_tile_presenter.dart +++ b/lib/components/tilePresenters/seasonal_expedition_tile_presenter.dart @@ -351,10 +351,14 @@ Widget rewardFromSeasonalExpeditionTilePresenter( String seasId, bool isCustom, ) { + String correctedSeasId = + seasId.replaceAll('seas-0', 'seas-').replaceAll('Redux', '-redux'); + return FlatCard( shadowColor: Colors.transparent, child: CachedFutureBuilder( - future: getSeasonalExpeditionRepo().getById(context, seasId, isCustom), + future: getSeasonalExpeditionRepo() + .getById(context, correctedSeasId, isCustom), whileLoading: () => getLoading().smallLoadingTile(context), whenDoneLoading: (ResultWithValue snapshot) { SeasonalExpeditionSeason item = snapshot.value; @@ -368,7 +372,7 @@ Widget rewardFromSeasonalExpeditionTilePresenter( onTap: () async => await getNavigation().navigateAsync( context, navigateTo: (_) => SeasonalExpeditionPhaseListPage( - seasId, + correctedSeasId, isCustomExp: isCustom, ), ), diff --git a/lib/constants/app_available_languages.dart b/lib/constants/app_available_languages.dart index 8baf1a8b1..872c97f74 100644 --- a/lib/constants/app_available_languages.dart +++ b/lib/constants/app_available_languages.dart @@ -3,17 +3,17 @@ import 'package:assistantapps_flutter_common/assistantapps_flutter_common.dart'; List supportedLanguageMaps = [ LocalizationMap(LocaleKey.english, 'en', 'gb', percentageComplete: 100), - LocalizationMap(LocaleKey.dutch, 'nl', 'nl', percentageComplete: 68), + LocalizationMap(LocaleKey.dutch, 'nl', 'nl', percentageComplete: 72), LocalizationMap(LocaleKey.german, 'de', 'de', percentageComplete: 100), - LocalizationMap(LocaleKey.french, 'fr', 'fr', percentageComplete: 99), + LocalizationMap(LocaleKey.french, 'fr', 'fr', percentageComplete: 100), LocalizationMap(LocaleKey.italian, 'it', 'it', percentageComplete: 99), - LocalizationMap(LocaleKey.russian, 'ru', 'ru', percentageComplete: 99), + LocalizationMap(LocaleKey.russian, 'ru', 'ru', percentageComplete: 100), LocalizationMap(LocaleKey.polish, 'pl', 'pl', percentageComplete: 99), LocalizationMap(LocaleKey.brazilianPortuguese, 'pt-br', 'br', percentageComplete: 99), LocalizationMap(LocaleKey.portuguese, 'pt', 'pt', percentageComplete: 36), LocalizationMap(LocaleKey.norwegian, 'no', 'no', percentageComplete: 79), LocalizationMap(LocaleKey.romanian, 'ro', 'ro', percentageComplete: 37), - LocalizationMap(LocaleKey.spanish, 'es', 'es', percentageComplete: 99), + LocalizationMap(LocaleKey.spanish, 'es', 'es', percentageComplete: 100), LocalizationMap(LocaleKey.czech, 'cs', 'cz', percentageComplete: 98), LocalizationMap(LocaleKey.turkish, 'tr', 'tr', percentageComplete: 88), LocalizationMap(LocaleKey.hungarian, 'hu', 'hu', percentageComplete: 99), diff --git a/lib/env/app_version_num.dart b/lib/env/app_version_num.dart index 9028dc830..5491d9d83 100644 --- a/lib/env/app_version_num.dart +++ b/lib/env/app_version_num.dart @@ -1,3 +1,3 @@ -const appsBuildNum = 328; -const appsBuildName = '2.21.0'; -const appsCommit = 'bd222b813825069689ee68c53e49f0ef4bde151f'; \ No newline at end of file +const appsBuildNum = 333; +const appsBuildName = '2.22.0'; +const appsCommit = '41bf45e41a3d794a18620b468b6955583c06b57b'; \ No newline at end of file diff --git a/lib/integration/dependency_injection.dart b/lib/integration/dependency_injection.dart index 0277e4331..880a15ad0 100644 --- a/lib/integration/dependency_injection.dart +++ b/lib/integration/dependency_injection.dart @@ -17,7 +17,7 @@ import '../services/base/interface/i_audio_player_service.dart'; import '../services/base/interface/i_firebase_service.dart'; import '../services/base/loading_widget_service.dart'; import '../services/base/local_notification_service.dart'; -import '../services/base/mock_firebase_service.dart'; +import '../services/base/firebase_service.dart'; import '../services/base/notification_service.dart'; import '../services/base/path_service.dart'; import '../services/base/theme_service.dart'; @@ -49,6 +49,8 @@ final getIt = GetIt.instance; void initDependencyInjection(EnvironmentSettings _env) { getIt.registerSingleton(_env); + getIt.registerSingleton( + FirebaseService()); // Is used by analytics & notification services // AssistantApps initAssistantAppsDependencyInjection( @@ -86,7 +88,6 @@ void initDependencyInjection(EnvironmentSettings _env) { getIt.registerSingleton(AudioPlayerService()); getIt.registerSingleton(LocalNotificationService()); - getIt.registerSingleton(MockFirebaseService()); getIt.registerSingleton(AppApi()); getIt.registerSingleton(GuideApiService()); diff --git a/lib/pages/donation.dart b/lib/pages/donation.dart index fc9a867d5..95d2e1f2f 100644 --- a/lib/pages/donation.dart +++ b/lib/pages/donation.dart @@ -1,10 +1,5 @@ -import 'dart:async'; - import 'package:assistantapps_flutter_common/assistantapps_flutter_common.dart'; -import 'package:assistantnms_app/integration/dependency_injection.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:google_mobile_ads/google_mobile_ads.dart'; import '../components/scaffoldTemplates/generic_page_scaffold.dart'; import '../constants/analytics_event.dart'; @@ -17,107 +12,10 @@ class Donation extends StatefulWidget { } class _DonationWidget extends State { - bool adIsLoading = true; - bool adHasFailedToLoad = false; - bool supportsNavtivePay = false; - - final _interstitialAdId = - getFirebase().adMobInterstitialDonationPageAdUnitId(); - InterstitialAd? _interstitialAd; - final int maxFailedLoadAttempts = 3; - int _numInterstitialLoadAttempts = 0; - StreamSubscription? _interstitialAdSubscription; - - static const AdRequest request = AdRequest( - keywords: ['gaming', 'space'], - nonPersonalizedAds: true, - ); - _DonationWidget() { getAnalytics().trackEvent(AnalyticsEvent.donationPage); } - @override - void initState() { - super.initState(); - _createInterstitialAd(); - if (!kReleaseMode) { - adHasFailedToLoad = true; - } - } - - void _createInterstitialAd() { - if (_interstitialAd != null) { - _interstitialAd!.dispose(); - } - if (_interstitialAdSubscription != null) { - _interstitialAdSubscription!.cancel(); - } - - InterstitialAd.load( - adUnitId: _interstitialAdId, - request: request, - adLoadCallback: InterstitialAdLoadCallback( - onAdLoaded: (InterstitialAd ad) { - getLog().d('$ad loaded'); - _interstitialAd = ad; - _numInterstitialLoadAttempts = 0; - _interstitialAd?.setImmersiveMode(true); - }, - onAdFailedToLoad: (LoadAdError error) { - getLog().d('InterstitialAd failed to load: $error.'); - _numInterstitialLoadAttempts += 1; - _interstitialAd = null; - if (_numInterstitialLoadAttempts < maxFailedLoadAttempts) { - _createInterstitialAd(); - } - }, - ), - ); - } - - void _showInterstitialAd() { - if (_interstitialAd == null) { - getLog().d('Warning: attempt to show interstitial before loaded.'); - return; - } - _interstitialAd!.fullScreenContentCallback = - FullScreenContentCallback(onAdShowedFullScreenContent: (ad) { - getLog().d('onAdShowedFullScreenContent.'); - setState(() { - adIsLoading = false; - }); - }, onAdDismissedFullScreenContent: (ad) { - getLog().d('onAdDismissedFullScreenContent.'); - ad.dispose(); - getAnalytics().trackEvent(AnalyticsEvent.addMobDonationPageClose); - handleAdDismiss(); - }, onAdFailedToShowFullScreenContent: (ad, error) { - getAnalytics().trackEvent(AnalyticsEvent.addMobDonationPageFailedToLoad); - getLog().d('onAdFailedToShowFullScreenContent: $error'); - setState(() { - adHasFailedToLoad = true; - }); - ad.dispose(); - _createInterstitialAd(); - }, onAdClicked: (ad) { - getLog().d('Ad clicked!'); - getAnalytics().trackEvent(AnalyticsEvent.addMobDonationPageClick); - }); - _interstitialAd!.show(); - _interstitialAd = null; - } - - void handleAdDismiss() { - setState(() { - adIsLoading = true; - if (_interstitialAd != null) { - _interstitialAd!.dispose(); - } - _createInterstitialAd(); - }); - } - @override Widget build(BuildContext context) { List items = List.empty(growable: true); @@ -136,83 +34,56 @@ class _DonationWidget extends State { List paymentOptions = List.empty(growable: true); - if (!isApple) { - paymentOptions.add(ListTile( - key: const Key('buyMeACoffee'), - leading: DonationImage.buyMeACoffee(), - title: Text(getTranslations().fromKey(LocaleKey.buyMeACoffee), - style: const TextStyle(fontSize: 20)), - onTap: () { - getAnalytics().trackEvent(AnalyticsEvent.externalLinkBuyMeACoffee); - launchExternalURL(ExternalUrls.buyMeACoffee); - }, - )); - paymentOptions.add(ListTile( - key: const Key('patreon'), - leading: DonationImage.patreon(), - title: Text(getTranslations().fromKey(LocaleKey.patreon), - style: const TextStyle(fontSize: 20)), - onTap: () { - getAnalytics().trackEvent(AnalyticsEvent.externalLinkPatreon); - launchExternalURL(ExternalUrls.patreon); - }, - )); - paymentOptions.add(ListTile( - key: const Key('payPal'), - leading: DonationImage.payPal(), - title: Text(getTranslations().fromKey(LocaleKey.paypal), - style: const TextStyle(fontSize: 20)), - onTap: () { - getAnalytics().trackEvent(AnalyticsEvent.externalLinkPayPal); - launchExternalURL(ExternalUrls.payPal); - }, - )); - paymentOptions.add(ListTile( - key: const Key('kofi'), - leading: DonationImage.kofi(), - title: Text(getTranslations().fromKey(LocaleKey.kofi), - style: const TextStyle(fontSize: 20)), - onTap: () { - getAnalytics().trackEvent(AnalyticsEvent.externalLinkkofi); - launchExternalURL(ExternalUrls.kofi); - }, - )); - paymentOptions.add(ListTile( - key: const Key('openCollective'), - leading: DonationImage.openCollective(), - title: Text(getTranslations().fromKey(LocaleKey.openCollective), - style: const TextStyle(fontSize: 20)), - onTap: () { - getAnalytics().trackEvent(AnalyticsEvent.externalLinkOpenCollective); - launchExternalURL(ExternalUrls.openCollective); - }, - )); - - if (!adHasFailedToLoad) { - if (adIsLoading) { - paymentOptions.add(getLoading().smallLoadingTile(context)); - } else { - paymentOptions.add(ListTile( - key: const Key('advert'), - leading: const ListTileImage(partialPath: 'ad.png'), - title: const Text("Advertisement", style: TextStyle(fontSize: 20)), - onTap: () { - _showInterstitialAd(); - }, - )); - } - } - } - - if (paymentOptions.isNotEmpty) { - items.addAll(paymentOptions); - } else { - items.add(ListTile( - key: Key(LocaleKey.noItems.toString()), - title: Text(getTranslations().fromKey(LocaleKey.noItems), - textAlign: TextAlign.center, style: const TextStyle(fontSize: 20)), - )); - } + paymentOptions.add(ListTile( + key: const Key('buyMeACoffee'), + leading: DonationImage.buyMeACoffee(), + title: Text(getTranslations().fromKey(LocaleKey.buyMeACoffee), + style: const TextStyle(fontSize: 20)), + onTap: () { + getAnalytics().trackEvent(AnalyticsEvent.externalLinkBuyMeACoffee); + launchExternalURL(ExternalUrls.buyMeACoffee); + }, + )); + paymentOptions.add(ListTile( + key: const Key('patreon'), + leading: DonationImage.patreon(), + title: Text(getTranslations().fromKey(LocaleKey.patreon), + style: const TextStyle(fontSize: 20)), + onTap: () { + getAnalytics().trackEvent(AnalyticsEvent.externalLinkPatreon); + launchExternalURL(ExternalUrls.patreon); + }, + )); + paymentOptions.add(ListTile( + key: const Key('payPal'), + leading: DonationImage.payPal(), + title: Text(getTranslations().fromKey(LocaleKey.paypal), + style: const TextStyle(fontSize: 20)), + onTap: () { + getAnalytics().trackEvent(AnalyticsEvent.externalLinkPayPal); + launchExternalURL(ExternalUrls.payPal); + }, + )); + paymentOptions.add(ListTile( + key: const Key('kofi'), + leading: DonationImage.kofi(), + title: Text(getTranslations().fromKey(LocaleKey.kofi), + style: const TextStyle(fontSize: 20)), + onTap: () { + getAnalytics().trackEvent(AnalyticsEvent.externalLinkkofi); + launchExternalURL(ExternalUrls.kofi); + }, + )); + paymentOptions.add(ListTile( + key: const Key('openCollective'), + leading: DonationImage.openCollective(), + title: Text(getTranslations().fromKey(LocaleKey.openCollective), + style: const TextStyle(fontSize: 20)), + onTap: () { + getAnalytics().trackEvent(AnalyticsEvent.externalLinkOpenCollective); + launchExternalURL(ExternalUrls.openCollective); + }, + )); return simpleGenericPageScaffold( context, @@ -226,15 +97,4 @@ class _DonationWidget extends State { ), ); } - - @override - void dispose() { - if (_interstitialAdSubscription != null) { - _interstitialAdSubscription!.cancel(); - } - if (_interstitialAd != null) { - _interstitialAd!.dispose(); - } - super.dispose(); - } } diff --git a/lib/services/base/firebase_service.dart b/lib/services/base/firebase_service.dart index 6eda3e78f..c7ca59099 100644 --- a/lib/services/base/firebase_service.dart +++ b/lib/services/base/firebase_service.dart @@ -4,10 +4,7 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_analytics/firebase_analytics.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:google_sign_in/google_sign_in.dart'; -import 'package:google_mobile_ads/google_mobile_ads.dart'; -import 'package:flutter/foundation.dart' show kReleaseMode; -import '../../constants/app_config.dart'; import '../../contracts/auth/authed_user.dart'; import 'interface/i_firebase_service.dart'; @@ -33,12 +30,6 @@ class FirebaseService implements IFirebaseService { _googleSignIn = GoogleSignIn(scopes: scopes); } - @override - initFirebaseAdMob() async { - if (isWindows) return; - MobileAds.instance.initialize(); - } - @override void trackAnalyticEvent(String key) { _analytics.logEvent(name: key); @@ -68,14 +59,6 @@ class FirebaseService implements IFirebaseService { return FirebaseMessaging.instance.unsubscribeFromTopic(topic); } - @override - String adMobInterstitialDonationPageAdUnitId() { - if (!kReleaseMode) return 'ca-app-pub-3940256099942544/2247696110'; - return isAndroid - ? AppConfig.adMobAndroidInterstitialDonationPageAdUnitId - : AppConfig.adMobiOSInterstitialDonationPageAdUnitId; - } - @override Future> signInwithGoogle() async { if (isWindows) { diff --git a/lib/services/base/interface/i_firebase_service.dart b/lib/services/base/interface/i_firebase_service.dart index 2d8b7507b..b5102b84d 100644 --- a/lib/services/base/interface/i_firebase_service.dart +++ b/lib/services/base/interface/i_firebase_service.dart @@ -4,13 +4,11 @@ import '../../../contracts/auth/authed_user.dart'; abstract class IFirebaseService { Future initFirebaseApp(); - Future initFirebaseAdMob(); void trackAnalyticEvent(String key); Future requestNotificationPermission(); Future getToken(); Future subscribeToTopic(String topic); Future unsubscribeFromTopic(String topic); - String adMobInterstitialDonationPageAdUnitId(); Future> signInwithGoogle(); AuthedUser? getCurrentUser(); Future signOutFromGoogle(); diff --git a/pubspec.lock b/pubspec.lock index 1e37f9f91..ce3f2b4f7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -462,18 +462,18 @@ packages: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: "72977325a72af5ebb8e53b5c5533cb2e33eec481cd46210cfe5427f5efba55d8" + sha256: "6d9baa077d16b47ef5f19d982c4fc475597991aa53b0c601216faa3e1cdab45f" url: "https://pub.dev" source: hosted - version: "3.8.4" + version: "3.9.0" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "8b9710be7e292e2a5ad34fff449d4b668c5808fb339649e69181727a4534f579" + sha256: "89a740249bce9d52a99db4e501be6087ca6749c73c47cff2b174802be10abd81" url: "https://pub.dev" source: hosted - version: "0.5.5+11" + version: "0.5.5+12" firebase_auth: dependency: "direct main" description: @@ -494,10 +494,10 @@ packages: dependency: transitive description: name: firebase_auth_web - sha256: c09515414c07c11bb133aec4baae9a74c6ff1f62bf05ace54564db82b8c87852 + sha256: c7b1379ccef7abf4b6816eede67a868c44142198e42350f51c01d8fc03f95a7d url: "https://pub.dev" source: hosted - version: "5.8.12" + version: "5.8.13" firebase_core: dependency: "direct main" description: @@ -790,14 +790,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.0+2" - google_mobile_ads: - dependency: "direct main" - description: - name: google_mobile_ads - sha256: "7b8915f0ad358f49ba7d547b5187204cfe72ca668fb83aa303f96a2eacdc4033" - url: "https://pub.dev" - source: hosted - version: "3.1.0" google_sign_in: dependency: "direct main" description: @@ -810,34 +802,34 @@ packages: dependency: transitive description: name: google_sign_in_android - sha256: "6031f59074a337fdd81be821aba84cee3a41338c6e958499a5cd34d3e1db80ef" + sha256: bfd42c81c30c6faba16e0f62968d5505a87504aaa672b3155ee931461abb0a49 url: "https://pub.dev" source: hosted - version: "6.1.20" + version: "6.1.21" google_sign_in_ios: dependency: transitive description: name: google_sign_in_ios - sha256: "0822b0abc94ff6d705d7a321ef58818ffed864787f23f5ac3451e3e6afbcf90d" + sha256: b7d444abd3b4ef718e32d766c84b5a5d00d4e63a673075a435e6aad0e85e4d20 url: "https://pub.dev" source: hosted - version: "5.7.1" + version: "5.7.2" google_sign_in_platform_interface: dependency: transitive description: name: google_sign_in_platform_interface - sha256: e10eaaa30a0cb03af12dd324fb2e630ac7e9d854d0530f7a87a4d825031f9a4a + sha256: df6c91e74b7bb07335c864434c2064007dafa5539a96adeca6e83811be583ec4 url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.4.4" google_sign_in_web: dependency: transitive description: name: google_sign_in_web - sha256: "38e6ec2a7d65ec34bb7ae2db64a1d042b021330433b999e87330d45c688ff549" + sha256: a278ea2d01013faf341cbb093da880d0f2a552bbd1cb6ee90b5bebac9ba69d77 url: "https://pub.dev" source: hosted - version: "0.12.3+1" + version: "0.12.3+2" group_button: dependency: transitive description: @@ -1797,14 +1789,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - visibility_detector: - dependency: transitive - description: - name: visibility_detector - sha256: dd5cc11e13494f432d15939c3aa8ae76844c42b723398643ce9addb88a5ed420 - url: "https://pub.dev" - source: hosted - version: "0.4.0+2" web: dependency: transitive description: @@ -1829,38 +1813,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.1+1" - webview_flutter: - dependency: transitive - description: - name: webview_flutter - sha256: "42393b4492e629aa3a88618530a4a00de8bb46e50e7b3993fedbfdc5352f0dbf" - url: "https://pub.dev" - source: hosted - version: "4.4.2" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - sha256: b54c89fe14a6d26a2a46e24880da0441cdd2bf1f6d01a5b3e1d39558feb1de0b - url: "https://pub.dev" - source: hosted - version: "3.13.1" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - sha256: dbe745ee459a16b6fec296f7565a8ef430d0d681001d8ae521898b9361854943 - url: "https://pub.dev" - source: hosted - version: "2.9.0" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - sha256: eebfabfa8a115b535b52031b8b26f7a4b58ceceab378bc9db8762b0fb46f7b5d - url: "https://pub.dev" - source: hosted - version: "3.10.0" win32: dependency: "direct overridden" description: diff --git a/pubspec.yaml b/pubspec.yaml index ca3ff138a..93269384e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,12 +2,12 @@ name: assistantnms_app description: Assistant for No Man's Sky homepage: https://nmsassistant.com # author: Kurt Lourens -version: 2.21.0+328 # dart scripts\version_num_script.dart -publish_to: 'none' +version: 2.22.0+333 # dart scripts\version_num_script.dart +publish_to: "none" environment: - sdk: '>=3.2.0 <4.0.0' - flutter: '>=1.17.0' + sdk: ">=3.2.0 <4.0.0" + flutter: ">=1.17.0" dependencies: flutter: @@ -27,7 +27,6 @@ dependencies: firebase_auth: 4.15.3 # firebase_auth_web: ^0.3.2+6 google_sign_in: 6.2.1 - google_mobile_ads: 3.1.0 # UI adaptive_theme: 3.4.1 @@ -81,18 +80,18 @@ flutter_icons: ## dart run flutter_launcher_icons:main ios: true android: true remove_alpha_ios: true - image_path: 'assets/images/fullSizeIcon.png' - adaptive_icon_background: 'assets/images/fullSizeIconAdaptiveBg.png' - adaptive_icon_foreground: 'assets/images/fullSizeIconAdaptiveFg.png' + image_path: "assets/images/fullSizeIcon.png" + adaptive_icon_background: "assets/images/fullSizeIconAdaptiveBg.png" + adaptive_icon_foreground: "assets/images/fullSizeIconAdaptiveFg.png" # dart run msix:create msix_config: # https://pub.dev/documentation/msix/latest/ display_name: Assistant for No Man's Sky publisher_display_name: AssistantApps - msix_version: 2.21.0.0 - identity_name: notSureIfSecret - publisher: notSureIfSecret - logo_path: './assets/images/fullSizeIcon.png' + msix_version: 2.22.0.0 + identity_name: 32412AssistantApps.AssistantforNoMansSky + publisher: CN=3CD7EDA8-DFB6-44F8-A6AC-DC70B9A5D88A + logo_path: "./assets/images/fullSizeIcon.png" languages: en capabilities: internetClient store: true diff --git a/release_notes.txt b/release_notes.txt index bc52a5bda..a18617463 100644 --- a/release_notes.txt +++ b/release_notes.txt @@ -1,9 +1,8 @@ -- 🎨 Improve the Expedition page +- 📄 Add new guide by Muhaddil - 🌐 Updated translations -- 🤖 Android dependency upgrades -- 🐛 Better error handling for Community mission page +- 🐛 Fix data about update releases -Submitted to App Stores 2024-01-03 +Submitted to App Stores 2024-02-05 For more details on this update please visit the "What is New" page in the Apps or on the website