import 'package:fl_lib/fl_lib.dart'; import 'package:get_it/get_it.dart'; import 'package:server_box/data/store/container.dart'; import 'package:server_box/data/store/history.dart'; import 'package:server_box/data/store/private_key.dart'; import 'package:server_box/data/store/server.dart'; import 'package:server_box/data/store/setting.dart'; import 'package:server_box/data/store/snippet.dart'; final GetIt getIt = GetIt.instance; abstract final class Stores { static SettingStore get setting => getIt(); static ServerStore get server => getIt(); static ContainerStore get container => getIt(); static PrivateKeyStore get key => getIt(); static SnippetStore get snippet => getIt(); static HistoryStore get history => getIt(); /// All stores that need backup static List get _allBackup => [ setting, server, container, key, snippet, history, ]; static Future init() async { getIt.registerLazySingleton(() => SettingStore.instance); getIt.registerLazySingleton(() => ServerStore.instance); getIt.registerLazySingleton(() => ContainerStore.instance); getIt.registerLazySingleton(() => PrivateKeyStore.instance); getIt.registerLazySingleton(() => SnippetStore.instance); getIt.registerLazySingleton(() => HistoryStore.instance); await Future.wait(_allBackup.map((store) => store.init())); } static int get lastModTime { var lastModTime = 0; for (final store in _allBackup) { final last = store.lastUpdateTs; if (last == null) { continue; } var lastModTimeTs = 0; for (final item in last.entries) { final ts = item.value; if (ts > lastModTimeTs) { lastModTimeTs = ts; } } if (lastModTimeTs > lastModTime) { lastModTime = lastModTimeTs; } } return lastModTime; } }