@@ -7,7 +7,6 @@ import 'package:filcnaplo/models/icon_pack.dart';
7
7
import 'package:filcnaplo/theme/colors/accent.dart' ;
8
8
import 'package:filcnaplo/theme/colors/dark_mobile.dart' ;
9
9
import 'package:flutter/material.dart' ;
10
- import 'package:provider/provider.dart' ;
11
10
import 'package:uuid/uuid.dart' ;
12
11
13
12
enum Pages { home, grades, timetable, messages, absences }
@@ -17,6 +16,8 @@ enum UpdateChannel { stable, beta, dev }
17
16
enum VibrationStrength { off, light, medium, strong }
18
17
19
18
class SettingsProvider extends ChangeNotifier {
19
+ final DatabaseProvider ? _database;
20
+
20
21
// en_en, hu_hu, de_de
21
22
String _language;
22
23
Pages _startPage;
@@ -61,8 +62,11 @@ class SettingsProvider extends ChangeNotifier {
61
62
Color _customAccentColor;
62
63
Color _customBackgroundColor;
63
64
Color _customHighlightColor;
65
+ List <String > _premiumScopes;
66
+ String _premiumAccessToken;
64
67
65
68
SettingsProvider ({
69
+ DatabaseProvider ? database,
66
70
required String language,
67
71
required Pages startPage,
68
72
required int rounding,
@@ -91,7 +95,10 @@ class SettingsProvider extends ChangeNotifier {
91
95
required Color customAccentColor,
92
96
required Color customBackgroundColor,
93
97
required Color customHighlightColor,
94
- }) : _language = language,
98
+ required List <String > premiumScopes,
99
+ required String premiumAccessToken,
100
+ }) : _database = database,
101
+ _language = language,
95
102
_startPage = startPage,
96
103
_rounding = rounding,
97
104
_theme = theme,
@@ -118,9 +125,11 @@ class SettingsProvider extends ChangeNotifier {
118
125
_iconPack = iconPack,
119
126
_customAccentColor = customAccentColor,
120
127
_customBackgroundColor = customBackgroundColor,
121
- _customHighlightColor = customHighlightColor;
128
+ _customHighlightColor = customHighlightColor,
129
+ _premiumScopes = premiumScopes,
130
+ _premiumAccessToken = premiumAccessToken;
122
131
123
- factory SettingsProvider .fromMap (Map map) {
132
+ factory SettingsProvider .fromMap (Map map, { required DatabaseProvider database} ) {
124
133
Map <String , Object ?>? configMap;
125
134
126
135
try {
@@ -130,6 +139,7 @@ class SettingsProvider extends ChangeNotifier {
130
139
}
131
140
132
141
return SettingsProvider (
142
+ database: database,
133
143
language: map["language" ],
134
144
startPage: Pages .values[map["start_page" ]],
135
145
rounding: map["rounding" ],
@@ -164,6 +174,8 @@ class SettingsProvider extends ChangeNotifier {
164
174
customAccentColor: Color (map["custom_accent_color" ]),
165
175
customBackgroundColor: Color (map["custom_background_color" ]),
166
176
customHighlightColor: Color (map["custom_highlight_color" ]),
177
+ premiumScopes: jsonDecode (map["premium_scopes" ]).cast <String >(),
178
+ premiumAccessToken: map["premium_token" ],
167
179
);
168
180
}
169
181
@@ -200,11 +212,14 @@ class SettingsProvider extends ChangeNotifier {
200
212
"custom_accent_color" : _customAccentColor.value,
201
213
"custom_background_color" : _customBackgroundColor.value,
202
214
"custom_highlight_color" : _customHighlightColor.value,
215
+ "premium_scopes" : jsonEncode (_premiumScopes),
216
+ "premium_token" : _premiumAccessToken,
203
217
};
204
218
}
205
219
206
- factory SettingsProvider .defaultSettings () {
220
+ factory SettingsProvider .defaultSettings ({ DatabaseProvider ? database} ) {
207
221
return SettingsProvider (
222
+ database: database,
208
223
language: "hu" ,
209
224
startPage: Pages .home,
210
225
rounding: 5 ,
@@ -239,6 +254,8 @@ class SettingsProvider extends ChangeNotifier {
239
254
customAccentColor: const Color (0xff20AC9B ),
240
255
customBackgroundColor: const Color (0xff000000 ),
241
256
customHighlightColor: const Color (0xff222222 ),
257
+ premiumScopes: [],
258
+ premiumAccessToken: "" ,
242
259
);
243
260
}
244
261
@@ -271,10 +288,10 @@ class SettingsProvider extends ChangeNotifier {
271
288
Color ? get customAccentColor => _customAccentColor == accentColorMap[AccentColor .custom] ? null : _customAccentColor;
272
289
Color ? get customBackgroundColor => _customBackgroundColor;
273
290
Color ? get customHighlightColor => _customHighlightColor;
291
+ List <String > get premiumScopes => _premiumScopes;
292
+ String get premiumAccessToken => _premiumAccessToken;
274
293
275
- Future <void > update (
276
- BuildContext context, {
277
- DatabaseProvider ? database,
294
+ Future <void > update ({
278
295
bool store = true ,
279
296
String ? language,
280
297
Pages ? startPage,
@@ -304,6 +321,8 @@ class SettingsProvider extends ChangeNotifier {
304
321
Color ? customAccentColor,
305
322
Color ? customBackgroundColor,
306
323
Color ? customHighlightColor,
324
+ List <String >? premiumScopes,
325
+ String ? premiumAccessToken,
307
326
}) async {
308
327
if (language != null && language != _language) _language = language;
309
328
if (startPage != null && startPage != _startPage) _startPage = startPage;
@@ -335,9 +354,10 @@ class SettingsProvider extends ChangeNotifier {
335
354
if (customAccentColor != null && customAccentColor != _customAccentColor) _customAccentColor = customAccentColor;
336
355
if (customBackgroundColor != null && customBackgroundColor != _customBackgroundColor) _customBackgroundColor = customBackgroundColor;
337
356
if (customHighlightColor != null && customHighlightColor != _customHighlightColor) _customHighlightColor = customHighlightColor;
357
+ if (premiumScopes != null && premiumScopes != _premiumScopes) _premiumScopes = premiumScopes;
358
+ if (premiumAccessToken != null && premiumAccessToken != _premiumAccessToken) _premiumAccessToken = premiumAccessToken;
338
359
339
- database ?? = Provider .of <DatabaseProvider >(context, listen: false );
340
- if (store) await database.store.storeSettings (this );
360
+ if (store) await _database? .store.storeSettings (this );
341
361
notifyListeners ();
342
362
}
343
363
}
0 commit comments