diff --git a/lib/foundation/app.dart b/lib/foundation/app.dart index 91b6509..d575d26 100644 --- a/lib/foundation/app.dart +++ b/lib/foundation/app.dart @@ -3,8 +3,11 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:venera/foundation/history.dart'; import 'appdata.dart'; +import 'favorites.dart'; +import 'local.dart'; export "widget_utils.dart"; export "context.dart"; @@ -51,6 +54,14 @@ class _App { BuildContext get rootContext => rootNavigatorKey.currentContext!; + final Appdata data = appdata; + + final HistoryManager history = HistoryManager(); + + final LocalFavoritesManager favorites = LocalFavoritesManager(); + + final LocalManager local = LocalManager(); + void rootPop() { rootNavigatorKey.currentState?.maybePop(); } @@ -66,6 +77,10 @@ class _App { Future init() async { cachePath = (await getApplicationCacheDirectory()).path; dataPath = (await getApplicationSupportDirectory()).path; + await data.init(); + await history.init(); + await favorites.init(); + await local.init(); } Function? _forceRebuildHandler; diff --git a/lib/foundation/appdata.dart b/lib/foundation/appdata.dart index a44c052..4b93e29 100644 --- a/lib/foundation/appdata.dart +++ b/lib/foundation/appdata.dart @@ -6,8 +6,8 @@ import 'package:venera/foundation/app.dart'; import 'package:venera/utils/data_sync.dart'; import 'package:venera/utils/io.dart'; -class _Appdata { - final _Settings settings = _Settings(); +class Appdata { + final Settings settings = Settings(); var searchHistory = []; @@ -110,10 +110,10 @@ class _Appdata { } } -final appdata = _Appdata(); +final appdata = Appdata(); -class _Settings with ChangeNotifier { - _Settings(); +class Settings with ChangeNotifier { + Settings(); final _data = { 'comicDisplayMode': 'detailed', // detailed, brief diff --git a/lib/init.dart b/lib/init.dart index 972d857..6f8bcda 100644 --- a/lib/init.dart +++ b/lib/init.dart @@ -4,10 +4,7 @@ import 'package:rhttp/rhttp.dart'; import 'package:venera/foundation/app.dart'; import 'package:venera/foundation/cache_manager.dart'; import 'package:venera/foundation/comic_source/comic_source.dart'; -import 'package:venera/foundation/favorites.dart'; -import 'package:venera/foundation/history.dart'; import 'package:venera/foundation/js_engine.dart'; -import 'package:venera/foundation/local.dart'; import 'package:venera/foundation/log.dart'; import 'package:venera/network/cookie_jar.dart'; import 'package:venera/pages/comic_source_page.dart'; @@ -32,25 +29,18 @@ extension _FutureInit on Future { } Future init() async { - await Rhttp.init(); - await SAFTaskWorker().init().wait(); - await AppTranslation.init().wait(); - await appdata.init().wait(); await App.init().wait(); - await HistoryManager().init().wait(); - await TagsTranslation.readData().wait(); - await LocalFavoritesManager().init().wait(); SingleInstanceCookieJar("${App.dataPath}/cookie.db"); - await JsEngine().init().wait(); - await ComicSource.init().wait(); - await LocalManager().init().wait(); + var futures = [ + Rhttp.init(), + SAFTaskWorker().init().wait(), + AppTranslation.init().wait(), + TagsTranslation.readData().wait(), + JsEngine().init().then((_) => ComicSource.init()).wait(), + ]; + await Future.wait(futures); CacheManager().setLimitSize(appdata.settings['cacheSize']); - if (appdata.settings['searchSources'] == null) { - appdata.settings['searchSources'] = ComicSource.all() - .where((e) => e.searchPageData != null) - .map((e) => e.key) - .toList(); - } + _checkOldConfigs(); if (App.isAndroid) { handleLinks(); } @@ -59,6 +49,15 @@ Future init() async { }; } +void _checkOldConfigs() { + if (appdata.settings['searchSources'] == null) { + appdata.settings['searchSources'] = ComicSource.all() + .where((e) => e.searchPageData != null) + .map((e) => e.key) + .toList(); + } +} + Future _checkAppUpdates() async { var lastCheck = appdata.implicitData['lastCheckUpdate'] ?? 0; var now = DateTime.now().millisecondsSinceEpoch;