From 2a9414ae4f449633fc80714f08c7929192e39783 Mon Sep 17 00:00:00 2001 From: otsmr Date: Mon, 10 Nov 2025 14:37:44 +0100 Subject: [PATCH] wrap whole main function into sentry --- lib/main.dart | 99 ++++++++++--------- .../create_backup.twonly_safe.dart | 2 +- lib/src/utils/misc.dart | 1 - .../camera_preview_controller_view.dart | 24 +++-- pubspec.yaml | 2 +- 5 files changed, 69 insertions(+), 59 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 76b2f4d..92bd6d0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,6 +4,8 @@ import 'dart:async'; import 'dart:io'; import 'package:camera/camera.dart'; +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:path/path.dart'; @@ -27,29 +29,7 @@ import 'package:twonly/src/utils/log.dart'; import 'package:twonly/src/utils/storage.dart'; void main() async { - WidgetsFlutterBinding.ensureInitialized(); - try { - await initFCMService(); - } catch (e) { - Log.error('$e'); - } - - initLogger(); - - final user = await getUser(); - if (user != null) { - gUser = user; - unawaited(performTwonlySafeBackup()); - } - - final settingsController = SettingsChangeProvider(); - - await settingsController.loadSettings(); - await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); - - unawaited(setupPushNotification()); - - gCameras = await availableCameras(); + SentryWidgetsFlutterBinding.ensureInitialized(); // try { // File(join((await getApplicationSupportDirectory()).path, 'twonly.sqlite')) @@ -60,44 +40,67 @@ void main() async { // return u; // }); - apiService = ApiService(); - twonlyDB = TwonlyDB(); - - await initFileDownloader(); - unawaited(finishStartedPreprocessing()); - - unawaited(MediaFileService.purgeTempFolder()); - unawaited(createPushAvatars()); - await twonlyDB.messagesDao.purgeMessageTable(); - - final providers = [ - ChangeNotifierProvider(create: (_) => settingsController), - ChangeNotifierProvider(create: (_) => CustomChangeProvider()), - ChangeNotifierProvider(create: (_) => ImageEditorProvider()), - ]; - + final user = await getUser(); if (user != null) { + gUser = user; + if (user.allowErrorTrackingViaSentry) { globalAllowErrorTrackingViaSentry = true; - return SentryFlutter.init( + await SentryFlutter.init( (options) => options ..dsn = 'https://6b24a012c85144c9b522440a1d17d01c@glitchtip.twonly.eu/4' - ..tracesSampleRate = 0.01 + ..tracesSampleRate = 0.1 ..enableAutoSessionTracking = false, - appRunner: () => runApp( - MultiProvider( - providers: providers, - child: const App(), - ), - ), ); } + + unawaited(performTwonlySafeBackup()); } + await initFCMService(); + + initLogger(); + + final settingsController = SettingsChangeProvider(); + + await settingsController.loadSettings(); + await SystemChrome.setPreferredOrientations( + [DeviceOrientation.portraitUp], + ); + + unawaited(setupPushNotification()); + + gCameras = await availableCameras(); + + apiService = ApiService(); + twonlyDB = TwonlyDB(); + + await twonlyDB.messagesDao.purgeMessageTable(); + unawaited(MediaFileService.purgeTempFolder()); + + await initFileDownloader(); + if (Platform.isAndroid) { + if ((await DeviceInfoPlugin().androidInfo).version.release == '9') { + Future.delayed(const Duration(seconds: 20), () { + unawaited(finishStartedPreprocessing()); + }); + } else { + unawaited(finishStartedPreprocessing()); + } + } else { + unawaited(finishStartedPreprocessing()); + } + + unawaited(createPushAvatars()); + runApp( MultiProvider( - providers: providers, + providers: [ + ChangeNotifierProvider(create: (_) => settingsController), + ChangeNotifierProvider(create: (_) => CustomChangeProvider()), + ChangeNotifierProvider(create: (_) => ImageEditorProvider()), + ], child: const App(), ), ); diff --git a/lib/src/services/twonly_safe/create_backup.twonly_safe.dart b/lib/src/services/twonly_safe/create_backup.twonly_safe.dart index 21212ec..434b9d5 100644 --- a/lib/src/services/twonly_safe/create_backup.twonly_safe.dart +++ b/lib/src/services/twonly_safe/create_backup.twonly_safe.dart @@ -213,7 +213,7 @@ Future handleBackupStatusUpdate(TaskStatusUpdate update) async { return user; }); } else if (update.status == TaskStatus.complete) { - Log.error( + Log.info( 'twonly Backup uploaded with status code ${update.responseStatusCode}', ); await updateUserdata((user) { diff --git a/lib/src/utils/misc.dart b/lib/src/utils/misc.dart index 2b8f8dd..da0f505 100644 --- a/lib/src/utils/misc.dart +++ b/lib/src/utils/misc.dart @@ -264,7 +264,6 @@ bool isUUIDNewer(String uuid1, String uuid2) { final timestamp2 = int.parse(uuid2.substring(0, 8), radix: 16); return timestamp1 > timestamp2; } catch (e) { - Log.error(e); return false; } } diff --git a/lib/src/views/camera/camera_preview_controller_view.dart b/lib/src/views/camera/camera_preview_controller_view.dart index c3c7b77..49fee04 100644 --- a/lib/src/views/camera/camera_preview_controller_view.dart +++ b/lib/src/views/camera/camera_preview_controller_view.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; import 'package:camera/camera.dart'; +import 'package:device_info_plus/device_info_plus.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_android_volume_keydown/flutter_android_volume_keydown.dart'; @@ -224,14 +225,21 @@ class _CameraPreviewViewState extends State { ); } if (Platform.isAndroid) { - androidVolumeDownSub = FlutterAndroidVolumeKeydown.stream.listen((event) { - if (widget.isVisible) { - takePicture(); - } else { - deInitVolumeControl(); - return; - } - }); + if ((await DeviceInfoPlugin().androidInfo).version.release == '9') { + // MissingPluginException: MissingPluginException(No implementation found for method cancel on channel dart-tools.dev/flutter_… + // Maybe this is the reason? + return; + } else { + androidVolumeDownSub = + FlutterAndroidVolumeKeydown.stream.listen((event) { + if (widget.isVisible) { + takePicture(); + } else { + deInitVolumeControl(); + return; + } + }); + } } } diff --git a/pubspec.yaml b/pubspec.yaml index 89a411c..6efaa60 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,7 +3,7 @@ description: "twonly, a privacy-friendly way to connect with friends through sec publish_to: 'none' -version: 0.0.67+67 +version: 0.0.68+68 environment: sdk: ^3.6.0