feat: add alot
This commit is contained in:
+103
-112
@@ -3,15 +3,6 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:intl/date_symbol_data_local.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:kooltab2/services/pin_lock_service.dart';
|
||||
import 'package:kooltab2/services/remote_sync_service.dart';
|
||||
import 'package:kooltab2/services/settings_service.dart';
|
||||
import 'package:kooltab2/viewmodels/dev_menu_view_model.dart';
|
||||
import 'package:kooltab2/viewmodels/history_view_model.dart';
|
||||
import 'package:kooltab2/viewmodels/inventory_view_model.dart';
|
||||
import 'package:kooltab2/viewmodels/pin_lock_view_model.dart';
|
||||
import 'package:kooltab2/viewmodels/registration_view_model.dart';
|
||||
import 'package:kooltab2/viewmodels/settings_view_model.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
|
||||
@@ -21,15 +12,45 @@ import 'app/router.dart';
|
||||
import 'database/app_database.dart';
|
||||
import 'services/admin_pin_service.dart';
|
||||
import 'services/bar_tab_service.dart';
|
||||
import 'services/kooltap_api_client.dart';
|
||||
import 'services/pin_lock_service.dart';
|
||||
import 'services/product_service.dart';
|
||||
import 'viewmodels/bar_screen_view_model.dart';
|
||||
import 'services/remote_sync_service.dart';
|
||||
import 'services/settings_service.dart';
|
||||
import 'viewmodels/admin_pin_view_model.dart';
|
||||
import 'viewmodels/bar_screen_view_model.dart';
|
||||
import 'viewmodels/dev_menu_view_model.dart';
|
||||
import 'viewmodels/history_view_model.dart';
|
||||
import 'viewmodels/inventory_view_model.dart';
|
||||
import 'viewmodels/pin_lock_view_model.dart';
|
||||
import 'viewmodels/product_list_view_model.dart';
|
||||
import 'viewmodels/registration_view_model.dart';
|
||||
import 'viewmodels/remote_sync_view_model.dart';
|
||||
import 'viewmodels/settings_view_model.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
// Initialized first so errors during startup are reported too.
|
||||
await SentryFlutter.init((options) {
|
||||
options.dsn =
|
||||
'https://2c31c1baf3ee495288ad08a56d7baf0e@glitchtip.brammie15.dev/1';
|
||||
options.tracesSampleRate = kReleaseMode ? 0.1 : 1.0;
|
||||
options.enableAutoSessionTracking = false;
|
||||
options.attachViewHierarchy = true;
|
||||
options.enableLogs = true;
|
||||
options.attachThreads = true;
|
||||
|
||||
// Screens show customer names; replays mask all text and images.
|
||||
options.attachScreenshot = false;
|
||||
options.privacy.maskAllText = true;
|
||||
options.privacy.maskAllImages = true;
|
||||
options.replay.onErrorSampleRate = 1.0;
|
||||
options.replay.sessionSampleRate = 0.05;
|
||||
}, appRunner: _runApp);
|
||||
}
|
||||
|
||||
Future<void> _runApp() async {
|
||||
await initializeDateFormatting('nl_BE', null);
|
||||
Intl.defaultLocale = 'nl_BE';
|
||||
|
||||
@@ -39,125 +60,95 @@ Future<void> main() async {
|
||||
]);
|
||||
|
||||
final database = AppDatabase();
|
||||
|
||||
final pinLockViewModel = PinLockViewModel(
|
||||
pinLockService: PinLockService(),
|
||||
settingsService: DriftSettingsService(database: database),
|
||||
);
|
||||
await pinLockViewModel.ensureLoaded();
|
||||
|
||||
final adminPinViewModel = AdminPinViewModel(
|
||||
adminPinService: AdminPinService(),
|
||||
);
|
||||
await adminPinViewModel.ensureLoaded();
|
||||
final productService = DriftProductService(database: database);
|
||||
final barTabService = DriftBarTabService(database: database);
|
||||
final settingsService = DriftSettingsService(database: database);
|
||||
final pinLockService = PinLockService();
|
||||
final apiClient = KoolTapApiClient();
|
||||
|
||||
final remoteSyncService = RemoteSyncService(
|
||||
database: database,
|
||||
barTabService: DriftBarTabService(database: database),
|
||||
barTabService: barTabService,
|
||||
apiClient: apiClient,
|
||||
);
|
||||
|
||||
final pinLockViewModel = PinLockViewModel(
|
||||
pinLockService: pinLockService,
|
||||
settingsService: settingsService,
|
||||
);
|
||||
final adminPinViewModel = AdminPinViewModel(
|
||||
adminPinService: AdminPinService(),
|
||||
);
|
||||
final remoteSyncViewModel = RemoteSyncViewModel(
|
||||
syncService: remoteSyncService,
|
||||
);
|
||||
|
||||
final isConfiguredNotifier = ValueNotifier<bool>(await remoteSyncService.isConfigured);
|
||||
|
||||
remoteSyncViewModel.addListener(() {
|
||||
isConfiguredNotifier.value = remoteSyncViewModel.isConfigured;
|
||||
});
|
||||
|
||||
final registrationViewModel = RegistrationViewModel(
|
||||
syncService: remoteSyncService,
|
||||
);
|
||||
// The router's first redirect depends on these.
|
||||
await Future.wait([
|
||||
pinLockViewModel.ensureLoaded(),
|
||||
adminPinViewModel.ensureLoaded(),
|
||||
remoteSyncViewModel.init(),
|
||||
]);
|
||||
|
||||
final appRouter = createAppRouter(
|
||||
pinLockViewModel,
|
||||
pinLockViewModel: pinLockViewModel,
|
||||
adminPinViewModel: adminPinViewModel,
|
||||
isConfiguredNotifier: isConfiguredNotifier,
|
||||
remoteSyncViewModel: remoteSyncViewModel,
|
||||
);
|
||||
|
||||
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>()),
|
||||
runApp(
|
||||
MultiProvider(
|
||||
providers: [
|
||||
Provider<AppDatabase>.value(value: database),
|
||||
Provider<ProductService>.value(value: productService),
|
||||
Provider<BarTabService>.value(value: barTabService),
|
||||
Provider<SettingsService>.value(value: settingsService),
|
||||
Provider<RemoteSyncService>(
|
||||
create: (_) => remoteSyncService,
|
||||
dispose: (_, service) => service.dispose(),
|
||||
),
|
||||
ChangeNotifierProvider<RemoteSyncViewModel>.value(
|
||||
value: remoteSyncViewModel,
|
||||
),
|
||||
ChangeNotifierProvider<RegistrationViewModel>(
|
||||
create: (_) => RegistrationViewModel(
|
||||
apiClient: apiClient,
|
||||
syncService: remoteSyncService,
|
||||
),
|
||||
Provider<BarTabService>(
|
||||
create: (context) =>
|
||||
DriftBarTabService(database: context.read<AppDatabase>()),
|
||||
),
|
||||
ChangeNotifierProvider<InventoryViewModel>(
|
||||
create: (_) => InventoryViewModel(productService: productService),
|
||||
),
|
||||
ChangeNotifierProvider<ProductListViewModel>(
|
||||
create: (context) => ProductListViewModel(
|
||||
productService: productService,
|
||||
inventory: context.read<InventoryViewModel>(),
|
||||
),
|
||||
Provider<SettingsService>(
|
||||
create: (context) =>
|
||||
DriftSettingsService(database: context.read<AppDatabase>()),
|
||||
),
|
||||
ChangeNotifierProvider<BarScreenViewModel>(
|
||||
create: (_) => BarScreenViewModel(barTabService: barTabService),
|
||||
),
|
||||
ChangeNotifierProvider<HistoryViewModel>(
|
||||
create: (_) => HistoryViewModel(barTabService: barTabService),
|
||||
),
|
||||
ChangeNotifierProvider<PinLockViewModel>.value(value: pinLockViewModel),
|
||||
ChangeNotifierProvider<AdminPinViewModel>.value(
|
||||
value: adminPinViewModel,
|
||||
),
|
||||
ChangeNotifierProvider<SettingsViewModel>(
|
||||
create: (_) => SettingsViewModel(settingsService: settingsService),
|
||||
),
|
||||
ChangeNotifierProvider<DevMenuViewModel>(
|
||||
create: (_) => DevMenuViewModel(
|
||||
database: database,
|
||||
productService: productService,
|
||||
barTabService: barTabService,
|
||||
settingsService: settingsService,
|
||||
pinLockService: pinLockService,
|
||||
),
|
||||
Provider<RemoteSyncService>.value(value: remoteSyncService),
|
||||
ChangeNotifierProvider<RemoteSyncViewModel>.value(
|
||||
value: remoteSyncViewModel,
|
||||
),
|
||||
ChangeNotifierProvider<RegistrationViewModel>.value(
|
||||
value: registrationViewModel,
|
||||
),
|
||||
ChangeNotifierProvider<InventoryViewModel>(
|
||||
create: (context) => InventoryViewModel(
|
||||
productService: context.read<ProductService>(),
|
||||
)..load(),
|
||||
),
|
||||
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>(),
|
||||
remoteSyncViewModel: context.read<RemoteSyncViewModel>(),
|
||||
),
|
||||
),
|
||||
ChangeNotifierProvider<HistoryViewModel>(
|
||||
create: (context) =>
|
||||
HistoryViewModel(barTabService: context.read<BarTabService>()),
|
||||
),
|
||||
ChangeNotifierProvider<PinLockViewModel>.value(
|
||||
value: pinLockViewModel,
|
||||
),
|
||||
ChangeNotifierProvider<AdminPinViewModel>.value(
|
||||
value: adminPinViewModel,
|
||||
),
|
||||
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)),
|
||||
),
|
||||
),
|
||||
],
|
||||
child: AppBootstrap(child: KoolTapApp(router: appRouter)),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user