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 ];