You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.5 KiB
Dart
120 lines
3.5 KiB
Dart
|
4 years ago
|
import 'dart:convert';
|
||
|
|
|
||
|
|
import 'package:mohem_flutter_app/models/config_model.dart';
|
||
|
|
|
||
|
|
import 'package:shared_preferences/shared_preferences.dart'
|
||
|
|
as SharedPrefsPlugin;
|
||
|
|
|
||
|
|
///
|
||
|
|
/// Taken from AlarmGuide Project
|
||
|
|
///
|
||
|
|
|
||
|
|
abstract class ISharedPreferences {
|
||
|
|
Future<int?> get authState;
|
||
|
|
|
||
|
|
Future<void> setAuthState(int authState);
|
||
|
|
|
||
|
|
Future<int?> get configState;
|
||
|
|
|
||
|
|
Future<void> setConfigState(int confState);
|
||
|
|
|
||
|
|
Future<ConfigModel?> get config;
|
||
|
|
|
||
|
|
Future<void> setConfig(ConfigModel config);
|
||
|
|
|
||
|
|
Future<bool?> get promotionNotificationsEnabled;
|
||
|
|
|
||
|
|
Future<void> setPromotionNotificationEnabled(bool newSetting);
|
||
|
|
|
||
|
|
Future<bool?> get helpAlreadyShown;
|
||
|
|
|
||
|
|
Future<void> setHelpAlreadyShown();
|
||
|
|
|
||
|
|
Future<int?> get useS3;
|
||
|
|
|
||
|
|
Future<void> setUseS3(int value);
|
||
|
|
}
|
||
|
|
|
||
|
|
class SharedPreferences implements ISharedPreferences {
|
||
|
|
static const String _AUTH_STATE_KEY = "auth_key";
|
||
|
|
static const String _CONFIG_KEY = "config";
|
||
|
|
static const String _CONFIG_STATE_KEY = "config_key";
|
||
|
|
static const String _PROMOTION_NOTIFICATION_KEY = "promotion";
|
||
|
|
static const String _HELP_ALREADY_SHOWN = "help_shown";
|
||
|
|
static const String _USE_S3 = "s3";
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<int?> get authState async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
return sharedPrefs.getInt(_AUTH_STATE_KEY);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<void> setAuthState(int authState) async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
sharedPrefs.setInt(_AUTH_STATE_KEY, authState);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<ConfigModel?> get config async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
final configAsJson = sharedPrefs.getString(_CONFIG_KEY);
|
||
|
|
return ConfigModel.fromJson(jsonDecode(configAsJson!));
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<void> setConfig(ConfigModel config) async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
sharedPrefs.setString(_CONFIG_KEY, jsonEncode(config));
|
||
|
|
setConfigState(1);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<bool?> get promotionNotificationsEnabled async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
return sharedPrefs.getBool(_PROMOTION_NOTIFICATION_KEY);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<void> setPromotionNotificationEnabled(bool newSetting) async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
sharedPrefs.setBool(_PROMOTION_NOTIFICATION_KEY, newSetting);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<bool?> get helpAlreadyShown async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
return sharedPrefs.getBool(_HELP_ALREADY_SHOWN);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<void> setHelpAlreadyShown() async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
sharedPrefs.setBool(_HELP_ALREADY_SHOWN, true);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<int?> get configState async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
return sharedPrefs.getInt(_CONFIG_STATE_KEY);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<void> setConfigState(int confState) async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
sharedPrefs.setInt(_CONFIG_STATE_KEY, confState);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<void> setUseS3(int value) async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
sharedPrefs.setInt(_USE_S3, value);
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<int?> get useS3 async {
|
||
|
|
final sharedPrefs = await SharedPrefsPlugin.SharedPreferences.getInstance();
|
||
|
|
return sharedPrefs.getInt(_USE_S3);
|
||
|
|
}
|
||
|
|
}
|