Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • weblate
  • ginkgo-fix/shows-errors-on-qr-reading
  • v1.4.0
  • v1.3.1
  • v1.3.0
  • v1.2.3
  • v1.2.2
  • v1.2.1
  • v0.0.8+1
  • v1.2.0
  • v1.1.0
  • v1.0.2
  • v1.0.1
  • v1.0.0
  • v0.2.4
  • v0.2.3
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.5
  • v0.1.4
  • v0.1.3
23 results

shared_prefs_helper.dart

Blame
  • shared_prefs_helper.dart 6.12 KiB
    import 'dart:convert';
    
    import 'package:durt/durt.dart';
    import 'package:flutter/foundation.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 with ChangeNotifier {
      factory SharedPreferencesHelper() {
        return _instance;
      }
    
      SharedPreferencesHelper._internal() {
        SharedPreferences.getInstance().then((SharedPreferences value) {
          _prefs = value;
        });
      }
    
      List<CesiumCard> cesiumCards = <CesiumCard>[];
    
      Map<String, CesiumWallet> cesiumVolatileCards = <String, CesiumWallet>{};
    
      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) {