From 516c13aafd124d1db5c8feeefb651004b28a2643 Mon Sep 17 00:00:00 2001 From: bluearevalo <90929912+bluearevalo@users.noreply.github.com> Date: Mon, 24 Jun 2024 11:52:47 -0400 Subject: [PATCH 1/7] Shows code version in settings as well as --- .../xcshareddata/swiftpm/Package.resolved | 14 +++++ lib/pages/settings/settings_view.dart | 57 ++++++++++++++++--- pubspec.lock | 46 ++++++++++++++- 3 files changed, 105 insertions(+), 12 deletions(-) create mode 100644 ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 000000000..c4fde7525 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,14 @@ +{ + "pins" : [ + { + "identity" : "qaml-swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/qaml-ai/qaml-swift", + "state" : { + "branch" : "next", + "revision" : "34ee0823225a19641f03a2a38508fabfd484bdc2" + } + } + ], + "version" : 2 +} diff --git a/lib/pages/settings/settings_view.dart b/lib/pages/settings/settings_view.dart index c4a57a267..86c48ccb6 100644 --- a/lib/pages/settings/settings_view.dart +++ b/lib/pages/settings/settings_view.dart @@ -10,6 +10,9 @@ import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; import 'package:url_launcher/url_launcher_string.dart'; +import 'package:package_info_plus/package_info_plus.dart'; //adding to check app version + + import 'settings.dart'; class SettingsView extends StatelessWidget { @@ -17,6 +20,14 @@ class SettingsView extends StatelessWidget { const SettingsView(this.controller, {super.key}); + Future getAppVersion() async { + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + return 'Version: ${packageInfo.version}+${packageInfo.buildNumber}'; +} + + + + @override Widget build(BuildContext context) { // #Pangea @@ -44,6 +55,8 @@ class SettingsView extends StatelessWidget { key: const Key('SettingsListViewContent'), children: [ FutureBuilder( + + future: controller.profileFuture, builder: (context, snapshot) { final profile = snapshot.data; @@ -136,6 +149,8 @@ class SettingsView extends StatelessWidget { ], ); }, + + ), // #Pangea // Divider( @@ -239,17 +254,41 @@ class SettingsView extends StatelessWidget { // onTap: () => PlatformInfos.showDialog(context), // trailing: const Icon(Icons.chevron_right_outlined), // ), + + ListTile( + leading: const Icon(Icons.shield_outlined), + title: Text(L10n.of(context)!.termsAndConditions), + onTap: () => launchUrlString(AppConfig.termsOfServiceUrl), + trailing: const Icon(Icons.open_in_new_outlined), + ), + // Adding the FutureBuilder here + FutureBuilder( + future: getAppVersion(), + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + return ListTile( + leading: Icon(Icons.info_outline), + title: Text(snapshot.data ?? 'Version Not Found'), + ); + } else if (snapshot.hasError) { + return ListTile( + leading: Icon(Icons.error_outline), + title: Text('Failed to fetch version'), + ); + } else { + return ListTile( + leading: CircularProgressIndicator(), + title: Text('Fetching version...'), + ); + } + }, + ), + // Conditional ListTile based on the environment (staging or not) + if (Environment.isStaging) ListTile( - leading: const Icon(Icons.shield_outlined), - title: Text(L10n.of(context)!.termsAndConditions), - onTap: () => launchUrlString(AppConfig.termsOfServiceUrl), - trailing: const Icon(Icons.open_in_new_outlined), + leading: const Icon(Icons.bug_report_outlined), + title: Text(L10n.of(context)!.connectedToStaging), ), - if (Environment.isStaging) - ListTile( - leading: const Icon(Icons.bug_report_outlined), - title: Text(L10n.of(context)!.connectedToStaging), - ), // Pangea# ], ), diff --git a/pubspec.lock b/pubspec.lock index afe372a2f..f64f9e0fa 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -349,10 +349,10 @@ packages: dependency: "direct main" description: name: emoji_picker_flutter - sha256: "839200a2bd1af9a65d71133a5a246dbf5b24f7e4f6f4c5390130c2e0ed5f85af" + sha256: "7c6681783e06710608df27be0e38aa4ba73ca1ccac370bb0e7a1320723ae4bca" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.1.1" emoji_proposal: dependency: "direct main" description: @@ -975,6 +975,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + globbing: + dependency: transitive + description: + name: globbing + sha256: "4f89cfaf6fa74c9c1740a96259da06bd45411ede56744e28017cc534a12b6e2d" + url: "https://pub.dev" + source: hosted + version: "1.0.0" go_router: dependency: "direct main" description: @@ -1167,6 +1175,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.3.8+1" + injector: + dependency: transitive + description: + name: injector + sha256: ed389bed5b48a699d5b9561c985023d0d5cc88dd5ff2237aadcce5a5ab433e4e + url: "https://pub.dev" + source: hosted + version: "3.0.0" integration_test: dependency: "direct dev" description: flutter @@ -1749,6 +1765,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.0" + properties: + dependency: transitive + description: + name: properties + sha256: "333f427dd4ed07bdbe8c75b9ff864a1e70b5d7a8426a2e8bdd457b65ae5ac598" + url: "https://pub.dev" + source: hosted + version: "2.1.1" provider: dependency: "direct main" description: @@ -1949,6 +1973,14 @@ packages: url: "https://pub.dev" source: hosted version: "8.2.0" + sentry_dart_plugin: + dependency: "direct dev" + description: + name: sentry_dart_plugin + sha256: e81fa3e0ffabd04fdcfbfecd6468d4a342f02ab33edca09708c61bcd2be42b7d + url: "https://pub.dev" + source: hosted + version: "1.7.1" sentry_flutter: dependency: "direct main" description: @@ -2234,6 +2266,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0+1" + system_info2: + dependency: transitive + description: + name: system_info2 + sha256: "65206bbef475217008b5827374767550a5420ce70a04d2d7e94d1d2253f3efc9" + url: "https://pub.dev" + source: hosted + version: "4.0.0" tar: dependency: transitive description: @@ -2692,4 +2732,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.3.0 <4.0.0" - flutter: ">=3.19.3" + flutter: ">=3.19.0" From 39db3c6e9c1a4d8478a1998bff429946c458b283 Mon Sep 17 00:00:00 2001 From: bluearevalo <90929912+bluearevalo@users.noreply.github.com> Date: Thu, 27 Jun 2024 11:25:34 -0400 Subject: [PATCH 2/7] added translations --- assets/l10n/intl_en.arb | 7 +- assets/l10n/intl_es.arb | 6 +- lib/pages/settings/settings_view.dart | 15 +- needed-translations.txt | 250 ++++++++++++++++++++------ 4 files changed, 218 insertions(+), 60 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index c66ef7ac6..9cb76ad5a 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -4068,5 +4068,10 @@ "@knockRestricted": {}, "nonexistentSelection": "Selection no longer exists.", "cantAddSpaceChild": "You do not have permission to add a child to this space.", - "roomAddedToSpace": "Room(s) have been added to the selected space." + "roomAddedToSpace": "Room(s) have been added to the selected space.", + "versionNotFound": "Version Not Found", + "fetchingVersion": "Fetching version...", + "versionFetchError": "Error fetching version", + "connectedToStaging": "Connected to Staging" + } \ No newline at end of file diff --git a/assets/l10n/intl_es.arb b/assets/l10n/intl_es.arb index 44a03f0e1..b88f8108c 100644 --- a/assets/l10n/intl_es.arb +++ b/assets/l10n/intl_es.arb @@ -4675,5 +4675,9 @@ "tooltipInstructionsTitle": "¿No sabes para qué sirve?", "tooltipInstructionsMobileBody": "Mantenga pulsados los elementos para ver la información sobre herramientas.", "tooltipInstructionsBrowserBody": "Pase el ratón sobre los elementos para ver información sobre herramientas.", - "buildTranslation": "Construye tu traducción a partir de las opciones anteriores" + "buildTranslation": "Construye tu traducción a partir de las opciones anteriores", + "versionNotFound": "Versión no encontrada", + "fetchingVersion": "Obteniendo versión...", + "versionFetchError": "Error al obtener la versión", + "connectedToStaging": "Conectado al entorno de pruebas" } \ No newline at end of file diff --git a/lib/pages/settings/settings_view.dart b/lib/pages/settings/settings_view.dart index 86c48ccb6..936717b8b 100644 --- a/lib/pages/settings/settings_view.dart +++ b/lib/pages/settings/settings_view.dart @@ -254,7 +254,6 @@ class SettingsView extends StatelessWidget { // onTap: () => PlatformInfos.showDialog(context), // trailing: const Icon(Icons.chevron_right_outlined), // ), - ListTile( leading: const Icon(Icons.shield_outlined), title: Text(L10n.of(context)!.termsAndConditions), @@ -268,27 +267,27 @@ class SettingsView extends StatelessWidget { if (snapshot.connectionState == ConnectionState.done) { return ListTile( leading: Icon(Icons.info_outline), - title: Text(snapshot.data ?? 'Version Not Found'), + title: Text(snapshot.data ?? L10n.of(context)!.versionNotFound), ); } else if (snapshot.hasError) { return ListTile( leading: Icon(Icons.error_outline), - title: Text('Failed to fetch version'), + title: Text(L10n.of(context)!.versionFetchError), ); } else { return ListTile( leading: CircularProgressIndicator(), - title: Text('Fetching version...'), + title: Text(L10n.of(context)!.fetchingVersion), ); } }, ), // Conditional ListTile based on the environment (staging or not) if (Environment.isStaging) - ListTile( - leading: const Icon(Icons.bug_report_outlined), - title: Text(L10n.of(context)!.connectedToStaging), - ), + ListTile( + leading: const Icon(Icons.bug_report_outlined), + title: Text(L10n.of(context)!.connectedToStaging), + ), // Pangea# ], ), diff --git a/needed-translations.txt b/needed-translations.txt index 293985cfc..1fc238303 100644 --- a/needed-translations.txt +++ b/needed-translations.txt @@ -866,7 +866,10 @@ "buildTranslation", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "be": [ @@ -2369,7 +2372,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "bn": [ @@ -3868,7 +3874,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "bo": [ @@ -5371,7 +5380,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ca": [ @@ -6276,7 +6288,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "cs": [ @@ -7263,7 +7278,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "de": [ @@ -8133,7 +8151,10 @@ "buildTranslation", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "el": [ @@ -9587,7 +9608,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "eo": [ @@ -10739,7 +10763,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "es": [ @@ -10786,7 +10813,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "et": [ @@ -11656,7 +11686,10 @@ "buildTranslation", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "eu": [ @@ -12528,7 +12561,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "fa": [ @@ -13537,7 +13573,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "fi": [ @@ -14510,7 +14549,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "fil": [ @@ -15839,7 +15881,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "fr": [ @@ -16847,7 +16892,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ga": [ @@ -17984,7 +18032,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "gl": [ @@ -18854,7 +18905,10 @@ "buildTranslation", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "he": [ @@ -20110,7 +20164,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "hi": [ @@ -21606,7 +21663,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "hr": [ @@ -22555,7 +22615,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "hu": [ @@ -23441,7 +23504,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ia": [ @@ -24930,7 +24996,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "id": [ @@ -25806,7 +25875,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ie": [ @@ -27066,7 +27138,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "it": [ @@ -27993,7 +28068,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ja": [ @@ -29031,7 +29109,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ka": [ @@ -30388,7 +30469,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ko": [ @@ -31260,7 +31344,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "lt": [ @@ -32298,7 +32385,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "lv": [ @@ -33176,7 +33266,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "nb": [ @@ -34378,7 +34471,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "nl": [ @@ -35344,7 +35440,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "pl": [ @@ -36319,7 +36418,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "pt": [ @@ -37800,7 +37902,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "pt_BR": [ @@ -38676,7 +38781,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "pt_PT": [ @@ -39879,7 +39987,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ro": [ @@ -40889,7 +41000,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ru": [ @@ -41765,7 +41879,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "sk": [ @@ -43034,7 +43151,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "sl": [ @@ -44433,7 +44553,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "sr": [ @@ -45606,7 +45729,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "sv": [ @@ -46513,7 +46639,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "ta": [ @@ -48013,7 +48142,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "th": [ @@ -49467,7 +49599,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "tr": [ @@ -50337,7 +50472,10 @@ "buildTranslation", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "uk": [ @@ -51244,7 +51382,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "vi": [ @@ -52599,7 +52740,10 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "zh": [ @@ -53469,7 +53613,10 @@ "buildTranslation", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ], "zh_Hant": [ @@ -54620,6 +54767,9 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace" + "roomAddedToSpace", + "versionNotFound", + "fetchingVersion", + "versionFetchError" ] } From 3eee9c710fd8c26a053e87204e95f65a4c208700 Mon Sep 17 00:00:00 2001 From: bluearevalo <90929912+bluearevalo@users.noreply.github.com> Date: Mon, 1 Jul 2024 14:12:44 -0400 Subject: [PATCH 3/7] removed package.resolved --- .../xcshareddata/swiftpm/Package.resolved | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index c4fde7525..000000000 --- a/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,14 +0,0 @@ -{ - "pins" : [ - { - "identity" : "qaml-swift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/qaml-ai/qaml-swift", - "state" : { - "branch" : "next", - "revision" : "34ee0823225a19641f03a2a38508fabfd484bdc2" - } - } - ], - "version" : 2 -} From e5c818de5caac9ba794d2d2a17443815a280e87e Mon Sep 17 00:00:00 2001 From: bluearevalo <90929912+bluearevalo@users.noreply.github.com> Date: Mon, 1 Jul 2024 15:19:32 -0400 Subject: [PATCH 4/7] changed code so getAppVersion supported l10n, added en and es translations --- assets/l10n/intl_en.arb | 20 +++- assets/l10n/intl_es.arb | 18 ++- lib/pages/settings/settings_view.dart | 8 +- needed-translations.txt | 152 +++++++++++++++++--------- 4 files changed, 139 insertions(+), 59 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 9cb76ad5a..3281b68e4 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -4072,6 +4072,24 @@ "versionNotFound": "Version Not Found", "fetchingVersion": "Fetching version...", "versionFetchError": "Error fetching version", - "connectedToStaging": "Connected to Staging" + "connectedToStaging": "Connected to Staging", + "versionText": "Version: {version}+{buildNumber}", + "@versionText": { + "description": "Text displaying the app version and build number.", + "type": "text", + "placeholders": { + "version": { + "type": "String", + "description": "The current version of the app." + }, + "buildNumber": { + "type": "String", + "description": "The build number of the app." + } + } + } + + + } \ No newline at end of file diff --git a/assets/l10n/intl_es.arb b/assets/l10n/intl_es.arb index b88f8108c..6cc89cc65 100644 --- a/assets/l10n/intl_es.arb +++ b/assets/l10n/intl_es.arb @@ -4679,5 +4679,21 @@ "versionNotFound": "Versión no encontrada", "fetchingVersion": "Obteniendo versión...", "versionFetchError": "Error al obtener la versión", - "connectedToStaging": "Conectado al entorno de pruebas" + "connectedToStaging": "Conectado al entorno de pruebas", + "versionText": "Versión: {version}+{buildNumber}", + "@versionText": { + "description": "Texto que muestra la versión y el número de compilación de la aplicación.", + "type": "text", + "placeholders": { + "version": { + "type": "String", + "description": "La versión actual de la aplicación." + }, + "buildNumber": { + "type": "String", + "description": "El número de compilación de la aplicación." + } + } + } + } \ No newline at end of file diff --git a/lib/pages/settings/settings_view.dart b/lib/pages/settings/settings_view.dart index 936717b8b..e537f01af 100644 --- a/lib/pages/settings/settings_view.dart +++ b/lib/pages/settings/settings_view.dart @@ -20,9 +20,9 @@ class SettingsView extends StatelessWidget { const SettingsView(this.controller, {super.key}); - Future getAppVersion() async { - PackageInfo packageInfo = await PackageInfo.fromPlatform(); - return 'Version: ${packageInfo.version}+${packageInfo.buildNumber}'; + Future getAppVersion(BuildContext context) async { + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + return L10n.of(context)!.versionText(packageInfo.version, packageInfo.buildNumber); } @@ -262,7 +262,7 @@ class SettingsView extends StatelessWidget { ), // Adding the FutureBuilder here FutureBuilder( - future: getAppVersion(), + future: getAppVersion(context), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return ListTile( diff --git a/needed-translations.txt b/needed-translations.txt index 1fc238303..b0ada0925 100644 --- a/needed-translations.txt +++ b/needed-translations.txt @@ -869,7 +869,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "be": [ @@ -2375,7 +2376,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "bn": [ @@ -3877,7 +3879,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "bo": [ @@ -5383,7 +5386,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ca": [ @@ -6291,7 +6295,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "cs": [ @@ -7281,7 +7286,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "de": [ @@ -8154,7 +8160,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "el": [ @@ -9611,7 +9618,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "eo": [ @@ -10766,7 +10774,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "es": [ @@ -10813,10 +10822,7 @@ "knockRestricted", "nonexistentSelection", "cantAddSpaceChild", - "roomAddedToSpace", - "versionNotFound", - "fetchingVersion", - "versionFetchError" + "roomAddedToSpace" ], "et": [ @@ -11689,7 +11695,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "eu": [ @@ -12564,7 +12571,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "fa": [ @@ -13576,7 +13584,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "fi": [ @@ -14552,7 +14561,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "fil": [ @@ -15884,7 +15894,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "fr": [ @@ -16895,7 +16906,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ga": [ @@ -18035,7 +18047,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "gl": [ @@ -18908,7 +18921,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "he": [ @@ -20167,7 +20181,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "hi": [ @@ -21666,7 +21681,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "hr": [ @@ -22618,7 +22634,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "hu": [ @@ -23507,7 +23524,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ia": [ @@ -24999,7 +25017,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "id": [ @@ -25878,7 +25897,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ie": [ @@ -27141,7 +27161,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "it": [ @@ -28071,7 +28092,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ja": [ @@ -29112,7 +29134,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ka": [ @@ -30472,7 +30495,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ko": [ @@ -31347,7 +31371,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "lt": [ @@ -32388,7 +32413,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "lv": [ @@ -33269,7 +33295,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "nb": [ @@ -34474,7 +34501,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "nl": [ @@ -35443,7 +35471,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "pl": [ @@ -36421,7 +36450,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "pt": [ @@ -37905,7 +37935,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "pt_BR": [ @@ -38784,7 +38815,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "pt_PT": [ @@ -39990,7 +40022,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ro": [ @@ -41003,7 +41036,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ru": [ @@ -41882,7 +41916,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "sk": [ @@ -43154,7 +43189,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "sl": [ @@ -44556,7 +44592,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "sr": [ @@ -45732,7 +45769,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "sv": [ @@ -46642,7 +46680,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "ta": [ @@ -48145,7 +48184,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "th": [ @@ -49602,7 +49642,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "tr": [ @@ -50475,7 +50516,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "uk": [ @@ -51385,7 +51427,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "vi": [ @@ -52743,7 +52786,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "zh": [ @@ -53616,7 +53660,8 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ], "zh_Hant": [ @@ -54770,6 +54815,7 @@ "roomAddedToSpace", "versionNotFound", "fetchingVersion", - "versionFetchError" + "versionFetchError", + "versionText" ] } From 49251774ccb9b6e100c9edca9d1fb94b3140e6e6 Mon Sep 17 00:00:00 2001 From: bluearevalo <90929912+bluearevalo@users.noreply.github.com> Date: Wed, 3 Jul 2024 14:28:41 -0400 Subject: [PATCH 5/7] try/catches added for minified:a7t sentry error, added back translationsfor l10n, added more to error_handler to get more info --- assets/l10n/intl_en.arb | 19 ++++++++ assets/l10n/intl_es.arb | 22 ++++++++- lib/pages/chat/chat.dart | 75 ++++++++++++++++++----------- lib/pangea/utils/error_handler.dart | 10 +++- 4 files changed, 95 insertions(+), 31 deletions(-) diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 7f44188a6..08e36316d 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -4068,6 +4068,25 @@ "hintTitle": "Hint:", "speechToTextBody": "See how well you did by looking at your Accuracy and Words Per Minute scores", "previous": "Previous", + "versionNotFound": "Version Not Found", + "fetchingVersion": "Fetching version...", + "versionFetchError": "Error fetching version", + "connectedToStaging": "Connected to Staging", + "versionText": "Version: {version}+{buildNumber}", + "@versionText": { + "description": "Text displaying the app version and build number.", + "type": "text", + "placeholders": { + "version": { + "type": "String", + "description": "The current version of the app." + }, + "buildNumber": { + "type": "String", + "description": "The build number of the app." + } + } + }, "languageButtonLabel": "Language: {currentLanguage}", "@languageButtonLabel": { "type": "text", diff --git a/assets/l10n/intl_es.arb b/assets/l10n/intl_es.arb index ac6b30c76..84de60836 100644 --- a/assets/l10n/intl_es.arb +++ b/assets/l10n/intl_es.arb @@ -4717,5 +4717,25 @@ "addChatToSpaceDesc": "Añadir un chat a un espacio hará que el chat aparezca dentro del espacio para los estudiantes y les dará acceso.", "addSpaceToSpaceDesc": "Añadir un espacio a otro espacio hará que el espacio hijo aparezca dentro del espacio padre para los estudiantes y les dará acceso.", "spaceAnalytics": "Analítica espacial", - "changeAnalyticsLanguage": "Cambiar el lenguaje analítico" + "changeAnalyticsLanguage": "Cambiar el lenguaje analítico", + "versionNotFound": "Versión no encontrada", + "fetchingVersion": "Obteniendo versión...", + "versionFetchError": "Error al obtener la versión", + "connectedToStaging": "Conectado al entorno de pruebas" + "connectedToStaging": "Conectado al entorno de pruebas", + "versionText": "Versión: {version}+{buildNumber}", + "@versionText": { + "description": "Texto que muestra la versión y el número de compilación de la aplicación.", + "type": "text", + "placeholders": { + "version": { + "type": "String", + "description": "La versión actual de la aplicación." + }, + "buildNumber": { + "type": "String", + "description": "El número de compilación de la aplicación." + } + } + } } \ No newline at end of file diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 5629d809e..5ac0a6547 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -45,6 +45,7 @@ import 'package:matrix/matrix.dart'; import 'package:scroll_to_index/scroll_to_index.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:universal_html/html.dart' as html; +import 'package:sentry_flutter/sentry_flutter.dart'; import '../../utils/account_bundles.dart'; import '../../utils/localized_exception_extension.dart'; @@ -481,35 +482,35 @@ class ChatController extends State Future? _setReadMarkerFuture; void setReadMarker({String? eventId}) { - if (_setReadMarkerFuture != null) return; - if (_scrolledUp) return; - if (scrollUpBannerEventId != null) return; - if (eventId == null && - !room.hasNewMessages && - room.notificationCount == 0) { - return; - } + if (_setReadMarkerFuture != null) return; + if (_scrolledUp) return; + if (scrollUpBannerEventId != null) return; + if (eventId == null && !room.hasNewMessages && room.notificationCount == 0) { + return; + } - // Do not send read markers when app is not in foreground - // #Pangea - try { - // Pangea# - if (kIsWeb && !Matrix.of(context).webHasFocus) return; - // #Pangea - } catch (err, s) { - ErrorHandler.logError(e: err, s: s); - return; - } + // Do not send read markers when app is not in foreground + // #Pangea + try { // Pangea# - if (!kIsWeb && - WidgetsBinding.instance.lifecycleState != AppLifecycleState.resumed) { - return; - } + if (kIsWeb && !Matrix.of(context).webHasFocus) return; + // #Pangea + } catch (err, s) { + ErrorHandler.logError(e: PangeaWarningError("Web focus error: $err"), s: s); + return; + } + // Pangea# + if (!kIsWeb && WidgetsBinding.instance.lifecycleState != AppLifecycleState.resumed) { + return; + } - final timeline = this.timeline; - if (timeline == null || timeline.events.isEmpty) return; + final timeline = this.timeline; + if (timeline == null || timeline.events.isEmpty) { + ErrorHandler.logError(e: PangeaWarningError("Timeline is null or empty"), s: StackTrace.current); + return; + } - Logs().d('Set read marker...', eventId); + Logs().d('Set read marker...', eventId); // ignore: unawaited_futures _setReadMarkerFuture = timeline .setReadMarker( @@ -518,11 +519,27 @@ class ChatController extends State ) .then((_) { _setReadMarkerFuture = null; - }); - if (eventId == null || eventId == timeline.room.lastEvent?.eventId) { - Matrix.of(context).backgroundPush?.cancelNotification(roomId); - } + }).catchError((e, s) { + ErrorHandler.logError( + e: PangeaWarningError("Failed to set read marker: $e"), + s: s, + m: 'Failed to set read marker for eventId: $eventId' + ); + Sentry.captureException( + e, + stackTrace: s, + withScope: (scope) { + scope.setExtra('extra_info', 'Failed during setReadMarker with eventId: $eventId'); + scope.setTag('where', 'setReadMarker'); + } + ); + }); + + if (eventId == null || eventId == timeline.room.lastEvent?.eventId) { + Matrix.of(context).backgroundPush?.cancelNotification(roomId); } +} + @override void dispose() { diff --git a/lib/pangea/utils/error_handler.dart b/lib/pangea/utils/error_handler.dart index 2144e9f87..eb406d48a 100644 --- a/lib/pangea/utils/error_handler.dart +++ b/lib/pangea/utils/error_handler.dart @@ -53,8 +53,15 @@ class ErrorHandler { Map? data, SentryLevel level = SentryLevel.error, }) async { - if (m != null) debugPrint("error message: $m"); + if (e is PangeaWarningError) { + // Custom handling for PangeaWarningError + debugPrint("PangeaWarningError: ${e.message}"); + } else { + if (m != null) debugPrint("error message: $m"); + } + if ((e ?? m) != null) debugPrint("error to string: ${e?.toString() ?? m}"); + if (data != null) { Sentry.addBreadcrumb(Breadcrumb.fromJson(data)); debugPrint(data.toString()); @@ -68,6 +75,7 @@ class ErrorHandler { }, ); } + } class ErrorCopy { From fbbbf5e740552bdedcd2bbe061a98122828a8431 Mon Sep 17 00:00:00 2001 From: bluearevalo <90929912+bluearevalo@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:26:36 -0400 Subject: [PATCH 6/7] added missing comma in intl_es, same thing for chat.dart as it was missing trailing comma, for my_analytics i added some error catches for that minified:tm bug --- assets/l10n/intl_es.arb | 2 +- lib/pages/chat/chat.dart | 4 +- .../controllers/my_analytics_controller.dart | 102 ++++++++++++------ 3 files changed, 70 insertions(+), 38 deletions(-) diff --git a/assets/l10n/intl_es.arb b/assets/l10n/intl_es.arb index 84de60836..684a418e3 100644 --- a/assets/l10n/intl_es.arb +++ b/assets/l10n/intl_es.arb @@ -4721,7 +4721,7 @@ "versionNotFound": "Versión no encontrada", "fetchingVersion": "Obteniendo versión...", "versionFetchError": "Error al obtener la versión", - "connectedToStaging": "Conectado al entorno de pruebas" + "connectedToStaging": "Conectado al entorno de pruebas", "connectedToStaging": "Conectado al entorno de pruebas", "versionText": "Versión: {version}+{buildNumber}", "@versionText": { diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 5ac0a6547..07a20b287 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -523,7 +523,7 @@ class ChatController extends State ErrorHandler.logError( e: PangeaWarningError("Failed to set read marker: $e"), s: s, - m: 'Failed to set read marker for eventId: $eventId' + m: 'Failed to set read marker for eventId: $eventId', ); Sentry.captureException( e, @@ -531,7 +531,7 @@ class ChatController extends State withScope: (scope) { scope.setExtra('extra_info', 'Failed during setReadMarker with eventId: $eventId'); scope.setTag('where', 'setReadMarker'); - } + }, ); }); diff --git a/lib/pangea/controllers/my_analytics_controller.dart b/lib/pangea/controllers/my_analytics_controller.dart index 535af6b8b..88d5ee1d2 100644 --- a/lib/pangea/controllers/my_analytics_controller.dart +++ b/lib/pangea/controllers/my_analytics_controller.dart @@ -11,6 +11,7 @@ import 'package:fluffychat/pangea/models/analytics/summary_analytics_model.dart' import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:flutter/foundation.dart'; import 'package:matrix/matrix.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; import '../extensions/client_extension/client_extension.dart'; import '../extensions/pangea_room_extension/pangea_room_extension.dart'; @@ -113,20 +114,36 @@ class MyAnalyticsController { // adds an event ID to the cache of un-added event IDs // if the event IDs isn't already added void addMessageSinceUpdate(String eventId) { - final List currentCache = messagesSinceUpdate; - if (!currentCache.contains(eventId)) { - currentCache.add(eventId); - _pangeaController.pStoreService.save( - PLocalKey.messagesSinceUpdate, - currentCache, - local: true, - ); - } + try{ + final List currentCache = messagesSinceUpdate; + if (!currentCache.contains(eventId)) { + currentCache.add(eventId); + _pangeaController.pStoreService.save( + PLocalKey.messagesSinceUpdate, + currentCache, + local: true, + ); + } - // if the cached has reached if max-length, update analytics - if (messagesSinceUpdate.length > _maxMessagesCached) { - debugPrint("reached max messages, updating"); - updateAnalytics(); + // if the cached has reached if max-length, update analytics + if (messagesSinceUpdate.length > _maxMessagesCached) { + debugPrint("reached max messages, updating"); + updateAnalytics(); + } + } catch (exception, stackTrace) { + ErrorHandler.logError( + e: PangeaWarningError("Failed to add message since update: $exception"), + s: stackTrace, + m: 'Failed to add message since update for eventId: $eventId' + ); + Sentry.captureException( + exception, + stackTrace: stackTrace, + withScope: (scope) { + scope.setExtra('extra_info', 'Failed during addMessageSinceUpdate with eventId: $eventId'); + scope.setTag('where', 'addMessageSinceUpdate'); + } + ); } } @@ -143,30 +160,45 @@ class MyAnalyticsController { // it's possible for this cache to be invalid or deleted // It's a proxy measure for messages sent since last update List get messagesSinceUpdate { - final dynamic locallySaved = _pangeaController.pStoreService.read( - PLocalKey.messagesSinceUpdate, - local: true, - ); - if (locallySaved == null) { - _pangeaController.pStoreService.save( - PLocalKey.messagesSinceUpdate, - [], - local: true, - ); - return []; - } - try { - return locallySaved as List; - } catch (err) { - _pangeaController.pStoreService.save( - PLocalKey.messagesSinceUpdate, - [], - local: true, - ); - return []; + Logs().d('Reading messages since update from local storage'); + final dynamic locallySaved = _pangeaController.pStoreService.read( + PLocalKey.messagesSinceUpdate, + local: true, + ); + if (locallySaved == null) { + Logs().d('No locally saved messages found, initializing empty list.'); + _pangeaController.pStoreService.save( + PLocalKey.messagesSinceUpdate, + [], + local: true, + ); + return []; + } + return locallySaved as List; + } catch (exception, stackTrace) { + ErrorHandler.logError( + e: PangeaWarningError("Failed to get messages since update: $exception"), + s: stackTrace, + m: 'Failed to retrieve messages since update' + ); + Sentry.captureException( + exception, + stackTrace: stackTrace, + withScope: (scope) { + scope.setExtra('extra_info', 'Error during messagesSinceUpdate getter'); + scope.setTag('where', 'messagesSinceUpdate'); + } + ); + _pangeaController.pStoreService.save( + PLocalKey.messagesSinceUpdate, + [], + local: true, + ); + return []; } - } +} + Completer? _updateCompleter; Future updateAnalytics() async { From 4bc49420c29bf1d955a81824a16a7099f6bbeebb Mon Sep 17 00:00:00 2001 From: ggurdin Date: Mon, 8 Jul 2024 10:43:31 -0400 Subject: [PATCH 7/7] some formatting fixes --- lib/pages/chat/chat.dart | 106 ++++++++++-------- lib/pages/settings/settings_view.dart | 89 +++++++-------- .../controllers/my_analytics_controller.dart | 103 +++++++++-------- lib/pangea/utils/error_handler.dart | 6 +- 4 files changed, 161 insertions(+), 143 deletions(-) diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 07a20b287..f998b62b3 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -43,9 +43,9 @@ import 'package:go_router/go_router.dart'; import 'package:image_picker/image_picker.dart'; import 'package:matrix/matrix.dart'; import 'package:scroll_to_index/scroll_to_index.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:universal_html/html.dart' as html; -import 'package:sentry_flutter/sentry_flutter.dart'; import '../../utils/account_bundles.dart'; import '../../utils/localized_exception_extension.dart'; @@ -482,35 +482,46 @@ class ChatController extends State Future? _setReadMarkerFuture; void setReadMarker({String? eventId}) { - if (_setReadMarkerFuture != null) return; - if (_scrolledUp) return; - if (scrollUpBannerEventId != null) return; - if (eventId == null && !room.hasNewMessages && room.notificationCount == 0) { - return; - } + if (_setReadMarkerFuture != null) return; + if (_scrolledUp) return; + if (scrollUpBannerEventId != null) return; + if (eventId == null && + !room.hasNewMessages && + room.notificationCount == 0) { + return; + } - // Do not send read markers when app is not in foreground - // #Pangea - try { - // Pangea# - if (kIsWeb && !Matrix.of(context).webHasFocus) return; + // Do not send read markers when app is not in foreground // #Pangea - } catch (err, s) { - ErrorHandler.logError(e: PangeaWarningError("Web focus error: $err"), s: s); - return; - } - // Pangea# - if (!kIsWeb && WidgetsBinding.instance.lifecycleState != AppLifecycleState.resumed) { - return; - } + try { + // Pangea# + if (kIsWeb && !Matrix.of(context).webHasFocus) return; + // #Pangea + } catch (err, s) { + ErrorHandler.logError( + e: PangeaWarningError("Web focus error: $err"), + s: s, + ); + return; + } + // Pangea# + if (!kIsWeb && + WidgetsBinding.instance.lifecycleState != AppLifecycleState.resumed) { + return; + } - final timeline = this.timeline; - if (timeline == null || timeline.events.isEmpty) { - ErrorHandler.logError(e: PangeaWarningError("Timeline is null or empty"), s: StackTrace.current); - return; - } + final timeline = this.timeline; + if (timeline == null || timeline.events.isEmpty) { + // #Pangea + ErrorHandler.logError( + e: PangeaWarningError("Timeline is null or empty"), + s: StackTrace.current, + ); + // Pangea# + return; + } - Logs().d('Set read marker...', eventId); + Logs().d('Set read marker...', eventId); // ignore: unawaited_futures _setReadMarkerFuture = timeline .setReadMarker( @@ -519,27 +530,32 @@ class ChatController extends State ) .then((_) { _setReadMarkerFuture = null; - }).catchError((e, s) { - ErrorHandler.logError( - e: PangeaWarningError("Failed to set read marker: $e"), - s: s, - m: 'Failed to set read marker for eventId: $eventId', - ); - Sentry.captureException( - e, - stackTrace: s, - withScope: (scope) { - scope.setExtra('extra_info', 'Failed during setReadMarker with eventId: $eventId'); - scope.setTag('where', 'setReadMarker'); - }, - ); - }); + }) + // #Pangea + .catchError((e, s) { + ErrorHandler.logError( + e: PangeaWarningError("Failed to set read marker: $e"), + s: s, + m: 'Failed to set read marker for eventId: $eventId', + ); + Sentry.captureException( + e, + stackTrace: s, + withScope: (scope) { + scope.setExtra( + 'extra_info', + 'Failed during setReadMarker with eventId: $eventId', + ); + scope.setTag('where', 'setReadMarker'); + }, + ); + }); + // Pangea# - if (eventId == null || eventId == timeline.room.lastEvent?.eventId) { - Matrix.of(context).backgroundPush?.cancelNotification(roomId); + if (eventId == null || eventId == timeline.room.lastEvent?.eventId) { + Matrix.of(context).backgroundPush?.cancelNotification(roomId); + } } -} - @override void dispose() { diff --git a/lib/pages/settings/settings_view.dart b/lib/pages/settings/settings_view.dart index 06e4855ec..c7e9d6e64 100644 --- a/lib/pages/settings/settings_view.dart +++ b/lib/pages/settings/settings_view.dart @@ -8,10 +8,8 @@ import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; -import 'package:url_launcher/url_launcher_string.dart'; - import 'package:package_info_plus/package_info_plus.dart'; //adding to check app version - +import 'package:url_launcher/url_launcher_string.dart'; import 'settings.dart'; @@ -20,13 +18,13 @@ class SettingsView extends StatelessWidget { const SettingsView(this.controller, {super.key}); + // #Pangea Future getAppVersion(BuildContext context) async { - PackageInfo packageInfo = await PackageInfo.fromPlatform(); - return L10n.of(context)!.versionText(packageInfo.version, packageInfo.buildNumber); -} - - - + final PackageInfo packageInfo = await PackageInfo.fromPlatform(); + return L10n.of(context)! + .versionText(packageInfo.version, packageInfo.buildNumber); + } + // Pangea# @override Widget build(BuildContext context) { @@ -55,8 +53,6 @@ class SettingsView extends StatelessWidget { key: const Key('SettingsListViewContent'), children: [ FutureBuilder( - - future: controller.profileFuture, builder: (context, snapshot) { final profile = snapshot.data; @@ -149,8 +145,6 @@ class SettingsView extends StatelessWidget { ], ); }, - - ), // #Pangea // Divider( @@ -260,40 +254,41 @@ class SettingsView extends StatelessWidget { // onTap: () => PlatformInfos.showDialog(context), // trailing: const Icon(Icons.chevron_right_outlined), // ), - ListTile( - leading: const Icon(Icons.shield_outlined), - title: Text(L10n.of(context)!.termsAndConditions), - onTap: () => launchUrlString(AppConfig.termsOfServiceUrl), - trailing: const Icon(Icons.open_in_new_outlined), - ), - // Adding the FutureBuilder here - FutureBuilder( - future: getAppVersion(context), - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.done) { - return ListTile( - leading: Icon(Icons.info_outline), - title: Text(snapshot.data ?? L10n.of(context)!.versionNotFound), - ); - } else if (snapshot.hasError) { - return ListTile( - leading: Icon(Icons.error_outline), - title: Text(L10n.of(context)!.versionFetchError), - ); - } else { - return ListTile( - leading: CircularProgressIndicator(), - title: Text(L10n.of(context)!.fetchingVersion), - ); - } - }, - ), - // Conditional ListTile based on the environment (staging or not) - if (Environment.isStaging) - ListTile( - leading: const Icon(Icons.bug_report_outlined), - title: Text(L10n.of(context)!.connectedToStaging), - ), + ListTile( + leading: const Icon(Icons.shield_outlined), + title: Text(L10n.of(context)!.termsAndConditions), + onTap: () => launchUrlString(AppConfig.termsOfServiceUrl), + trailing: const Icon(Icons.open_in_new_outlined), + ), + FutureBuilder( + future: getAppVersion(context), + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + return ListTile( + leading: const Icon(Icons.info_outline), + title: Text( + snapshot.data ?? L10n.of(context)!.versionNotFound, + ), + ); + } else if (snapshot.hasError) { + return ListTile( + leading: const Icon(Icons.error_outline), + title: Text(L10n.of(context)!.versionFetchError), + ); + } else { + return ListTile( + leading: const CircularProgressIndicator(), + title: Text(L10n.of(context)!.fetchingVersion), + ); + } + }, + ), + // Conditional ListTile based on the environment (staging or not) + if (Environment.isStaging) + ListTile( + leading: const Icon(Icons.bug_report_outlined), + title: Text(L10n.of(context)!.connectedToStaging), + ), // Pangea# ], ), diff --git a/lib/pangea/controllers/my_analytics_controller.dart b/lib/pangea/controllers/my_analytics_controller.dart index 88d5ee1d2..f7017ad0e 100644 --- a/lib/pangea/controllers/my_analytics_controller.dart +++ b/lib/pangea/controllers/my_analytics_controller.dart @@ -114,7 +114,7 @@ class MyAnalyticsController { // adds an event ID to the cache of un-added event IDs // if the event IDs isn't already added void addMessageSinceUpdate(String eventId) { - try{ + try { final List currentCache = messagesSinceUpdate; if (!currentCache.contains(eventId)) { currentCache.add(eventId); @@ -130,20 +130,23 @@ class MyAnalyticsController { debugPrint("reached max messages, updating"); updateAnalytics(); } - } catch (exception, stackTrace) { - ErrorHandler.logError( - e: PangeaWarningError("Failed to add message since update: $exception"), - s: stackTrace, - m: 'Failed to add message since update for eventId: $eventId' - ); - Sentry.captureException( - exception, - stackTrace: stackTrace, - withScope: (scope) { - scope.setExtra('extra_info', 'Failed during addMessageSinceUpdate with eventId: $eventId'); - scope.setTag('where', 'addMessageSinceUpdate'); - } - ); + } catch (exception, stackTrace) { + ErrorHandler.logError( + e: PangeaWarningError("Failed to add message since update: $exception"), + s: stackTrace, + m: 'Failed to add message since update for eventId: $eventId', + ); + Sentry.captureException( + exception, + stackTrace: stackTrace, + withScope: (scope) { + scope.setExtra( + 'extra_info', + 'Failed during addMessageSinceUpdate with eventId: $eventId', + ); + scope.setTag('where', 'addMessageSinceUpdate'); + }, + ); } } @@ -161,44 +164,48 @@ class MyAnalyticsController { // It's a proxy measure for messages sent since last update List get messagesSinceUpdate { try { - Logs().d('Reading messages since update from local storage'); - final dynamic locallySaved = _pangeaController.pStoreService.read( + Logs().d('Reading messages since update from local storage'); + final dynamic locallySaved = _pangeaController.pStoreService.read( + PLocalKey.messagesSinceUpdate, + local: true, + ); + if (locallySaved == null) { + Logs().d('No locally saved messages found, initializing empty list.'); + _pangeaController.pStoreService.save( PLocalKey.messagesSinceUpdate, + [], local: true, ); - if (locallySaved == null) { - Logs().d('No locally saved messages found, initializing empty list.'); - _pangeaController.pStoreService.save( - PLocalKey.messagesSinceUpdate, - [], - local: true, - ); - return []; - } - return locallySaved as List; - } catch (exception, stackTrace) { - ErrorHandler.logError( - e: PangeaWarningError("Failed to get messages since update: $exception"), - s: stackTrace, - m: 'Failed to retrieve messages since update' - ); - Sentry.captureException( - exception, - stackTrace: stackTrace, - withScope: (scope) { - scope.setExtra('extra_info', 'Error during messagesSinceUpdate getter'); - scope.setTag('where', 'messagesSinceUpdate'); - } - ); - _pangeaController.pStoreService.save( - PLocalKey.messagesSinceUpdate, - [], - local: true, - ); return []; + } + return locallySaved.cast(); + } catch (exception, stackTrace) { + ErrorHandler.logError( + e: PangeaWarningError( + "Failed to get messages since update: $exception", + ), + s: stackTrace, + m: 'Failed to retrieve messages since update', + ); + Sentry.captureException( + exception, + stackTrace: stackTrace, + withScope: (scope) { + scope.setExtra( + 'extra_info', + 'Error during messagesSinceUpdate getter', + ); + scope.setTag('where', 'messagesSinceUpdate'); + }, + ); + _pangeaController.pStoreService.save( + PLocalKey.messagesSinceUpdate, + [], + local: true, + ); + return []; } -} - + } Completer? _updateCompleter; Future updateAnalytics() async { diff --git a/lib/pangea/utils/error_handler.dart b/lib/pangea/utils/error_handler.dart index eb406d48a..65f73c15b 100644 --- a/lib/pangea/utils/error_handler.dart +++ b/lib/pangea/utils/error_handler.dart @@ -11,6 +11,9 @@ import 'package:sentry_flutter/sentry_flutter.dart'; class PangeaWarningError implements Exception { final String message; PangeaWarningError(message) : message = "Pangea Warning Error: $message"; + + @override + String toString() => message; } class ErrorHandler { @@ -60,8 +63,6 @@ class ErrorHandler { if (m != null) debugPrint("error message: $m"); } - if ((e ?? m) != null) debugPrint("error to string: ${e?.toString() ?? m}"); - if (data != null) { Sentry.addBreadcrumb(Breadcrumb.fromJson(data)); debugPrint(data.toString()); @@ -75,7 +76,6 @@ class ErrorHandler { }, ); } - } class ErrorCopy {