mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 06:46:22 +01:00
Refactor account pref
This commit is contained in:
parent
0725e8ebce
commit
484da170d4
7 changed files with 149 additions and 130 deletions
|
@ -405,7 +405,7 @@ class ScanAccountDirBloc
|
|||
// no data in this bloc, ignore
|
||||
return;
|
||||
}
|
||||
if (ev.key == PrefKey.shareFolder &&
|
||||
if (ev.key == AccountPrefKey.shareFolder &&
|
||||
identical(ev.pref, AccountPref.of(account))) {
|
||||
_log.info("[_onAccountPrefUpdatedEvent] Request refresh");
|
||||
_refreshThrottler.trigger(
|
||||
|
|
|
@ -65,68 +65,8 @@ class AccountPref {
|
|||
}
|
||||
}
|
||||
|
||||
bool? isEnableFaceRecognitionApp() =>
|
||||
provider.getBool(PrefKey.isEnableFaceRecognitionApp);
|
||||
bool isEnableFaceRecognitionAppOr([bool def = true]) =>
|
||||
isEnableFaceRecognitionApp() ?? def;
|
||||
Future<bool> setEnableFaceRecognitionApp(bool value) => _set<bool>(
|
||||
PrefKey.isEnableFaceRecognitionApp,
|
||||
value,
|
||||
(key, value) => provider.setBool(key, value));
|
||||
|
||||
String? getShareFolder() => provider.getString(PrefKey.shareFolder);
|
||||
String getShareFolderOr([String def = ""]) => getShareFolder() ?? def;
|
||||
Future<bool> setShareFolder(String value) => _set<String>(PrefKey.shareFolder,
|
||||
value, (key, value) => provider.setString(key, value));
|
||||
|
||||
bool? hasNewSharedAlbum() => provider.getBool(PrefKey.hasNewSharedAlbum);
|
||||
bool hasNewSharedAlbumOr([bool def = false]) => hasNewSharedAlbum() ?? def;
|
||||
Future<bool> setNewSharedAlbum(bool value) => _set<bool>(
|
||||
PrefKey.hasNewSharedAlbum,
|
||||
value,
|
||||
(key, value) => provider.setBool(key, value));
|
||||
|
||||
bool? isEnableMemoryAlbum() => provider.getBool(PrefKey.isEnableMemoryAlbum);
|
||||
bool isEnableMemoryAlbumOr([bool def = false]) =>
|
||||
isEnableMemoryAlbum() ?? def;
|
||||
Future<bool> setEnableMemoryAlbum(bool value) => _set<bool>(
|
||||
PrefKey.isEnableMemoryAlbum,
|
||||
value,
|
||||
(key, value) => provider.setBool(key, value));
|
||||
|
||||
String? getTouchRootEtag() => provider.getString(PrefKey.touchRootEtag);
|
||||
String getTouchRootEtagOr([String def = ""]) => getTouchRootEtag() ?? def;
|
||||
Future<bool> setTouchRootEtag(String value) => _set<String>(
|
||||
PrefKey.touchRootEtag,
|
||||
value,
|
||||
(key, value) => provider.setString(key, value));
|
||||
Future<bool> removeTouchRootEtag() => _remove(PrefKey.touchRootEtag);
|
||||
|
||||
String? getAccountLabel() => provider.getString(PrefKey.accountLabel);
|
||||
String getAccountLabelOr([String def = ""]) => getAccountLabel() ?? def;
|
||||
Future<bool> setAccountLabel(String? value) {
|
||||
if (value == null) {
|
||||
return _remove(PrefKey.accountLabel);
|
||||
} else {
|
||||
return _set<String>(PrefKey.accountLabel, value,
|
||||
(key, value) => provider.setString(key, value));
|
||||
}
|
||||
}
|
||||
|
||||
int? getLastNewCollectionType() =>
|
||||
provider.getInt(PrefKey.lastNewCollectionType);
|
||||
int getLastNewCollectionTypeOr(int def) => getLastNewCollectionType() ?? def;
|
||||
Future<bool> setLastNewCollectionType(int? value) {
|
||||
if (value == null) {
|
||||
return _remove(PrefKey.lastNewCollectionType);
|
||||
} else {
|
||||
return _set<int>(PrefKey.lastNewCollectionType, value,
|
||||
(key, value) => provider.setInt(key, value));
|
||||
}
|
||||
}
|
||||
|
||||
Future<bool> _set<T>(PrefKey key, T value,
|
||||
Future<bool> Function(PrefKey key, T value) setFn) async {
|
||||
Future<bool> _set<T>(AccountPrefKey key, T value,
|
||||
Future<bool> Function(AccountPrefKey key, T value) setFn) async {
|
||||
if (await setFn(key, value)) {
|
||||
KiwiContainer()
|
||||
.resolve<EventBus>()
|
||||
|
@ -137,14 +77,18 @@ class AccountPref {
|
|||
}
|
||||
}
|
||||
|
||||
Future<bool> _remove(PrefKey key) => provider.remove(key);
|
||||
Future<bool> _remove(AccountPrefKey key) => provider.remove(key);
|
||||
|
||||
final PrefProvider provider;
|
||||
|
||||
static final _insts = <String, AccountPref>{};
|
||||
}
|
||||
|
||||
enum PrefKey {
|
||||
abstract class PrefKeyInterface {
|
||||
String toStringKey();
|
||||
}
|
||||
|
||||
enum PrefKey implements PrefKeyInterface {
|
||||
accounts3,
|
||||
currentAccountIndex,
|
||||
homePhotosZoomLevel,
|
||||
|
@ -179,17 +123,9 @@ enum PrefKey {
|
|||
isSlideshowReverse,
|
||||
seedColor,
|
||||
isVideoPlayerMute,
|
||||
isVideoPlayerLoop,
|
||||
|
||||
// account pref
|
||||
isEnableFaceRecognitionApp,
|
||||
shareFolder,
|
||||
hasNewSharedAlbum,
|
||||
isEnableMemoryAlbum,
|
||||
touchRootEtag,
|
||||
accountLabel,
|
||||
lastNewCollectionType;
|
||||
isVideoPlayerLoop;
|
||||
|
||||
@override
|
||||
String toStringKey() {
|
||||
switch (this) {
|
||||
case PrefKey.accounts3:
|
||||
|
@ -262,21 +198,35 @@ enum PrefKey {
|
|||
return "isVideoPlayerMute";
|
||||
case PrefKey.isVideoPlayerLoop:
|
||||
return "isVideoPlayerLoop";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// account pref
|
||||
case PrefKey.isEnableFaceRecognitionApp:
|
||||
enum AccountPrefKey implements PrefKeyInterface {
|
||||
isEnableFaceRecognitionApp,
|
||||
shareFolder,
|
||||
hasNewSharedAlbum,
|
||||
isEnableMemoryAlbum,
|
||||
touchRootEtag,
|
||||
accountLabel,
|
||||
lastNewCollectionType;
|
||||
|
||||
@override
|
||||
String toStringKey() {
|
||||
switch (this) {
|
||||
case AccountPrefKey.isEnableFaceRecognitionApp:
|
||||
return "isEnableFaceRecognitionApp";
|
||||
case PrefKey.shareFolder:
|
||||
case AccountPrefKey.shareFolder:
|
||||
return "shareFolder";
|
||||
case PrefKey.hasNewSharedAlbum:
|
||||
case AccountPrefKey.hasNewSharedAlbum:
|
||||
return "hasNewSharedAlbum";
|
||||
case PrefKey.isEnableMemoryAlbum:
|
||||
case AccountPrefKey.isEnableMemoryAlbum:
|
||||
return "isEnableMemoryAlbum";
|
||||
case PrefKey.touchRootEtag:
|
||||
case AccountPrefKey.touchRootEtag:
|
||||
return "touchRootEtag";
|
||||
case PrefKey.accountLabel:
|
||||
case AccountPrefKey.accountLabel:
|
||||
return "accountLabel";
|
||||
case PrefKey.lastNewCollectionType:
|
||||
case AccountPrefKey.lastNewCollectionType:
|
||||
return "lastNewCollectionType";
|
||||
}
|
||||
}
|
||||
|
@ -284,18 +234,18 @@ enum PrefKey {
|
|||
|
||||
/// Provide the data for [Pref]
|
||||
abstract class PrefProvider {
|
||||
bool? getBool(PrefKey key);
|
||||
Future<bool> setBool(PrefKey key, bool value);
|
||||
bool? getBool(PrefKeyInterface key);
|
||||
Future<bool> setBool(PrefKeyInterface key, bool value);
|
||||
|
||||
int? getInt(PrefKey key);
|
||||
Future<bool> setInt(PrefKey key, int value);
|
||||
int? getInt(PrefKeyInterface key);
|
||||
Future<bool> setInt(PrefKeyInterface key, int value);
|
||||
|
||||
String? getString(PrefKey key);
|
||||
Future<bool> setString(PrefKey key, String value);
|
||||
String? getString(PrefKeyInterface key);
|
||||
Future<bool> setString(PrefKeyInterface key, String value);
|
||||
|
||||
List<String>? getStringList(PrefKey key);
|
||||
Future<bool> setStringList(PrefKey key, List<String> value);
|
||||
List<String>? getStringList(PrefKeyInterface key);
|
||||
Future<bool> setStringList(PrefKeyInterface key, List<String> value);
|
||||
|
||||
Future<bool> remove(PrefKey key);
|
||||
Future<bool> remove(PrefKeyInterface key);
|
||||
Future<bool> clear();
|
||||
}
|
||||
|
|
|
@ -268,3 +268,70 @@ extension PrefExtension on Pref {
|
|||
value,
|
||||
(key, value) => provider.setBool(key, value));
|
||||
}
|
||||
|
||||
extension AccountPrefExtension on AccountPref {
|
||||
bool? isEnableFaceRecognitionApp() =>
|
||||
provider.getBool(AccountPrefKey.isEnableFaceRecognitionApp);
|
||||
bool isEnableFaceRecognitionAppOr([bool def = true]) =>
|
||||
isEnableFaceRecognitionApp() ?? def;
|
||||
Future<bool> setEnableFaceRecognitionApp(bool value) => _set<bool>(
|
||||
AccountPrefKey.isEnableFaceRecognitionApp,
|
||||
value,
|
||||
(key, value) => provider.setBool(key, value));
|
||||
|
||||
String? getShareFolder() => provider.getString(AccountPrefKey.shareFolder);
|
||||
String getShareFolderOr([String def = ""]) => getShareFolder() ?? def;
|
||||
Future<bool> setShareFolder(String value) => _set<String>(
|
||||
AccountPrefKey.shareFolder,
|
||||
value,
|
||||
(key, value) => provider.setString(key, value));
|
||||
|
||||
bool? hasNewSharedAlbum() =>
|
||||
provider.getBool(AccountPrefKey.hasNewSharedAlbum);
|
||||
bool hasNewSharedAlbumOr([bool def = false]) => hasNewSharedAlbum() ?? def;
|
||||
Future<bool> setNewSharedAlbum(bool value) => _set<bool>(
|
||||
AccountPrefKey.hasNewSharedAlbum,
|
||||
value,
|
||||
(key, value) => provider.setBool(key, value));
|
||||
|
||||
bool? isEnableMemoryAlbum() =>
|
||||
provider.getBool(AccountPrefKey.isEnableMemoryAlbum);
|
||||
bool isEnableMemoryAlbumOr([bool def = false]) =>
|
||||
isEnableMemoryAlbum() ?? def;
|
||||
Future<bool> setEnableMemoryAlbum(bool value) => _set<bool>(
|
||||
AccountPrefKey.isEnableMemoryAlbum,
|
||||
value,
|
||||
(key, value) => provider.setBool(key, value));
|
||||
|
||||
String? getTouchRootEtag() =>
|
||||
provider.getString(AccountPrefKey.touchRootEtag);
|
||||
String getTouchRootEtagOr([String def = ""]) => getTouchRootEtag() ?? def;
|
||||
Future<bool> setTouchRootEtag(String value) => _set<String>(
|
||||
AccountPrefKey.touchRootEtag,
|
||||
value,
|
||||
(key, value) => provider.setString(key, value));
|
||||
Future<bool> removeTouchRootEtag() => _remove(AccountPrefKey.touchRootEtag);
|
||||
|
||||
String? getAccountLabel() => provider.getString(AccountPrefKey.accountLabel);
|
||||
String getAccountLabelOr([String def = ""]) => getAccountLabel() ?? def;
|
||||
Future<bool> setAccountLabel(String? value) {
|
||||
if (value == null) {
|
||||
return _remove(AccountPrefKey.accountLabel);
|
||||
} else {
|
||||
return _set<String>(AccountPrefKey.accountLabel, value,
|
||||
(key, value) => provider.setString(key, value));
|
||||
}
|
||||
}
|
||||
|
||||
int? getLastNewCollectionType() =>
|
||||
provider.getInt(AccountPrefKey.lastNewCollectionType);
|
||||
int getLastNewCollectionTypeOr(int def) => getLastNewCollectionType() ?? def;
|
||||
Future<bool> setLastNewCollectionType(int? value) {
|
||||
if (value == null) {
|
||||
return _remove(AccountPrefKey.lastNewCollectionType);
|
||||
} else {
|
||||
return _set<int>(AccountPrefKey.lastNewCollectionType, value,
|
||||
(key, value) => provider.setInt(key, value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,28 +7,29 @@ class PrefMemoryProvider extends PrefProvider {
|
|||
]) : _data = Map.of(initialData);
|
||||
|
||||
@override
|
||||
bool? getBool(PrefKey key) => _get<bool>(key);
|
||||
bool? getBool(PrefKeyInterface key) => _get<bool>(key);
|
||||
@override
|
||||
Future<bool> setBool(PrefKey key, bool value) => _set(key, value);
|
||||
Future<bool> setBool(PrefKeyInterface key, bool value) => _set(key, value);
|
||||
|
||||
@override
|
||||
int? getInt(PrefKey key) => _get<int>(key);
|
||||
int? getInt(PrefKeyInterface key) => _get<int>(key);
|
||||
@override
|
||||
Future<bool> setInt(PrefKey key, int value) => _set(key, value);
|
||||
Future<bool> setInt(PrefKeyInterface key, int value) => _set(key, value);
|
||||
|
||||
@override
|
||||
String? getString(PrefKey key) => _get<String>(key);
|
||||
String? getString(PrefKeyInterface key) => _get<String>(key);
|
||||
@override
|
||||
Future<bool> setString(PrefKey key, String value) => _set(key, value);
|
||||
|
||||
@override
|
||||
List<String>? getStringList(PrefKey key) => _get<List<String>>(key);
|
||||
@override
|
||||
Future<bool> setStringList(PrefKey key, List<String> value) =>
|
||||
Future<bool> setString(PrefKeyInterface key, String value) =>
|
||||
_set(key, value);
|
||||
|
||||
@override
|
||||
Future<bool> remove(PrefKey key) async {
|
||||
List<String>? getStringList(PrefKeyInterface key) => _get<List<String>>(key);
|
||||
@override
|
||||
Future<bool> setStringList(PrefKeyInterface key, List<String> value) =>
|
||||
_set(key, value);
|
||||
|
||||
@override
|
||||
Future<bool> remove(PrefKeyInterface key) async {
|
||||
_data.remove(key);
|
||||
return true;
|
||||
}
|
||||
|
@ -39,9 +40,9 @@ class PrefMemoryProvider extends PrefProvider {
|
|||
return true;
|
||||
}
|
||||
|
||||
T? _get<T>(PrefKey key) => _data[key.toStringKey()];
|
||||
T? _get<T>(PrefKeyInterface key) => _data[key.toStringKey()];
|
||||
|
||||
Future<bool> _set<T>(PrefKey key, T value) async {
|
||||
Future<bool> _set<T>(PrefKeyInterface key, T value) async {
|
||||
_data[key.toStringKey()] = value;
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -20,36 +20,36 @@ class PrefSharedPreferencesProvider extends PrefProvider {
|
|||
}
|
||||
|
||||
@override
|
||||
bool? getBool(PrefKey key) => _pref.getBool(key.toStringKey());
|
||||
bool? getBool(PrefKeyInterface key) => _pref.getBool(key.toStringKey());
|
||||
|
||||
@override
|
||||
Future<bool> setBool(PrefKey key, bool value) =>
|
||||
Future<bool> setBool(PrefKeyInterface key, bool value) =>
|
||||
_pref.setBool(key.toStringKey(), value);
|
||||
|
||||
@override
|
||||
int? getInt(PrefKey key) => _pref.getInt(key.toStringKey());
|
||||
int? getInt(PrefKeyInterface key) => _pref.getInt(key.toStringKey());
|
||||
|
||||
@override
|
||||
Future<bool> setInt(PrefKey key, int value) =>
|
||||
Future<bool> setInt(PrefKeyInterface key, int value) =>
|
||||
_pref.setInt(key.toStringKey(), value);
|
||||
|
||||
@override
|
||||
String? getString(PrefKey key) => _pref.getString(key.toStringKey());
|
||||
String? getString(PrefKeyInterface key) => _pref.getString(key.toStringKey());
|
||||
|
||||
@override
|
||||
Future<bool> setString(PrefKey key, String value) =>
|
||||
Future<bool> setString(PrefKeyInterface key, String value) =>
|
||||
_pref.setString(key.toStringKey(), value);
|
||||
|
||||
@override
|
||||
List<String>? getStringList(PrefKey key) =>
|
||||
List<String>? getStringList(PrefKeyInterface key) =>
|
||||
_pref.getStringList(key.toStringKey());
|
||||
|
||||
@override
|
||||
Future<bool> setStringList(PrefKey key, List<String> value) =>
|
||||
Future<bool> setStringList(PrefKeyInterface key, List<String> value) =>
|
||||
_pref.setStringList(key.toStringKey(), value);
|
||||
|
||||
@override
|
||||
Future<bool> remove(PrefKey key) => _pref.remove(key.toStringKey());
|
||||
Future<bool> remove(PrefKeyInterface key) => _pref.remove(key.toStringKey());
|
||||
|
||||
@override
|
||||
Future<bool> clear() => _pref.clear();
|
||||
|
|
|
@ -16,28 +16,29 @@ class PrefUniversalStorageProvider extends PrefProvider {
|
|||
}
|
||||
|
||||
@override
|
||||
bool? getBool(PrefKey key) => _get<bool>(key);
|
||||
bool? getBool(PrefKeyInterface key) => _get<bool>(key);
|
||||
@override
|
||||
Future<bool> setBool(PrefKey key, bool value) => _set(key, value);
|
||||
Future<bool> setBool(PrefKeyInterface key, bool value) => _set(key, value);
|
||||
|
||||
@override
|
||||
int? getInt(PrefKey key) => _get<int>(key);
|
||||
int? getInt(PrefKeyInterface key) => _get<int>(key);
|
||||
@override
|
||||
Future<bool> setInt(PrefKey key, int value) => _set(key, value);
|
||||
Future<bool> setInt(PrefKeyInterface key, int value) => _set(key, value);
|
||||
|
||||
@override
|
||||
String? getString(PrefKey key) => _get<String>(key);
|
||||
String? getString(PrefKeyInterface key) => _get<String>(key);
|
||||
@override
|
||||
Future<bool> setString(PrefKey key, String value) => _set(key, value);
|
||||
|
||||
@override
|
||||
List<String>? getStringList(PrefKey key) => _get<List<String>>(key);
|
||||
@override
|
||||
Future<bool> setStringList(PrefKey key, List<String> value) =>
|
||||
Future<bool> setString(PrefKeyInterface key, String value) =>
|
||||
_set(key, value);
|
||||
|
||||
@override
|
||||
Future<bool> remove(PrefKey key) async {
|
||||
List<String>? getStringList(PrefKeyInterface key) => _get<List<String>>(key);
|
||||
@override
|
||||
Future<bool> setStringList(PrefKeyInterface key, List<String> value) =>
|
||||
_set(key, value);
|
||||
|
||||
@override
|
||||
Future<bool> remove(PrefKeyInterface key) async {
|
||||
final newData = Map.of(_data)..remove(key.toStringKey());
|
||||
await platform.UniversalStorage().putString(name, jsonEncode(newData));
|
||||
_data.remove(key.toStringKey());
|
||||
|
@ -51,9 +52,9 @@ class PrefUniversalStorageProvider extends PrefProvider {
|
|||
return true;
|
||||
}
|
||||
|
||||
T? _get<T>(PrefKey key) => _data[key.toStringKey()];
|
||||
T? _get<T>(PrefKeyInterface key) => _data[key.toStringKey()];
|
||||
|
||||
Future<bool> _set<T>(PrefKey key, T value) async {
|
||||
Future<bool> _set<T>(PrefKeyInterface key, T value) async {
|
||||
final newData = Map.of(_data)
|
||||
..addEntries([MapEntry(key.toStringKey(), value)]);
|
||||
await platform.UniversalStorage().putString(name, jsonEncode(newData));
|
||||
|
|
|
@ -42,7 +42,7 @@ class AccountPrefUpdatedEvent {
|
|||
const AccountPrefUpdatedEvent(this.pref, this.key, this.value);
|
||||
|
||||
final AccountPref pref;
|
||||
final PrefKey key;
|
||||
final AccountPrefKey key;
|
||||
final dynamic value;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue