diff --git a/lib/storage/base/settingsProvider.dart b/lib/storage/base/settingsProvider.dart index fd4324c..a15bfd6 100644 --- a/lib/storage/base/settingsProvider.dart +++ b/lib/storage/base/settingsProvider.dart @@ -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, - ), - ); - } } \ No newline at end of file diff --git a/lib/view/settings/defaultSettings.dart b/lib/view/settings/defaultSettings.dart new file mode 100644 index 0000000..44d9494 --- /dev/null +++ b/lib/view/settings/defaultSettings.dart @@ -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, + ), + ); + } +} \ No newline at end of file