mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-06-28 12:29:51 +00:00
* feat: background sync improvements - dev options on ci build cherrypick - add permissions for background sync to AndroidManifestBase - enable desugaring + update java compatibility to 17 - update walletconnect_flutter_v2 - update ens_dart - update nostr_tools - add notification for new transactions found in background - expose more settings from flutter_daemon in UI - remove battery optimization setting when it's already disabled - fix notification permission handling - fix background sync last trigger saving - prevent notifications from being duplicated * potential fix for multiple notifications firing for the same tx * improve logging in background sync * ui improvements to ignore battery optimization popup * feat: logs for bg sync disable decred bgsync * fix: call store() directly to be sure that it is writing the data * chore: rename logs to background sync logs * Update lib/view_model/dashboard/dashboard_view_model.dart Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com> * chore: remove unused key --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
92 lines
2.3 KiB
Dart
92 lines
2.3 KiB
Dart
import 'package:mobx/mobx.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
|
|
part 'shared_preferences.g.dart';
|
|
|
|
class DevSharedPreferences = DevSharedPreferencesBase with _$DevSharedPreferences;
|
|
|
|
enum PreferenceType {
|
|
unknown,
|
|
string,
|
|
int,
|
|
double,
|
|
bool,
|
|
listString
|
|
}
|
|
|
|
abstract class DevSharedPreferencesBase with Store {
|
|
DevSharedPreferencesBase() {
|
|
SharedPreferences.getInstance().then((value) {
|
|
sharedPreferences = value;
|
|
});
|
|
}
|
|
|
|
@observable
|
|
SharedPreferences? sharedPreferences;
|
|
|
|
@computed
|
|
List<String> get keys => (sharedPreferences?.getKeys().toList()?..sort()) ?? [];
|
|
|
|
@action
|
|
Future<void> delete(String key) async {
|
|
if (sharedPreferences == null) {
|
|
return;
|
|
}
|
|
await sharedPreferences!.remove(key);
|
|
}
|
|
|
|
dynamic get(String key) {
|
|
if (sharedPreferences == null) {
|
|
return null;
|
|
}
|
|
return sharedPreferences!.get(key);
|
|
}
|
|
|
|
Future<void> set(String key, PreferenceType type, dynamic value) async {
|
|
if (sharedPreferences == null) {
|
|
return;
|
|
}
|
|
switch (type) {
|
|
case PreferenceType.string:
|
|
await sharedPreferences!.setString(key, value as String);
|
|
break;
|
|
case PreferenceType.bool:
|
|
await sharedPreferences!.setBool(key, value as bool);
|
|
break;
|
|
case PreferenceType.int:
|
|
await sharedPreferences!.setInt(key, value as int);
|
|
break;
|
|
case PreferenceType.double:
|
|
await sharedPreferences!.setDouble(key, value as double);
|
|
break;
|
|
case PreferenceType.listString:
|
|
await sharedPreferences!.setStringList(key, List<String>.from(value as Iterable<dynamic>));
|
|
break;
|
|
default:
|
|
throw Exception("Unknown preference type: $type");
|
|
}
|
|
}
|
|
|
|
PreferenceType getPreferenceType(String key) {
|
|
if (sharedPreferences == null) {
|
|
return PreferenceType.unknown;
|
|
}
|
|
final value = sharedPreferences!.get(key);
|
|
if (value is String) {
|
|
return PreferenceType.string;
|
|
}
|
|
if (value is bool) {
|
|
return PreferenceType.bool;
|
|
}
|
|
if (value is int) {
|
|
return PreferenceType.int;
|
|
}
|
|
if (value is double) {
|
|
return PreferenceType.double;
|
|
}
|
|
if (value is List<String>) {
|
|
return PreferenceType.listString;
|
|
}
|
|
return PreferenceType.unknown;
|
|
}
|
|
}
|