seed fixes (#1594)
* seed fixes + jCenter removal * set seed language to English if none show error when requesting seed --------- Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
cyan committed
Aug 15, 2024 at 01:41 UTC
4fa487fa275b9d1fc1343c7852d763b899dcb74b
5 files changed
+36
-9
cw_monero/lib/api/wallet.dart
+4
-1
@@ -39,7 +39,7 @@ String getSeed() {
39
if (polyseed != "") {
40
return polyseed;
41
}
42
- final legacy = monero.Wallet_seed(wptr!, seedOffset: '');
42
+ final legacy = getSeedLegacy("English");
43
return legacy;
44
}
45
@@ -49,6 +49,9 @@ String getSeedLegacy(String? language) {
49
monero.Wallet_setSeedLanguage(wptr!, language: language ?? "English");
50
legacy = monero.Wallet_seed(wptr!, seedOffset: '');
51
}
52
+ if (monero.Wallet_status(wptr!) != 0) {
53
+ return monero.Wallet_errorString(wptr!);
54
+ }
55
return legacy;
56
}
57
cw_monero/lib/api/wallet_manager.dart
+10
-1
@@ -123,7 +123,16 @@ void restoreWalletFromKeysSync(
123
int nettype = 0,
124
int restoreHeight = 0}) {
125
txhistory = null;
126
- final newWptr = monero.WalletManager_createWalletFromKeys(
126
+ final newWptr = spendKey != ""
127
+ ? monero.WalletManager_createDeterministicWalletFromSpendKey(
128
+ wmPtr,
129
+ path: path,
130
+ password: password,
131
+ language: language,
132
+ spendKeyString: spendKey,
133
+ newWallet: true, // TODO(mrcyjanek): safe to remove
134
+ restoreHeight: restoreHeight)
135
+ : monero.WalletManager_createWalletFromKeys(
136
wmPtr,
137
path: path,
138
password: password,
cw_wownero/lib/api/wallet.dart
+4
-1
@@ -41,7 +41,7 @@ String getSeed() {
41
if (polyseed != "") {
42
return polyseed;
43
}
44
- final legacy = wownero.Wallet_seed(wptr!, seedOffset: '');
44
+ final legacy = getSeedLegacy(null);
45
return legacy;
46
}
47
@@ -51,6 +51,9 @@ String getSeedLegacy(String? language) {
51
wownero.Wallet_setSeedLanguage(wptr!, language: language ?? "English");
52
legacy = wownero.Wallet_seed(wptr!, seedOffset: '');
53
}
54
+ if (wownero.Wallet_status(wptr!) != 0) {
55
+ return wownero.Wallet_errorString(wptr!);
56
+ }
57
return legacy;
58
}
59
cw_wownero/lib/api/wallet_manager.dart
+10
-1
@@ -140,7 +140,16 @@ void restoreWalletFromKeysSync(
140
int nettype = 0,
141
int restoreHeight = 0}) {
142
txhistory = null;
143
- final newWptr = wownero.WalletManager_createWalletFromKeys(
143
+ final newWptr = spendKey != ""
144
+ ? wownero.WalletManager_createDeterministicWalletFromSpendKey(
145
+ wmPtr,
146
+ path: path,
147
+ password: password,
148
+ language: language,
149
+ spendKeyString: spendKey,
150
+ newWallet: true, // TODO(mrcyjanek): safe to remove
151
+ restoreHeight: restoreHeight)
152
+ : wownero.WalletManager_createWalletFromKeys(
153
wmPtr,
154
path: path,
155
password: password,
lib/view_model/dashboard/dashboard_view_model.dart
+8
-5
@@ -362,12 +362,15 @@ abstract class DashboardViewModelBase with Store {
362
if (wallet.type != WalletType.monero) return [];
363
final keys = monero!.getKeys(wallet);
364
List<String> errors = [
365
- if (keys['privateSpendKey'] == List.generate(64, (index) => "0").join("")) "Private spend key is 0",
365
+ // leaving these commented out for now, I'll be able to fix that properly in the airgap update
366
+ // to not cause work duplication, this will do the job as well, it will be slightly less precise
367
+ // about what happened - but still enough.
368
+ // if (keys['privateSpendKey'] == List.generate(64, (index) => "0").join("")) "Private spend key is 0",
369
if (keys['privateViewKey'] == List.generate(64, (index) => "0").join("")) "private view key is 0",
367
- if (keys['publicSpendKey'] == List.generate(64, (index) => "0").join("")) "public spend key is 0",
368
- if (keys['publicViewKey'] == List.generate(64, (index) => "0").join("")) "private view key is 0",
369
- if (wallet.seed == null) "wallet seed is null",
370
- if (wallet.seed == "") "wallet seed is empty",
370
+ // if (keys['publicSpendKey'] == List.generate(64, (index) => "0").join("")) "public spend key is 0",
371
+ if (keys['publicViewKey'] == List.generate(64, (index) => "0").join("")) "public view key is 0",
372
+ // if (wallet.seed == null) "wallet seed is null",
373
+ // if (wallet.seed == "") "wallet seed is empty",
374
if (monero!.getSubaddressList(wallet).getAll(wallet)[0].address == "41d7FXjswpK1111111111111111111111111111111111111111111111111111111111111111111111111111112KhNi4")
375
"primary address is invalid, you won't be able to receive / spend funds",
376
];