Newer
Older
import 'dart:typed_data';
import 'package:durt/durt.dart';
import 'package:shared_preferences/shared_preferences.dart';
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import 'main.dart';
class SharedPreferencesHelper {
factory SharedPreferencesHelper() {
return _instance;
}
SharedPreferencesHelper._internal() {
SharedPreferences.getInstance().then((SharedPreferences value) {
_prefs = value;
});
}
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();
}
// I'll only use shared prefs for the duniter seed
Future<void> _saveString(String key, String value) async {
await _prefs.setString(key, value);
}
Future<CesiumWallet> getWallet() async {
String? s = _getString(_seedKey);
if (s == null) {
final Uint8List uS = generateUintSeed();
s = seedToString(uS);
await _saveString(_seedKey, s);
final CesiumWallet wallet = CesiumWallet.fromSeed(uS);
logger('Generated public key: ${wallet.pubkey}');
await _saveString(_pubKey, wallet.pubkey);
return wallet;
} else {
return CesiumWallet.fromSeed(seedFromString(s));
}
}
String getPubKey() {
// At this point should exists
final String? pubKey = _prefs.getString(_pubKey);
logger('Public key: $pubKey');
return pubKey!;