import 'package:fluent_reader_lite/models/feeds_model.dart'; import 'package:fluent_reader_lite/models/global_model.dart'; import 'package:fluent_reader_lite/models/groups_model.dart'; import 'package:fluent_reader_lite/models/items_model.dart'; import 'package:fluent_reader_lite/models/service.dart'; import 'package:fluent_reader_lite/models/services/fever.dart'; import 'package:fluent_reader_lite/models/sources_model.dart'; import 'package:fluent_reader_lite/models/sync_model.dart'; import 'package:fluent_reader_lite/utils/db.dart'; import 'package:fluent_reader_lite/utils/store.dart'; import 'package:flutter/cupertino.dart'; import 'package:sqflite/sqflite.dart'; abstract class Global { static bool _initialized = false; static GlobalModel globalModel; static SourcesModel sourcesModel; static ItemsModel itemsModel; static FeedsModel feedsModel; static GroupsModel groupsModel; static SyncModel syncModel; static ServiceHandler service; static Database db; static final GlobalKey tabletPanel = GlobalKey(); static void init() { assert(!_initialized); _initialized = true; globalModel = GlobalModel(); sourcesModel = SourcesModel(); itemsModel = ItemsModel(); feedsModel = FeedsModel(); groupsModel = GroupsModel(); var serviceType = SyncService.values[Store.sp.getInt(StoreKeys.SYNC_SERVICE) ?? 0]; switch (serviceType) { case SyncService.None: break; case SyncService.Fever: service = FeverServiceHandler(); break; case SyncService.Feedbin: // TODO: Handle this case. break; case SyncService.GReader: // TODO: Handle this case. break; case SyncService.Inoreader: // TODO: Handle this case. break; } syncModel = SyncModel(); _initContents(); } static void _initContents() async { db = await DatabaseHelper.getDatabase(); await db.delete( "items", where: "date < ?", whereArgs: [ DateTime.now() .subtract(Duration(days: globalModel.keepItemsDays)) .millisecondsSinceEpoch, ], ); await sourcesModel.init(); await feedsModel.all.init(); if (globalModel.syncOnStart) await syncModel.syncWithService(); } static Brightness currentBrightness(BuildContext context) { return globalModel.getBrightness() ?? MediaQuery.of(context).platformBrightness; } static bool get isTablet => tabletPanel.currentWidget != null; static NavigatorState responsiveNavigator(BuildContext context) { return tabletPanel.currentWidget != null ? Global.tabletPanel.currentState : Navigator.of(context, rootNavigator: true); } }