mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-01-22 16:56:19 +01:00
77 lines
2.2 KiB
Dart
77 lines
2.2 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:nc_photos/account.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
class Pref {
|
|
static Future<void> init() async {
|
|
return SharedPreferences.getInstance().then((pref) {
|
|
_inst._pref = pref;
|
|
});
|
|
}
|
|
|
|
factory Pref.inst() => _inst;
|
|
|
|
List<Account> getAccounts([List<Account> def]) {
|
|
final jsonObjs = _pref.getStringList("accounts");
|
|
return jsonObjs?.map((e) => Account.fromJson(jsonDecode(e)))?.toList() ??
|
|
def;
|
|
}
|
|
|
|
Future<bool> setAccounts(List<Account> value) {
|
|
final jsons = value.map((e) => jsonEncode(e.toJson())).toList();
|
|
return _pref.setStringList("accounts", jsons);
|
|
}
|
|
|
|
int getCurrentAccountIndex([int def]) =>
|
|
_pref.getInt("currentAccountIndex") ?? def;
|
|
|
|
Future<bool> setCurrentAccountIndex(int value) =>
|
|
_pref.setInt("currentAccountIndex", value);
|
|
|
|
int getHomePhotosZoomLevel([int def]) =>
|
|
_pref.getInt("homePhotosZoomLevel") ?? def;
|
|
|
|
Future<bool> setHomePhotosZoomLevel(int value) =>
|
|
_pref.setInt("homePhotosZoomLevel", value);
|
|
|
|
int getAlbumViewerZoomLevel([int def]) =>
|
|
_pref.getInt("albumViewerZoomLevel") ?? def;
|
|
|
|
Future<bool> setAlbumViewerZoomLevel(int value) =>
|
|
_pref.setInt("albumViewerZoomLevel", value);
|
|
|
|
bool isEnableExif([bool def = true]) => _pref.getBool("isEnableExif") ?? def;
|
|
|
|
Future<bool> setEnableExif(bool value) =>
|
|
_pref.setBool("isEnableExif", value);
|
|
|
|
int getSetupProgress([int def = 0]) => _pref.getInt("setupProgress") ?? def;
|
|
|
|
Future<bool> setSetupProgress(int value) =>
|
|
_pref.setInt("setupProgress", value);
|
|
|
|
/// Return the version number when the app last ran
|
|
int getLastVersion([int def = 0]) => _pref.getInt("lastVersion") ?? def;
|
|
|
|
Future<bool> setLastVersion(int value) => _pref.setInt("lastVersion", value);
|
|
|
|
bool isDarkTheme([bool def = false]) => _pref.getBool("isDarkTheme") ?? def;
|
|
|
|
Future<bool> setDarkTheme(bool value) => _pref.setBool("isDarkTheme", value);
|
|
|
|
Pref._();
|
|
|
|
static final _inst = Pref._();
|
|
SharedPreferences _pref;
|
|
}
|
|
|
|
extension PrefExtension on Pref {
|
|
Account getCurrentAccount() {
|
|
try {
|
|
return Pref.inst().getAccounts()[Pref.inst().getCurrentAccountIndex()];
|
|
} catch (_) {
|
|
return null;
|
|
}
|
|
}
|
|
}
|