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.
mohemm-flutter-app/lib/services/shared_preferences.dart

120 lines
3.5 KiB
Dart

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);
}
}