shared_prefs_helper.dart 4.99 KiB
import 'dart:convert';
import 'dart:typed_data';
import 'package:durt/durt.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'data/models/cesium_card.dart';
import 'data/models/credit_card_themes.dart';
import 'g1/g1_helper.dart';
import 'ui/logger.dart';
class SharedPreferencesHelper {
factory SharedPreferencesHelper() {
return _instance;
}
SharedPreferencesHelper._internal() {
SharedPreferences.getInstance().then((SharedPreferences value) {
_prefs = value;
});
}
List<CesiumCard> cesiumCards = <CesiumCard>[];
static final SharedPreferencesHelper _instance =
SharedPreferencesHelper._internal();
late SharedPreferences _prefs;
static const String _seedKey = 'seed';
static const String _pubKey = 'pub';
Future<void> init() async {
_prefs = await SharedPreferences.getInstance();
final String? json = _prefs.getString('cesiumCards');
if (json != null) {
final List<dynamic> list = jsonDecode(json) as List<dynamic>;
cesiumCards = list
.map((dynamic e) => CesiumCard.fromJson(e as Map<String, dynamic>))
.toList();
}
// Migrate the current pair if exists
await migrateCurrentPair();
}
Future<void> migrateCurrentPair() async {
if (_prefs.containsKey(_seedKey) &&
_prefs.containsKey(_pubKey) &&
cesiumCards.isEmpty) {
final String seed = _prefs.getString(_seedKey)!;
final String pubKey = _prefs.getString(_pubKey)!;
final CesiumCard card = buildCesiumCard(seed: seed, pubKey: pubKey);
addCesiumCard(card);
// Let's do this later
// await _prefs.remove(_seedKey);
// await _prefs.remove(_pubKey);
setCurrentWalletIndex(0);
}
}
CesiumCard buildCesiumCard({required String seed, required String pubKey}) {
return CesiumCard(
seed: seed, pubKey: pubKey, theme: CreditCardThemes.theme1, name: '');
}
void addCesiumCard(CesiumCard cesiumCard) {
cesiumCards.add(cesiumCard);
saveCesiumCards();