Moved default Settings to its own class
This commit is contained in:
parent
ab8d61d392
commit
6c5d8bd8ec
@ -1,23 +1,16 @@
|
||||
import 'dart:convert';
|
||||
import 'dart:developer';
|
||||
import 'dart:io';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:marianum_mobile/storage/fileView/fileViewSettings.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../../view/pages/files/files.dart';
|
||||
import '../file/fileSettings.dart';
|
||||
import '../gradeAverages/gradeAveragesSettings.dart';
|
||||
import '../holidays/holidaysSettings.dart';
|
||||
import '../talk/talkSettings.dart';
|
||||
import '../timetable/timetableSettings.dart';
|
||||
import '../../view/settings/defaultSettings.dart';
|
||||
import 'settings.dart';
|
||||
|
||||
class SettingsProvider extends ChangeNotifier {
|
||||
static const String _fieldName = "settings";
|
||||
|
||||
late SharedPreferences _storage;
|
||||
late Settings _settings = _defaults();
|
||||
late Settings _settings = DefaultSettings.get();
|
||||
|
||||
Settings val({bool write = false}) {
|
||||
if(write) {
|
||||
@ -46,11 +39,11 @@ class SettingsProvider extends ChangeNotifier {
|
||||
} catch(exception) {
|
||||
try {
|
||||
log("Settings were changed, trying to recover from old Settings: ${exception.toString()}");
|
||||
_settings = Settings.fromJson(_mergeSettings(jsonDecode(_storage.getString(_fieldName)!), _defaults().toJson()));
|
||||
_settings = Settings.fromJson(_mergeSettings(jsonDecode(_storage.getString(_fieldName)!), DefaultSettings.get().toJson()));
|
||||
log("Settings recovered successfully: ${_settings.toJson().toString()}");
|
||||
} catch(exception) {
|
||||
log("Settings are defective and not recoverable, using defaults: ${exception.toString()}");
|
||||
_settings = _defaults();
|
||||
_settings = DefaultSettings.get();
|
||||
log("Settings were reset to defaults!");
|
||||
}
|
||||
}
|
||||
@ -77,34 +70,4 @@ class SettingsProvider extends ChangeNotifier {
|
||||
|
||||
return mergedMap;
|
||||
}
|
||||
|
||||
Settings _defaults() {
|
||||
return Settings(
|
||||
appTheme: ThemeMode.system,
|
||||
devToolsEnabled: false,
|
||||
gradeAveragesSettings: GradeAveragesSettings(
|
||||
useGradeSystem: true,
|
||||
inputs: []
|
||||
),
|
||||
timetableSettings: TimetableSettings(
|
||||
zoom: 40,
|
||||
),
|
||||
talkSettings: TalkSettings(
|
||||
sortFavoritesToTop: true,
|
||||
sortUnreadToTop: false,
|
||||
),
|
||||
fileSettings: FileSettings(
|
||||
sortFoldersToTop: true,
|
||||
ascending: true,
|
||||
sortBy: SortOption.name
|
||||
),
|
||||
holidaysSettings: HolidaysSettings(
|
||||
dismissedDisclaimer: false,
|
||||
showPastEvents: false,
|
||||
),
|
||||
fileViewSettings: FileViewSettings(
|
||||
alwaysOpenExternally: Platform.isIOS,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
44
lib/view/settings/defaultSettings.dart
Normal file
44
lib/view/settings/defaultSettings.dart
Normal file
@ -0,0 +1,44 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../storage/base/settings.dart';
|
||||
import '../../storage/file/fileSettings.dart';
|
||||
import '../../storage/fileView/fileViewSettings.dart';
|
||||
import '../../storage/gradeAverages/gradeAveragesSettings.dart';
|
||||
import '../../storage/holidays/holidaysSettings.dart';
|
||||
import '../../storage/talk/talkSettings.dart';
|
||||
import '../../storage/timetable/timetableSettings.dart';
|
||||
import '../pages/files/files.dart';
|
||||
|
||||
class DefaultSettings {
|
||||
static Settings get() {
|
||||
return Settings(
|
||||
appTheme: ThemeMode.system,
|
||||
devToolsEnabled: false,
|
||||
gradeAveragesSettings: GradeAveragesSettings(
|
||||
useGradeSystem: true,
|
||||
inputs: []
|
||||
),
|
||||
timetableSettings: TimetableSettings(
|
||||
zoom: 40,
|
||||
),
|
||||
talkSettings: TalkSettings(
|
||||
sortFavoritesToTop: true,
|
||||
sortUnreadToTop: false,
|
||||
),
|
||||
fileSettings: FileSettings(
|
||||
sortFoldersToTop: true,
|
||||
ascending: true,
|
||||
sortBy: SortOption.name
|
||||
),
|
||||
holidaysSettings: HolidaysSettings(
|
||||
dismissedDisclaimer: false,
|
||||
showPastEvents: false,
|
||||
),
|
||||
fileViewSettings: FileViewSettings(
|
||||
alwaysOpenExternally: Platform.isIOS,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user