added persisted app settings
Some checks failed
Flutter APK Build / Build Flutter APK (pull_request) Has been cancelled
Some checks failed
Flutter APK Build / Build Flutter APK (pull_request) Has been cancelled
This commit is contained in:
@@ -13,6 +13,7 @@ class Storage {
|
||||
static SharedPreferencesWithCache? _prefsWithCache;
|
||||
static const String _settingsKey = 'settings';
|
||||
static const String _statsKey = 'stats';
|
||||
static Settings _currentSettings = Settings.defaults();
|
||||
|
||||
static Future<void> initialize() async {
|
||||
_prefsWithCache = await SharedPreferencesWithCache.create(
|
||||
@@ -31,7 +32,8 @@ class Storage {
|
||||
final jsonString = _prefs.getString(_settingsKey);
|
||||
if (jsonString != null) {
|
||||
final json = jsonDecode(jsonString) as Map<String, dynamic>;
|
||||
return Settings.fromJson(json);
|
||||
_currentSettings = Settings.fromJson(json);
|
||||
return _currentSettings;
|
||||
} else {
|
||||
final settings = Settings.defaults();
|
||||
saveSettings(settings);
|
||||
@@ -41,6 +43,7 @@ class Storage {
|
||||
|
||||
static Future<void> saveSettings(Settings settings) {
|
||||
final json = jsonEncode(settings.toJson());
|
||||
_currentSettings = settings;
|
||||
return _prefs.setString(_settingsKey, json);
|
||||
}
|
||||
|
||||
@@ -63,11 +66,13 @@ class Storage {
|
||||
static Future<void> saveCollections(List<Collection> collections) async {
|
||||
final jsonList = collections.map((c) => c.toJson()).toList();
|
||||
await _prefs.setString(_collectionsKey, jsonEncode(jsonList));
|
||||
if (_currentSettings.alwaysExportEnabled) saveDataToFile();
|
||||
}
|
||||
|
||||
static Future<void> saveBookmarks(List<Bookmark> bookmarks) async {
|
||||
final jsonList = bookmarks.map((b) => b.toJson()).toList();
|
||||
await _prefs.setString(_bookmarksKey, jsonEncode(jsonList));
|
||||
if (_currentSettings.alwaysExportEnabled) saveDataToFile();
|
||||
}
|
||||
|
||||
static List<Bookmark> loadBookmarksForCollection(int collectionId) {
|
||||
@@ -196,6 +201,15 @@ class Storage {
|
||||
return false;
|
||||
}
|
||||
|
||||
static Future<String> selectDirectoryPath() =>
|
||||
JsonFileService.selectDirectoryPath();
|
||||
|
||||
static Future<bool> saveDataToFile() => JsonFileService.saveDataToFile(
|
||||
loadCollections(),
|
||||
loadBookmarks(),
|
||||
_currentSettings.exportDirectoryPath,
|
||||
);
|
||||
|
||||
static SharedPreferencesWithCache get _prefs {
|
||||
if (_prefsWithCache == null) {
|
||||
throw StateError(
|
||||
|
||||
Reference in New Issue
Block a user