Add glitchtip for centralized error logging

This commit is contained in:
2026-07-30 02:32:30 +02:00
parent 498ad68e1c
commit c210f80f27
15 changed files with 416 additions and 193 deletions
+69 -50
View File
@@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:intl/date_symbol_data_local.dart';
@@ -10,6 +11,7 @@ import 'package:kooltab2/viewmodels/inventory_view_model.dart';
import 'package:kooltab2/viewmodels/pin_lock_view_model.dart';
import 'package:kooltab2/viewmodels/settings_view_model.dart';
import 'package:provider/provider.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'app/app.dart';
import 'app/app_bootstrap.dart';
@@ -41,60 +43,77 @@ Future<void> main() async {
final appRouter = createAppRouter(pinLockViewModel);
runApp(
MultiProvider(
providers: [
Provider<AppDatabase>.value(value: database),
Provider<ProductService>(
create: (context) =>
DriftProductService(database: context.read<AppDatabase>()),
),
Provider<BarTabService>(
create: (context) =>
DriftBarTabService(database: context.read<AppDatabase>()),
),
Provider<SettingsService>(
create: (context) =>
DriftSettingsService(database: context.read<AppDatabase>()),
),
ChangeNotifierProvider<InventoryViewModel>(
create: (context) =>
InventoryViewModel(productService: context.read<ProductService>())
..load(),
),
ChangeNotifierProvider<ProductListViewModel>(
create: (context) => ProductListViewModel(
productService: context.read<ProductService>(),
inventory: context.read<InventoryViewModel>(),
await SentryFlutter.init(
(options) {
options.dsn =
'https://2c31c1baf3ee495288ad08a56d7baf0e@glitchtip.brammie15.dev/1';
options.tracesSampleRate = kReleaseMode ? 0.1 : 1.0;
options.enableAutoSessionTracking = false;
options.attachScreenshot = true;
options.attachViewHierarchy = true;
options.enableLogs = true;
options.attachThreads = true;
options.replay.onErrorSampleRate = 1.0;
options.replay.sessionSampleRate = 0.05;
},
appRunner: () => runApp(
MultiProvider(
providers: [
Provider<AppDatabase>.value(value: database),
Provider<ProductService>(
create: (context) =>
DriftProductService(database: context.read<AppDatabase>()),
),
),
ChangeNotifierProvider<BarScreenViewModel>(
create: (context) => BarScreenViewModel(
barTabService: context.read<BarTabService>(),
inventory: context.read<InventoryViewModel>(),
Provider<BarTabService>(
create: (context) =>
DriftBarTabService(database: context.read<AppDatabase>()),
),
),
ChangeNotifierProvider<HistoryViewModel>(
create: (context) =>
HistoryViewModel(barTabService: context.read<BarTabService>()),
),
ChangeNotifierProvider<PinLockViewModel>.value(value: pinLockViewModel),
ChangeNotifierProvider<SettingsViewModel>(
create: (context) => SettingsViewModel(
settingsService: context.read<SettingsService>(),
Provider<SettingsService>(
create: (context) =>
DriftSettingsService(database: context.read<AppDatabase>()),
),
),
ChangeNotifierProvider<DevMenuViewModel>(
create: (context) => DevMenuViewModel(
database: context.read<AppDatabase>(),
productService: context.read<ProductService>(),
barTabService: context.read<BarTabService>(),
settingsService: context.read<SettingsService>(),
pinLockService: PinLockService(),
ChangeNotifierProvider<InventoryViewModel>(
create: (context) => InventoryViewModel(
productService: context.read<ProductService>(),
)..load(),
),
),
],
child: AppBootstrap(child: KoolTabApp(router: appRouter)),
ChangeNotifierProvider<ProductListViewModel>(
create: (context) => ProductListViewModel(
productService: context.read<ProductService>(),
inventory: context.read<InventoryViewModel>(),
),
),
ChangeNotifierProvider<BarScreenViewModel>(
create: (context) => BarScreenViewModel(
barTabService: context.read<BarTabService>(),
inventory: context.read<InventoryViewModel>(),
),
),
ChangeNotifierProvider<HistoryViewModel>(
create: (context) =>
HistoryViewModel(barTabService: context.read<BarTabService>()),
),
ChangeNotifierProvider<PinLockViewModel>.value(
value: pinLockViewModel,
),
ChangeNotifierProvider<SettingsViewModel>(
create: (context) => SettingsViewModel(
settingsService: context.read<SettingsService>(),
),
),
ChangeNotifierProvider<DevMenuViewModel>(
create: (context) => DevMenuViewModel(
database: context.read<AppDatabase>(),
productService: context.read<ProductService>(),
barTabService: context.read<BarTabService>(),
settingsService: context.read<SettingsService>(),
pinLockService: PinLockService(),
),
),
],
child: AppBootstrap(child: KoolTabApp(router: appRouter)),
),
),
);
}