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:convert';
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
import 'dart:io';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:marianum_mobile/storage/fileView/fileViewSettings.dart';
|
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
|
|
||||||
import '../../view/pages/files/files.dart';
|
import '../../view/settings/defaultSettings.dart';
|
||||||
import '../file/fileSettings.dart';
|
|
||||||
import '../gradeAverages/gradeAveragesSettings.dart';
|
|
||||||
import '../holidays/holidaysSettings.dart';
|
|
||||||
import '../talk/talkSettings.dart';
|
|
||||||
import '../timetable/timetableSettings.dart';
|
|
||||||
import 'settings.dart';
|
import 'settings.dart';
|
||||||
|
|
||||||
class SettingsProvider extends ChangeNotifier {
|
class SettingsProvider extends ChangeNotifier {
|
||||||
static const String _fieldName = "settings";
|
static const String _fieldName = "settings";
|
||||||
|
|
||||||
late SharedPreferences _storage;
|
late SharedPreferences _storage;
|
||||||
late Settings _settings = _defaults();
|
late Settings _settings = DefaultSettings.get();
|
||||||
|
|
||||||
Settings val({bool write = false}) {
|
Settings val({bool write = false}) {
|
||||||
if(write) {
|
if(write) {
|
||||||
@ -46,11 +39,11 @@ class SettingsProvider extends ChangeNotifier {
|
|||||||
} catch(exception) {
|
} catch(exception) {
|
||||||
try {
|
try {
|
||||||
log("Settings were changed, trying to recover from old Settings: ${exception.toString()}");
|
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()}");
|
log("Settings recovered successfully: ${_settings.toJson().toString()}");
|
||||||
} catch(exception) {
|
} catch(exception) {
|
||||||
log("Settings are defective and not recoverable, using defaults: ${exception.toString()}");
|
log("Settings are defective and not recoverable, using defaults: ${exception.toString()}");
|
||||||
_settings = _defaults();
|
_settings = DefaultSettings.get();
|
||||||
log("Settings were reset to defaults!");
|
log("Settings were reset to defaults!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -77,34 +70,4 @@ class SettingsProvider extends ChangeNotifier {
|
|||||||
|
|
||||||
return mergedMap;
|
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