~cytrogen/fluent-reader-mobile

ref: 7fc5e41670ff992754b8fa267437e5a11c9f6750 fluent-reader-mobile/lib/utils/global.dart -rw-r--r-- 3.0 KiB
7fc5e416 — Capucine translate in french (#63) 3 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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/feedbin.dart';
import 'package:fluent_reader_lite/models/services/fever.dart';
import 'package:fluent_reader_lite/models/services/greader.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:jaguar/serve/server.dart';
import 'package:jaguar_flutter_asset/jaguar_flutter_asset.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 Jaguar server;
  static final GlobalKey<NavigatorState> 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:
        service = FeedbinServiceHandler();
        break;
      case SyncService.GReader:
      case SyncService.Inoreader:
        service = GReaderServiceHandler();
        break;
    }
    syncModel = SyncModel();
    _initContents();
  }

  static void _initContents() async {
    db = await DatabaseHelper.getDatabase();
    await db.delete(
      "items",
      where: "date < ? AND starred = 0",
      whereArgs: [
        DateTime.now()
          .subtract(Duration(days: globalModel.keepItemsDays))
          .millisecondsSinceEpoch,
      ],
    );
    server = Jaguar(address: "127.0.0.1",port: 9000);
    server.addRoute(serveFlutterAssets());
    await server.serve();
    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);
  }
}