wrap whole main function into sentry

This commit is contained in:
otsmr 2025-11-10 14:37:44 +01:00
parent 4ff42c93b7
commit 2a9414ae4f
5 changed files with 69 additions and 59 deletions

View file

@ -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(),
),
);

View file

@ -213,7 +213,7 @@ Future<void> 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) {

View file

@ -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;
}
}

View file

@ -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,7 +225,13 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
);
}
if (Platform.isAndroid) {
androidVolumeDownSub = FlutterAndroidVolumeKeydown.stream.listen((event) {
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 {
@ -234,6 +241,7 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
});
}
}
}
Future<void> deInitVolumeControl() async {
if (Platform.isIOS) {

View file

@ -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