mirror of
https://github.com/immich-app/immich.git
synced 2025-05-24 01:12:58 -04:00
* refactor(mobile): migrate store * refactor(mobile): expand abbreviations * chore(mobile): fix lint --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Co-authored-by: Alex <alex.tran1502@gmail.com>
118 lines
3.1 KiB
Dart
118 lines
3.1 KiB
Dart
import 'dart:convert';
|
|
import 'dart:typed_data';
|
|
|
|
import 'package:immich_mobile/domain/services/store.service.dart';
|
|
import 'package:immich_mobile/entities/user.entity.dart';
|
|
|
|
// ignore: non_constant_identifier_names
|
|
final Store = StoreService.I;
|
|
|
|
class SSLClientCertStoreVal {
|
|
final Uint8List data;
|
|
final String? password;
|
|
|
|
SSLClientCertStoreVal(this.data, this.password);
|
|
|
|
void save() {
|
|
final b64Str = base64Encode(data);
|
|
Store.put(StoreKey.sslClientCertData, b64Str);
|
|
if (password != null) {
|
|
Store.put(StoreKey.sslClientPasswd, password!);
|
|
}
|
|
}
|
|
|
|
static SSLClientCertStoreVal? load() {
|
|
final b64Str = Store.tryGet<String>(StoreKey.sslClientCertData);
|
|
if (b64Str == null) {
|
|
return null;
|
|
}
|
|
final Uint8List certData = base64Decode(b64Str);
|
|
final passwd = Store.tryGet<String>(StoreKey.sslClientPasswd);
|
|
return SSLClientCertStoreVal(certData, passwd);
|
|
}
|
|
|
|
static void delete() {
|
|
Store.delete(StoreKey.sslClientCertData);
|
|
Store.delete(StoreKey.sslClientPasswd);
|
|
}
|
|
}
|
|
|
|
/// Key for each possible value in the `Store`.
|
|
/// Defines the data type for each value
|
|
enum StoreKey<T> {
|
|
version<int>._(0),
|
|
assetETag<String>._(1),
|
|
currentUser<User>._(2),
|
|
deviceIdHash<int>._(3),
|
|
deviceId<String>._(4),
|
|
backupFailedSince<DateTime>._(5),
|
|
backupRequireWifi<bool>._(6),
|
|
backupRequireCharging<bool>._(7),
|
|
backupTriggerDelay<int>._(8),
|
|
serverUrl<String>._(10),
|
|
accessToken<String>._(11),
|
|
serverEndpoint<String>._(12),
|
|
autoBackup<bool>._(13),
|
|
backgroundBackup<bool>._(14),
|
|
sslClientCertData<String>._(15),
|
|
sslClientPasswd<String>._(16),
|
|
// user settings from [AppSettingsEnum] below:
|
|
loadPreview<bool>._(100),
|
|
loadOriginal<bool>._(101),
|
|
themeMode<String>._(102),
|
|
tilesPerRow<int>._(103),
|
|
dynamicLayout<bool>._(104),
|
|
groupAssetsBy<int>._(105),
|
|
uploadErrorNotificationGracePeriod<int>._(106),
|
|
backgroundBackupTotalProgress<bool>._(107),
|
|
backgroundBackupSingleProgress<bool>._(108),
|
|
storageIndicator<bool>._(109),
|
|
thumbnailCacheSize<int>._(110),
|
|
imageCacheSize<int>._(111),
|
|
albumThumbnailCacheSize<int>._(112),
|
|
selectedAlbumSortOrder<int>._(113),
|
|
advancedTroubleshooting<bool>._(114),
|
|
logLevel<int>._(115),
|
|
preferRemoteImage<bool>._(116),
|
|
loopVideo<bool>._(117),
|
|
// map related settings
|
|
mapShowFavoriteOnly<bool>._(118),
|
|
mapRelativeDate<int>._(119),
|
|
selfSignedCert<bool>._(120),
|
|
mapIncludeArchived<bool>._(121),
|
|
ignoreIcloudAssets<bool>._(122),
|
|
selectedAlbumSortReverse<bool>._(123),
|
|
mapThemeMode<int>._(124),
|
|
mapwithPartners<bool>._(125),
|
|
enableHapticFeedback<bool>._(126),
|
|
customHeaders<String>._(127),
|
|
|
|
// theme settings
|
|
primaryColor<String>._(128),
|
|
dynamicTheme<bool>._(129),
|
|
colorfulInterface<bool>._(130),
|
|
|
|
syncAlbums<bool>._(131),
|
|
|
|
// Auto endpoint switching
|
|
autoEndpointSwitching<bool>._(132),
|
|
preferredWifiName<String>._(133),
|
|
localEndpoint<String>._(134),
|
|
externalEndpointList<String>._(135),
|
|
|
|
// Video settings
|
|
loadOriginalVideo<bool>._(136),
|
|
;
|
|
|
|
const StoreKey._(this.id);
|
|
final int id;
|
|
Type get type => T;
|
|
}
|
|
|
|
class StoreUpdateEvent<T> {
|
|
final StoreKey<T> key;
|
|
final T? value;
|
|
|
|
const StoreUpdateEvent(this.key, this.value);
|
|
}
|