Moved default Settings to its own class

This commit is contained in:
Elias Müller 2023-08-11 21:32:55 +02:00
parent ab8d61d392
commit 6c5d8bd8ec
2 changed files with 48 additions and 41 deletions

View File

@ -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,
),
);
}
}

View 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,
),
);
}
}