46
const wowneroDefaultNodeUri = 'node3.monerodevs.org:34568';
47
const zanoDefaultNodeUri = 'zano.cakewallet.com:11211';
48
const moneroWorldNodeUri = '.moneroworld.com';
49
+const decredDefaultUri = "default-spv-nodes";
50
51
Future<void> defaultSettingsMigration(
52
{required int version,
97
PreferencesKey.currentBalanceDisplayModeKey, BalanceDisplayMode.availableBalance.raw);
98
await sharedPreferences.setBool('save_recipient_address', true);
99
await resetToDefault(nodes);
99
- await changeMoneroCurrentNodeToDefault(
100
- sharedPreferences: sharedPreferences, nodes: nodes);
101
- await changeBitcoinCurrentElectrumServerToDefault(
102
- sharedPreferences: sharedPreferences, nodes: nodes);
103
- await changeLitecoinCurrentElectrumServerToDefault(
104
- sharedPreferences: sharedPreferences, nodes: nodes);
105
- await changeHavenCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
106
- await changeBitcoinCashCurrentNodeToDefault(
107
- sharedPreferences: sharedPreferences, nodes: nodes);
100
101
+ await _changeDefaultNode(
102
+ nodes: nodes,
103
+ sharedPreferences: sharedPreferences,
104
+ type: WalletType.monero,
105
+ currentNodePreferenceKey: PreferencesKey.currentNodeIdKey,
106
+ useSSL: true,
107
+ trusted: true,
108
+ );
109
+ await _changeDefaultNode(
110
+ nodes: nodes,
111
+ sharedPreferences: sharedPreferences,
112
+ type: WalletType.bitcoin,
113
+ currentNodePreferenceKey: PreferencesKey.currentBitcoinElectrumSererIdKey,
114
+ useSSL: true,
115
+ );
116
+ await _changeDefaultNode(
117
+ nodes: nodes,
118
+ sharedPreferences: sharedPreferences,
119
+ type: WalletType.litecoin,
120
+ currentNodePreferenceKey: PreferencesKey.currentLitecoinElectrumSererIdKey,
121
+ useSSL: true,
122
+ );
123
+ await _changeDefaultNode(
124
+ nodes: nodes,
125
+ sharedPreferences: sharedPreferences,
126
+ type: WalletType.haven,
127
+ currentNodePreferenceKey: PreferencesKey.currentHavenNodeIdKey,
128
+ );
129
break;
130
case 2:
131
await replaceNodesMigration(nodes: nodes);
112
- await replaceDefaultNode(sharedPreferences: sharedPreferences, nodes: nodes);
113
-
132
+ await _changeDefaultNode(
133
+ nodes: nodes,
134
+ sharedPreferences: sharedPreferences,
135
+ type: WalletType.monero,
136
+ newDefaultUri: newCakeWalletMoneroUri,
137
+ currentNodePreferenceKey: PreferencesKey.currentNodeIdKey,
138
+ useSSL: true,
139
+ trusted: true,
140
+ oldUri: [
141
+ 'xmr-node-uk.cakewallet.com:18081',
142
+ 'eu-node.cakewallet.io:18081',
143
+ 'node.cakewallet.io:18081'
144
+ ],
145
+ );
146
break;
147
case 3:
148
await updateNodeTypes(nodes: nodes);
117
- await addBitcoinElectrumServerList(nodes: nodes);
149
+ await addWalletNodeList(nodes: nodes, type: WalletType.bitcoin);
150
151
break;
152
case 4:
121
- await changeBitcoinCurrentElectrumServerToDefault(
122
- sharedPreferences: sharedPreferences, nodes: nodes);
153
+ await _changeDefaultNode(
154
+ nodes: nodes,
155
+ sharedPreferences: sharedPreferences,
156
+ type: WalletType.bitcoin,
157
+ newDefaultUri: newCakeWalletBitcoinUri,
158
+ currentNodePreferenceKey: PreferencesKey.currentBitcoinElectrumSererIdKey,
159
+ useSSL: true,
160
+ );
161
break;
162
163
case 5:
177
break;
178
179
case 11:
142
- await changeDefaultMoneroNode(nodes, sharedPreferences);
180
+ await _changeDefaultNode(
181
+ nodes: nodes,
182
+ sharedPreferences: sharedPreferences,
183
+ type: WalletType.monero,
184
+ newDefaultUri: newCakeWalletMoneroUri,
185
+ currentNodePreferenceKey: PreferencesKey.currentNodeIdKey,
186
+ trusted: true,
187
+ oldUri: ['.cakewallet.com'],
188
+ );
189
break;
190
191
case 12:
197
break;
198
199
case 15:
154
- await addLitecoinElectrumServerList(nodes: nodes);
155
- await changeLitecoinCurrentElectrumServerToDefault(
156
- sharedPreferences: sharedPreferences, nodes: nodes);
200
+ await addWalletNodeList(nodes: nodes, type: WalletType.litecoin);
201
+ await _changeDefaultNode(
202
+ nodes: nodes,
203
+ sharedPreferences: sharedPreferences,
204
+ type: WalletType.litecoin,
205
+ currentNodePreferenceKey: PreferencesKey.currentLitecoinElectrumSererIdKey,
206
+ );
207
await checkCurrentNodes(nodes, powNodes, sharedPreferences);
208
break;
209
210
case 16:
161
- await addHavenNodeList(nodes: nodes);
162
- await changeHavenCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
211
+ await addWalletNodeList(nodes: nodes, type: WalletType.haven);
212
+ await _changeDefaultNode(
213
+ nodes: nodes,
214
+ sharedPreferences: sharedPreferences,
215
+ type: WalletType.haven,
216
+ currentNodePreferenceKey: PreferencesKey.currentHavenNodeIdKey,
217
+ );
218
await checkCurrentNodes(nodes, powNodes, sharedPreferences);
219
break;
220
221
case 17:
167
- await changeDefaultHavenNode(nodes);
222
+ await _changeDefaultNode(
223
+ nodes: nodes,
224
+ sharedPreferences: sharedPreferences,
225
+ type: WalletType.haven,
226
+ currentNodePreferenceKey: PreferencesKey.currentHavenNodeIdKey,
227
+ );
228
break;
229
230
case 18:
171
- await updateWalletTypeNodesWithNewNode(
172
- nodes: nodes,
173
- newNodeUri: "cakexmrl7bonq7ovjka5kuwuyd3f7qnkz6z6s6dmsy3uckwra7bvggyd.onion:18081",
174
- type: WalletType.monero,
175
- );
231
+ addWalletNodeList(nodes: nodes, type: WalletType.monero);
232
break;
233
234
case 19:
238
await migrateExchangeStatus(sharedPreferences);
239
break;
240
case 21:
185
- await addEthereumNodeList(nodes: nodes);
186
- await changeEthereumCurrentNodeToDefault(
187
- sharedPreferences: sharedPreferences, nodes: nodes);
241
+ await addWalletNodeList(nodes: nodes, type: WalletType.ethereum);
242
+ await _changeDefaultNode(
243
+ nodes: nodes,
244
+ sharedPreferences: sharedPreferences,
245
+ type: WalletType.ethereum,
246
+ currentNodePreferenceKey: PreferencesKey.currentEthereumNodeIdKey,
247
+ );
248
break;
249
case 22:
190
- await addNanoNodeList(nodes: nodes);
250
+ await addWalletNodeList(nodes: nodes, type: WalletType.nano);
251
await addNanoPowNodeList(nodes: powNodes);
192
- await changeNanoCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
193
- await changeNanoCurrentPowNodeToDefault(
194
- sharedPreferences: sharedPreferences, nodes: powNodes);
252
+ await _changeDefaultNode(
253
+ nodes: nodes,
254
+ sharedPreferences: sharedPreferences,
255
+ type: WalletType.nano,
256
+ currentNodePreferenceKey: PreferencesKey.currentNanoNodeIdKey,
257
+ );
258
+ await _changeDefaultNode(
259
+ nodes: powNodes,
260
+ sharedPreferences: sharedPreferences,
261
+ type: WalletType.nano,
262
+ currentNodePreferenceKey: PreferencesKey.currentNanoPowNodeIdKey,
263
+ newDefaultUri: nanoDefaultPowNodeUri,
264
+ );
265
break;
266
case 23:
197
- await addBitcoinCashElectrumServerList(nodes: nodes);
198
- await changeBitcoinCurrentElectrumServerToDefault(
199
- sharedPreferences: sharedPreferences, nodes: nodes);
267
+ await addWalletNodeList(nodes: nodes, type: WalletType.bitcoinCash);
268
+ await _changeDefaultNode(
269
+ nodes: nodes,
270
+ sharedPreferences: sharedPreferences,
271
+ type: WalletType.bitcoinCash,
272
+ currentNodePreferenceKey: PreferencesKey.currentBitcoinCashNodeIdKey,
273
+ );
274
break;
275
case 24:
202
- await addPolygonNodeList(nodes: nodes);
203
- await changePolygonCurrentNodeToDefault(
204
- sharedPreferences: sharedPreferences, nodes: nodes);
276
+ await addWalletNodeList(nodes: nodes, type: WalletType.polygon);
277
+ await _changeDefaultNode(
278
+ nodes: nodes,
279
+ sharedPreferences: sharedPreferences,
280
+ type: WalletType.polygon,
281
+ currentNodePreferenceKey: PreferencesKey.currentPolygonNodeIdKey,
282
+ );
283
break;
284
case 25:
285
await rewriteSecureStoragePin(secureStorage: secureStorage);
286
break;
287
case 26:
288
211
- /// commented out as it was a probable cause for some users to have white screen issues
212
- /// maybe due to multiple access on Secure Storage at once
213
- /// or long await time on start of the app
214
- // await insecureStorageMigration(secureStorage: secureStorage, sharedPreferences: sharedPreferences);
289
+ /// commented out as it was a probable cause for some users to have white screen issues
290
+ /// maybe due to multiple access on Secure Storage at once
291
+ /// or long await time on start of the app
292
+ // await insecureStorageMigration(secureStorage: secureStorage, sharedPreferences: sharedPreferences);
293
+ break;
294
case 27:
216
- await addSolanaNodeList(nodes: nodes);
217
- await changeSolanaCurrentNodeToDefault(
218
- sharedPreferences: sharedPreferences, nodes: nodes);
295
+ await addWalletNodeList(nodes: nodes, type: WalletType.solana);
296
+ await _changeDefaultNode(
297
+ nodes: nodes,
298
+ sharedPreferences: sharedPreferences,
299
+ type: WalletType.solana,
300
+ currentNodePreferenceKey: PreferencesKey.currentSolanaNodeIdKey,
301
+ );
302
break;
303
304
case 28:
305
await _updateMoneroPriority(sharedPreferences);
306
break;
307
case 29:
225
- await changeDefaultBitcoinNode(nodes, sharedPreferences);
308
+ await _changeDefaultNode(
309
+ nodes: nodes,
310
+ sharedPreferences: sharedPreferences,
311
+ type: WalletType.bitcoin,
312
+ newDefaultUri: newCakeWalletBitcoinUri,
313
+ currentNodePreferenceKey: PreferencesKey.currentBitcoinElectrumSererIdKey,
314
+ useSSL: true,
315
+ oldUri: ['.cakewallet.com'],
316
+ );
317
break;
318
case 30:
319
await disableServiceStatusFiatDisabled(sharedPreferences);
325
await updateBtcNanoWalletInfos(walletInfoSource);
326
break;
327
case 33:
237
- await addTronNodeList(nodes: nodes);
238
- await changeTronCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
328
+ await addWalletNodeList(nodes: nodes, type: WalletType.tron);
329
+ await _changeDefaultNode(
330
+ nodes: nodes,
331
+ sharedPreferences: sharedPreferences,
332
+ type: WalletType.tron,
333
+ currentNodePreferenceKey: PreferencesKey.currentTronNodeIdKey,
334
+ );
335
break;
336
case 34:
241
- await _addElectRsNode(nodes, sharedPreferences);
337
+ addWalletNodeList(nodes: nodes, type: WalletType.bitcoin);
338
case 35:
243
- await _switchElectRsNode(nodes, sharedPreferences);
339
+ await _changeDefaultNode(
340
+ nodes: nodes,
341
+ sharedPreferences: sharedPreferences,
342
+ type: WalletType.bitcoin,
343
+ newDefaultUri: newCakeWalletBitcoinUri,
344
+ currentNodePreferenceKey: PreferencesKey.currentBitcoinElectrumSererIdKey,
345
+ useSSL: true,
346
+ oldUri: ['electrs.cakewallet.com'],
347
+ );
348
break;
349
case 36:
246
- await addWowneroNodeList(nodes: nodes);
350
+ await addWalletNodeList(nodes: nodes, type: WalletType.wownero);
351
await changeWowneroCurrentNodeToDefault(
352
sharedPreferences: sharedPreferences, nodes: nodes);
353
break;
354
case 37:
251
- await replaceTronDefaultNode(sharedPreferences: sharedPreferences, nodes: nodes);
355
+ // removed as it would be replaced again anyway
356
+ // await replaceTronDefaultNode(sharedPreferences: sharedPreferences, nodes: nodes);
357
break;
358
case 38:
359
await fixBtcDerivationPaths(walletInfoSource);
360
break;
361
case 39:
362
_fixNodesUseSSLFlag(nodes);
258
- await changeDefaultNanoNode(nodes, sharedPreferences);
363
+ await _changeDefaultNode(
364
+ nodes: nodes,
365
+ sharedPreferences: sharedPreferences,
366
+ type: WalletType.nano,
367
+ newDefaultUri: nanoDefaultNodeUri,
368
+ currentNodePreferenceKey: PreferencesKey.currentNanoNodeIdKey,
369
+ useSSL: true,
370
+ oldUri: ['rpc.nano.to'],
371
+ );
372
break;
373
case 40:
374
await removeMoneroWorld(sharedPreferences: sharedPreferences, nodes: nodes);
379
providerName: "SwapTrade",
380
enabled: false,
381
);
269
- await _addSethNode(nodes, sharedPreferences);
270
- await updateTronNodesWithNowNodes(sharedPreferences: sharedPreferences, nodes: nodes);
382
+ addWalletNodeList(nodes: nodes, type: WalletType.bitcoin);
383
+ addWalletNodeList(nodes: nodes, type: WalletType.tron);
384
break;
385
case 42:
386
_fixNodesUseSSLFlag(nodes);
425
case 45:
426
await _backupHavenSeeds(havenSeedStore);
427
315
- updateWalletTypeNodesWithNewNode(
316
- newNodeUri: 'matic.nownodes.io',
317
- nodes: nodes,
318
- type: WalletType.polygon,
319
- useSSL: true,
320
- );
321
- updateWalletTypeNodesWithNewNode(
322
- newNodeUri: 'eth.nownodes.io',
323
- nodes: nodes,
324
- type: WalletType.ethereum,
325
- useSSL: true,
326
- );
327
-
428
+ addWalletNodeList(nodes: nodes, type: WalletType.polygon);
429
+ addWalletNodeList(nodes: nodes, type: WalletType.ethereum);
430
_changeDefaultNode(
431
nodes: nodes,
432
sharedPreferences: sharedPreferences,
451
break;
452
case 46:
453
await _fixNodesUseSSLFlag(nodes);
352
- await updateWalletTypeNodesWithNewNode(
353
- newNodeUri: 'litecoin.stackwallet.com:20063',
354
- nodes: nodes,
355
- type: WalletType.litecoin,
356
- useSSL: true,
357
- );
358
- await updateWalletTypeNodesWithNewNode(
359
- newNodeUri: 'electrum-ltc.bysh.me:50002',
360
- nodes: nodes,
361
- type: WalletType.litecoin,
362
- useSSL: true,
363
- );
454
+ await addWalletNodeList(nodes: nodes, type: WalletType.litecoin);
455
await _changeDefaultNode(
456
nodes: nodes,
457
sharedPreferences: sharedPreferences,
477
newUri: "polygon-bor-rpc.publicnode.com",
478
useSSL: true,
479
);
389
- break;
480
case 47:
391
- await addZanoNodeList(nodes: nodes);
392
- await changeZanoCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
481
+ await addWalletNodeList(nodes: nodes, type: WalletType.zano);
482
+ await _changeDefaultNode(
483
+ nodes: nodes,
484
+ sharedPreferences: sharedPreferences,
485
+ type: WalletType.zano,
486
+ currentNodePreferenceKey: PreferencesKey.currentZanoNodeIdKey,
487
+ );
488
_changeExchangeProviderAvailability(
489
sharedPreferences,
490
providerName: "SimpleSwap",
495
providerName: "SwapTrade",
496
enabled: false,
497
);
403
- break;
498
+ break;
499
case 48:
500
+ await addWalletNodeList(nodes: nodes, type: WalletType.decred);
501
+ await _changeDefaultNode(
502
+ nodes: nodes,
503
+ sharedPreferences: sharedPreferences,
504
+ type: WalletType.decred,
505
+ currentNodePreferenceKey: PreferencesKey.currentDecredNodeIdKey,
506
+ );
507
+ break;
508
+ case 49:
509
_changeExchangeProviderAvailability(
510
sharedPreferences,
511
providerName: "SwapTrade",
518
519
await sharedPreferences.setInt(
520
PreferencesKey.currentDefaultSettingsMigrationVersion, version);
417
- } catch (e) {
521
+ } catch (e, s) {
522
printV('Migration error: ${e.toString()}');
523
+ printV('Migration error: ${s}');
524
}
525
});
526
560
required Box<Node> nodes,
561
required SharedPreferences sharedPreferences,
562
required WalletType type,
458
- required String newDefaultUri,
563
required String currentNodePreferenceKey,
460
- required bool useSSL,
461
- required List<String>
462
- oldUri, // leave empty if you want to force replace the node regardless of the user's current node
564
+ bool useSSL = true,
565
+ bool trusted = false,
566
+ String? newDefaultUri, // ignore, if you want to use the default node uri
567
+ List<String>?
568
+ oldUri, // ignore, if you want to force replace the node regardless of the user's current node
569
}) async {
570
final currentNodeId = sharedPreferences.getInt(currentNodePreferenceKey);
465
- final currentNode = nodes.values.firstWhere((node) => node.key == currentNodeId);
466
- final shouldReplace = oldUri.any((e) => currentNode.uriRaw.contains(e));
571
+ final bool shouldReplace;
572
+ if (currentNodeId == null) {
573
+ shouldReplace = true;
574
+ } else {
575
+ final currentNode = nodes.values.firstWhere((node) => node.key == currentNodeId);
576
+ shouldReplace = oldUri?.any((e) => currentNode.uriRaw.contains(e)) ?? true;
577
+ }
578
579
if (shouldReplace) {
580
+ newDefaultUri ??= _getDefaultNodeUri(type);
581
var newNodeId =
582
nodes.values.firstWhereOrNull((element) => element.uriRaw == newDefaultUri)?.key;
583
587
uri: newDefaultUri,
588
type: type,
589
useSSL: useSSL,
590
+ trusted: trusted,
591
);
592
593
await nodes.add(newNode);
598
}
599
}
600
488
-/// Generic function for adding a new Node for a Wallet Type.
489
-Future<void> updateWalletTypeNodesWithNewNode({
490
- required Box<Node> nodes,
491
- required WalletType type,
492
- required String newNodeUri,
493
- bool? useSSL,
494
-}) async {
495
- // If it already exists in the box of nodes, no need to add it annymore.
496
- if (nodes.values.any((node) => node.uriRaw == newNodeUri)) return;
497
-
498
- await nodes.add(
499
- Node(
500
- uri: newNodeUri,
501
- type: type,
502
- useSSL: useSSL,
503
- ),
504
- );
601
+String _getDefaultNodeUri(WalletType type) {
602
+ switch (type) {
603
+ case WalletType.monero:
604
+ return newCakeWalletMoneroUri;
605
+ case WalletType.bitcoin:
606
+ return newCakeWalletBitcoinUri;
607
+ case WalletType.litecoin:
608
+ return cakeWalletLitecoinElectrumUri;
609
+ case WalletType.haven:
610
+ return havenDefaultNodeUri;
611
+ case WalletType.ethereum:
612
+ return ethereumDefaultNodeUri;
613
+ case WalletType.nano:
614
+ return nanoDefaultNodeUri;
615
+ case WalletType.bitcoinCash:
616
+ return cakeWalletBitcoinCashDefaultNodeUri;
617
+ case WalletType.polygon:
618
+ return polygonDefaultNodeUri;
619
+ case WalletType.solana:
620
+ return solanaDefaultNodeUri;
621
+ case WalletType.tron:
622
+ return tronDefaultNodeUri;
623
+ case WalletType.wownero:
624
+ return wowneroDefaultNodeUri;
625
+ case WalletType.zano:
626
+ return zanoDefaultNodeUri;
627
+ case WalletType.decred:
628
+ return decredDefaultUri;
629
+ case WalletType.banano:
630
+ case WalletType.none:
631
+ return '';
632
+ }
633
}
634
635
void _changeExchangeProviderAvailability(SharedPreferences sharedPreferences,
661
}
662
663
Future<void> updateNanoNodeList({required Box<Node> nodes}) async {
536
- final nodeList = await loadDefaultNanoNodes();
664
+ final nodeList = await loadDefaultNodes(WalletType.nano);
665
var listOfNewEndpoints = <String>[
666
"app.natrium.io",
667
"rainstorm.city",
810
});
811
}
812
685
-Future<void> changeMoneroCurrentNodeToDefault(
686
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
687
- final node = getMoneroDefaultNode(nodes: nodes);
688
- final nodeId = node.key as int? ?? 0; // 0 - England
689
-
690
- await sharedPreferences.setInt(PreferencesKey.currentNodeIdKey, nodeId);
691
-}
692
-
693
-Node? getBitcoinDefaultElectrumServer({required Box<Node> nodes}) {
694
- return nodes.values
695
- .firstWhereOrNull((Node node) => node.uriRaw == cakeWalletBitcoinElectrumUri) ??
696
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.bitcoin);
697
-}
698
-
813
Node? getBitcoinTestnetDefaultElectrumServer({required Box<Node> nodes}) {
814
return nodes.values
815
.firstWhereOrNull((Node node) => node.uriRaw == publicBitcoinTestnetElectrumUri) ??
816
nodes.values.firstWhereOrNull((node) => node.type == WalletType.bitcoin);
817
}
818
705
-Node? getLitecoinDefaultElectrumServer({required Box<Node> nodes}) {
706
- return nodes.values
707
- .firstWhereOrNull((Node node) => node.uriRaw == cakeWalletLitecoinElectrumUri) ??
708
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.litecoin);
709
-}
710
-
711
-Node? getHavenDefaultNode({required Box<Node> nodes}) {
712
- return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == havenDefaultNodeUri) ??
713
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.haven);
714
-}
715
-
716
-Node? getEthereumDefaultNode({required Box<Node> nodes}) {
717
- return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == ethereumDefaultNodeUri) ??
718
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.ethereum);
719
-}
720
-
721
-Node? getPolygonDefaultNode({required Box<Node> nodes}) {
722
- return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == polygonDefaultNodeUri) ??
723
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.polygon);
724
-}
725
-
726
-Node? getNanoDefaultNode({required Box<Node> nodes}) {
727
- return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == nanoDefaultNodeUri) ??
728
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.nano);
729
-}
730
-
731
-Node? getNanoDefaultPowNode({required Box<Node> nodes}) {
732
- return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == nanoDefaultPowNodeUri) ??
733
- nodes.values.firstWhereOrNull((node) => (node.type == WalletType.nano));
734
-}
735
-
736
-Node? getBitcoinCashDefaultElectrumServer({required Box<Node> nodes}) {
737
- return nodes.values
738
- .firstWhereOrNull((Node node) => node.uriRaw == cakeWalletBitcoinCashDefaultNodeUri) ??
739
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.bitcoinCash);
740
-}
741
-
742
-Node? getZanoDefaultNode({required Box<Node> nodes}) {
743
- return nodes.values.firstWhereOrNull(
744
- (Node node) => node.uriRaw == zanoDefaultNodeUri)
745
- ?? nodes.values.firstWhereOrNull((node) => node.type == WalletType.zano);
746
-}
747
-
748
-Node getMoneroDefaultNode({required Box<Node> nodes}) {
749
- var nodeUri = newCakeWalletMoneroUri;
750
-
751
- try {
752
- return nodes.values.firstWhere((Node node) => node.uriRaw == nodeUri);
753
- } catch (_) {
754
- return nodes.values.first;
755
- }
756
-}
757
-
758
-Node? getSolanaDefaultNode({required Box<Node> nodes}) {
759
- return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == solanaDefaultNodeUri) ??
760
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.solana);
761
-}
762
-
763
-Node? getTronDefaultNode({required Box<Node> nodes}) {
764
- return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == tronDefaultNodeUri) ??
765
- nodes.values.firstWhereOrNull((node) => node.type == WalletType.tron);
819
+Node? getDefaultNode({required Box<Node> nodes, required WalletType type}) {
820
+ final defaultUri = _getDefaultNodeUri(type);
821
+ return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == defaultUri) ??
822
+ nodes.values.firstWhereOrNull((node) => node.type == type);
823
}
824
825
Node getWowneroDefaultNode({required Box<Node> nodes}) {
956
);
957
}
958
902
-Future<void> changeBitcoinCurrentElectrumServerToDefault(
903
- {required SharedPreferences sharedPreferences,
904
- required Box<Node> nodes,
905
- bool? isTestnet}) async {
906
- Node? server;
907
- if (isTestnet == true) {
908
- server = getBitcoinTestnetDefaultElectrumServer(nodes: nodes);
909
- } else {
910
- server = getBitcoinDefaultElectrumServer(nodes: nodes);
911
- }
912
- final serverId = server?.key as int? ?? 0;
913
-
914
- await sharedPreferences.setInt(PreferencesKey.currentBitcoinElectrumSererIdKey, serverId);
915
-}
916
-
917
-Future<void> changeLitecoinCurrentElectrumServerToDefault(
918
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
919
- final server = getLitecoinDefaultElectrumServer(nodes: nodes);
920
- final serverId = server?.key as int? ?? 0;
921
-
922
- await sharedPreferences.setInt(PreferencesKey.currentLitecoinElectrumSererIdKey, serverId);
923
-}
924
-
925
-Future<void> changeBitcoinCashCurrentNodeToDefault(
926
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
927
- final server = getBitcoinCashDefaultElectrumServer(nodes: nodes);
928
- final serverId = server?.key as int? ?? 0;
929
-
930
- await sharedPreferences.setInt(PreferencesKey.currentBitcoinCashNodeIdKey, serverId);
931
-}
932
-
933
-Future<void> changeHavenCurrentNodeToDefault(
934
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
935
- final node = getHavenDefaultNode(nodes: nodes);
936
- final nodeId = node?.key as int? ?? 0;
937
-
938
- await sharedPreferences.setInt(PreferencesKey.currentHavenNodeIdKey, nodeId);
939
-}
940
-
941
-Future<void> replaceDefaultNode(
942
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
943
- const nodesForReplace = <String>[
944
- 'xmr-node-uk.cakewallet.com:18081',
945
- 'eu-node.cakewallet.io:18081',
946
- 'node.cakewallet.io:18081'
947
- ];
948
- final currentNodeId = sharedPreferences.getInt(PreferencesKey.currentNodeIdKey);
949
- final currentNode = nodes.values.firstWhereOrNull((Node node) => node.key == currentNodeId);
950
- final needToReplace = currentNode == null ? true : nodesForReplace.contains(currentNode.uriRaw);
951
-
952
- if (!needToReplace) {
953
- return;
954
- }
955
-
956
- await changeMoneroCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
957
-}
958
-
959
Future<void> updateNodeTypes({required Box<Node> nodes}) async {
960
nodes.values.forEach((node) async {
961
if (node.type == null) {
965
});
966
}
967
968
-Future<void> addBitcoinElectrumServerList({required Box<Node> nodes}) async {
969
- final serverList = await loadBitcoinElectrumServerList();
970
- for (var node in serverList) {
971
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
972
- await nodes.add(node);
973
- }
974
- }
975
-}
976
-
977
-Future<void> addLitecoinElectrumServerList({required Box<Node> nodes}) async {
978
- final serverList = await loadLitecoinElectrumServerList();
979
- for (var node in serverList) {
980
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
981
- await nodes.add(node);
982
- }
983
- }
984
-}
985
-
986
-Future<void> addBitcoinCashElectrumServerList({required Box<Node> nodes}) async {
987
- final serverList = await loadBitcoinCashElectrumServerList();
988
- for (var node in serverList) {
989
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
990
- await nodes.add(node);
991
- }
992
- }
993
-}
994
-
995
-Future<void> addHavenNodeList({required Box<Node> nodes}) async {
996
- final nodeList = await loadDefaultHavenNodes();
997
- for (var node in nodeList) {
998
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
999
- await nodes.add(node);
1000
- }
1001
- }
1002
-}
1003
-
968
Future<void> addAddressesForMoneroWallets(Box<WalletInfo> walletInfoSource) async {
969
final moneroWalletsInfo = walletInfoSource.values.where((info) => info.type == WalletType.monero);
970
moneroWalletsInfo.forEach((info) async {
1014
bitcoin!.getMediumTransactionPriority().serialize());
1015
}
1016
1053
-Future<void> changeDefaultMoneroNode(
1054
- Box<Node> nodeSource, SharedPreferences sharedPreferences) async {
1055
- const cakeWalletMoneroNodeUriPattern = '.cakewallet.com';
1056
- final currentMoneroNodeId = sharedPreferences.getInt(PreferencesKey.currentNodeIdKey);
1057
- final currentMoneroNode = nodeSource.values.firstWhere((node) => node.key == currentMoneroNodeId);
1058
- final needToReplaceCurrentMoneroNode =
1059
- currentMoneroNode.uri.toString().contains(cakeWalletMoneroNodeUriPattern);
1060
-
1061
- nodeSource.values.forEach((node) async {
1062
- if (node.type == WalletType.monero &&
1063
- node.uri.toString().contains(cakeWalletMoneroNodeUriPattern)) {
1064
- await node.delete();
1065
- }
1066
- });
1067
-
1068
- final newCakeWalletNode =
1069
- Node(uri: newCakeWalletMoneroUri, type: WalletType.monero, trusted: true);
1070
-
1071
- await nodeSource.add(newCakeWalletNode);
1072
-
1073
- if (needToReplaceCurrentMoneroNode) {
1074
- await sharedPreferences.setInt(PreferencesKey.currentNodeIdKey, newCakeWalletNode.key as int);
1075
- }
1076
-}
1077
-
1017
Future<void> fixBtcDerivationPaths(Box<WalletInfo> walletsInfoSource) async {
1018
for (WalletInfo walletInfo in walletsInfoSource.values) {
1019
if (walletInfo.type == WalletType.bitcoin ||
1041
}
1042
}
1043
1105
-Future<void> changeDefaultNanoNode(
1106
- Box<Node> nodeSource, SharedPreferences sharedPreferences) async {
1107
- const oldNanoNodeUriPattern = 'rpc.nano.to';
1108
- final currentNanoNodeId = sharedPreferences.getInt(PreferencesKey.currentNanoNodeIdKey);
1109
- final currentNanoNode = nodeSource.values.firstWhere((node) => node.key == currentNanoNodeId);
1110
-
1111
- final newCakeWalletNode = Node(
1112
- uri: nanoDefaultNodeUri,
1113
- type: WalletType.nano,
1114
- useSSL: true,
1115
- );
1116
-
1117
- await nodeSource.add(newCakeWalletNode);
1118
-
1119
- if (currentNanoNode.uri.toString().contains(oldNanoNodeUriPattern)) {
1120
- await sharedPreferences.setInt(
1121
- PreferencesKey.currentNanoNodeIdKey, newCakeWalletNode.key as int);
1122
- }
1123
-}
1124
-
1125
-Future<void> changeDefaultBitcoinNode(
1126
- Box<Node> nodeSource, SharedPreferences sharedPreferences) async {
1127
- const cakeWalletBitcoinNodeUriPattern = '.cakewallet.com';
1128
- final currentBitcoinNodeId =
1129
- sharedPreferences.getInt(PreferencesKey.currentBitcoinElectrumSererIdKey);
1130
- final currentBitcoinNode =
1131
- nodeSource.values.firstWhere((node) => node.key == currentBitcoinNodeId);
1132
- final needToReplaceCurrentBitcoinNode =
1133
- currentBitcoinNode.uri.toString().contains(cakeWalletBitcoinNodeUriPattern);
1134
-
1135
- final newCakeWalletBitcoinNode =
1136
- Node(uri: newCakeWalletBitcoinUri, type: WalletType.bitcoin, useSSL: true);
1137
-
1138
- if (!nodeSource.values.any((element) => element.uriRaw == newCakeWalletBitcoinUri)) {
1139
- await nodeSource.add(newCakeWalletBitcoinNode);
1140
- }
1141
-
1142
- if (needToReplaceCurrentBitcoinNode) {
1143
- await sharedPreferences.setInt(
1144
- PreferencesKey.currentBitcoinElectrumSererIdKey, newCakeWalletBitcoinNode.key as int);
1145
- }
1146
-}
1147
-
1148
-Future<void> _addSethNode(Box<Node> nodeSource, SharedPreferences sharedPreferences) async {
1149
- _addBitcoinNode(
1150
- nodeSource: nodeSource,
1151
- sharedPreferences: sharedPreferences,
1152
- nodeUri: "fulcrum.sethforprivacy.com:50002",
1153
- useSSL: false,
1154
- );
1155
-}
1156
-
1157
-Future<void> _addElectRsNode(Box<Node> nodeSource, SharedPreferences sharedPreferences) async {
1158
- _addBitcoinNode(
1159
- nodeSource: nodeSource,
1160
- sharedPreferences: sharedPreferences,
1161
- nodeUri: cakeWalletSilentPaymentsElectrsUri,
1162
- );
1163
-}
1164
-
1165
-Future<void> _addBitcoinNode({
1166
- required Box<Node> nodeSource,
1167
- required SharedPreferences sharedPreferences,
1168
- required String nodeUri,
1169
- bool replaceExisting = false,
1170
- bool useSSL = false,
1171
-}) async {
1172
- bool isNodeExists = nodeSource.values.any((element) => element.uriRaw == nodeUri);
1173
- if (isNodeExists) {
1174
- return;
1175
- }
1176
- const cakeWalletBitcoinNodeUriPattern = '.cakewallet.com';
1177
- final currentBitcoinNodeId =
1178
- sharedPreferences.getInt(PreferencesKey.currentBitcoinElectrumSererIdKey);
1179
- final currentBitcoinNode =
1180
- nodeSource.values.firstWhere((node) => node.key == currentBitcoinNodeId);
1181
- final needToReplaceCurrentBitcoinNode =
1182
- currentBitcoinNode.uri.toString().contains(cakeWalletBitcoinNodeUriPattern);
1183
-
1184
- final newElectRsBitcoinNode = Node(uri: nodeUri, type: WalletType.bitcoin, useSSL: useSSL);
1185
-
1186
- await nodeSource.add(newElectRsBitcoinNode);
1187
-
1188
- if (needToReplaceCurrentBitcoinNode && replaceExisting) {
1189
- await sharedPreferences.setInt(
1190
- PreferencesKey.currentBitcoinElectrumSererIdKey, newElectRsBitcoinNode.key as int);
1191
- }
1192
-}
1193
-
1194
-Future<void> _switchElectRsNode(Box<Node> nodeSource, SharedPreferences sharedPreferences) async {
1195
- final currentBitcoinNodeId =
1196
- sharedPreferences.getInt(PreferencesKey.currentBitcoinElectrumSererIdKey);
1197
- final currentBitcoinNode =
1198
- nodeSource.values.firstWhere((node) => node.key == currentBitcoinNodeId);
1199
- final needToReplaceCurrentBitcoinNode =
1200
- currentBitcoinNode.uri.toString().contains('electrs.cakewallet.com');
1201
-
1202
- if (!needToReplaceCurrentBitcoinNode) return;
1203
-
1204
- final btcElectrumNode = nodeSource.values.firstWhereOrNull(
1205
- (node) => node.uri.toString().contains('btc-electrum.cakewallet.com'),
1206
- );
1207
-
1208
- if (btcElectrumNode == null) {
1209
- final newBtcElectrumBitcoinNode = Node(
1210
- uri: newCakeWalletBitcoinUri,
1211
- type: WalletType.bitcoin,
1212
- useSSL: false,
1213
- );
1214
- await nodeSource.add(newBtcElectrumBitcoinNode);
1215
- await sharedPreferences.setInt(
1216
- PreferencesKey.currentBitcoinElectrumSererIdKey,
1217
- newBtcElectrumBitcoinNode.key as int,
1218
- );
1219
- } else {
1220
- await sharedPreferences.setInt(
1221
- PreferencesKey.currentBitcoinElectrumSererIdKey,
1222
- btcElectrumNode.key as int,
1223
- );
1224
- }
1225
-}
1226
-
1044
Future<void> checkCurrentNodes(
1045
Box<Node> nodeSource, Box<Node> powNodeSource, SharedPreferences sharedPreferences) async {
1046
final currentMoneroNodeId = sharedPreferences.getInt(PreferencesKey.currentNodeIdKey);
1053
final currentPolygonNodeId = sharedPreferences.getInt(PreferencesKey.currentPolygonNodeIdKey);
1054
final currentNanoNodeId = sharedPreferences.getInt(PreferencesKey.currentNanoNodeIdKey);
1055
final currentNanoPowNodeId = sharedPreferences.getInt(PreferencesKey.currentNanoPowNodeIdKey);
1056
+ final currentDecredNodeId = sharedPreferences.getInt(PreferencesKey.currentDecredNodeIdKey);
1057
final currentBitcoinCashNodeId =
1058
sharedPreferences.getInt(PreferencesKey.currentBitcoinCashNodeIdKey);
1059
final currentSolanaNodeId = sharedPreferences.getInt(PreferencesKey.currentSolanaNodeIdKey);
1074
nodeSource.values.firstWhereOrNull((node) => node.key == currentPolygonNodeId);
1075
final currentNanoNodeServer =
1076
nodeSource.values.firstWhereOrNull((node) => node.key == currentNanoNodeId);
1077
+ final currentDecredNodeServer =
1078
+ nodeSource.values.firstWhereOrNull((node) => node.key == currentDecredNodeId);
1079
final currentNanoPowNodeServer =
1080
powNodeSource.values.firstWhereOrNull((node) => node.key == currentNanoPowNodeId);
1081
final currentBitcoinCashNodeServer =
1086
nodeSource.values.firstWhereOrNull((node) => node.key == currentTronNodeId);
1087
final currentWowneroNodeServer =
1088
nodeSource.values.firstWhereOrNull((node) => node.key == currentWowneroNodeId);
1269
- final currentZanoNode = nodeSource.values.firstWhereOrNull((node) => node.key == currentZanoNodeId);
1089
+ final currentZanoNode =
1090
+ nodeSource.values.firstWhereOrNull((node) => node.key == currentZanoNodeId);
1091
1092
if (currentMoneroNode == null) {
1093
final newCakeWalletNode = Node(uri: newCakeWalletMoneroUri, type: WalletType.monero);
1178
await nodeSource.add(node);
1179
await sharedPreferences.setInt(PreferencesKey.currentZanoNodeIdKey, node.key as int);
1180
}
1181
+
1182
+ if (currentDecredNodeServer == null) {
1183
+ final node = Node(uri: decredDefaultUri, type: WalletType.decred);
1184
+ await nodeSource.add(node);
1185
+ await sharedPreferences.setInt(PreferencesKey.currentDecredNodeIdKey, node.key as int);
1186
+ }
1187
}
1188
1189
Future<void> resetBitcoinElectrumServer(
1212
await oldElectrumServer?.delete();
1213
}
1214
1388
-Future<void> changeDefaultHavenNode(Box<Node> nodeSource) async {
1389
- const previousHavenDefaultNodeUri = 'vault.havenprotocol.org:443';
1390
- final havenNodes = nodeSource.values.where((node) => node.uriRaw == previousHavenDefaultNodeUri);
1391
- havenNodes.forEach((node) async {
1392
- node.uriRaw = havenDefaultNodeUri;
1393
- await node.save();
1394
- });
1395
-}
1396
-
1215
Future<void> migrateExchangeStatus(SharedPreferences sharedPreferences) async {
1216
final isExchangeDisabled = sharedPreferences.getBool(PreferencesKey.disableExchangeKey);
1217
if (isExchangeDisabled == null) {
1224
await sharedPreferences.remove(PreferencesKey.disableExchangeKey);
1225
}
1226
1409
-Future<void> addEthereumNodeList({required Box<Node> nodes}) async {
1410
- final nodeList = await loadDefaultEthereumNodes();
1411
- for (var node in nodeList) {
1412
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
1413
- await nodes.add(node);
1414
- }
1415
- }
1416
-}
1417
-
1418
-Future<void> changeEthereumCurrentNodeToDefault(
1419
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1420
- final node = getEthereumDefaultNode(nodes: nodes);
1421
- final nodeId = node?.key as int? ?? 0;
1422
-
1423
- await sharedPreferences.setInt(PreferencesKey.currentEthereumNodeIdKey, nodeId);
1424
-}
1425
-
1426
-Future<void> addWowneroNodeList({required Box<Node> nodes}) async {
1427
- final nodeList = await loadDefaultWowneroNodes();
1428
- for (var node in nodeList) {
1429
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
1430
- await nodes.add(node);
1431
- }
1432
- }
1433
-}
1434
-
1435
-Future<void> addZanoNodeList({required Box<Node> nodes}) async {
1436
- final nodeList = await loadDefaultZanoNodes();
1437
- for (var node in nodeList) {
1438
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
1439
- await nodes.add(node);
1440
- }
1441
- }
1442
-}
1443
-
1227
Future<void> changeWowneroCurrentNodeToDefault(
1228
{required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1229
final node = getWowneroDefaultNode(nodes: nodes);
1447
- final nodeId = node?.key as int? ?? 0;
1230
+ final nodeId = node.key as int? ?? 0;
1231
1232
await sharedPreferences.setInt(PreferencesKey.currentWowneroNodeIdKey, nodeId);
1233
}
1234
1452
-Future<void> changeZanoCurrentNodeToDefault(
1453
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1454
- final node = getZanoDefaultNode(nodes: nodes);
1455
- final nodeId = node?.key as int? ?? 0;
1456
- await sharedPreferences.setInt(PreferencesKey.currentZanoNodeIdKey, nodeId);
1457
-}
1458
-
1459
-Future<void> addNanoNodeList({required Box<Node> nodes}) async {
1460
- final nodeList = await loadDefaultNanoNodes();
1461
- for (var node in nodeList) {
1462
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
1463
- await nodes.add(node);
1464
- }
1465
- }
1466
-}
1467
-
1235
Future<void> addNanoPowNodeList({required Box<Node> nodes}) async {
1236
final nodeList = await loadDefaultNanoPowNodes();
1237
for (var node in nodeList) {
1241
}
1242
}
1243
1477
-Future<void> changeNanoCurrentNodeToDefault(
1478
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1479
- final node = getNanoDefaultNode(nodes: nodes);
1480
- final nodeId = node?.key as int? ?? 0;
1481
-
1482
- await sharedPreferences.setInt(PreferencesKey.currentNanoNodeIdKey, nodeId);
1483
-}
1484
-
1485
-Future<void> changeNanoCurrentPowNodeToDefault(
1486
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1487
- final node = getNanoDefaultPowNode(nodes: nodes);
1488
- final nodeId = node?.key as int? ?? 0;
1489
- await sharedPreferences.setInt(PreferencesKey.currentNanoPowNodeIdKey, nodeId);
1490
-}
1491
-
1492
-Future<void> addPolygonNodeList({required Box<Node> nodes}) async {
1493
- final nodeList = await loadDefaultPolygonNodes();
1494
- for (var node in nodeList) {
1495
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
1496
- await nodes.add(node);
1497
- }
1498
- }
1499
-}
1500
-
1501
-Future<void> changePolygonCurrentNodeToDefault(
1502
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1503
- final node = getPolygonDefaultNode(nodes: nodes);
1504
- final nodeId = node?.key as int? ?? 0;
1505
-
1506
- await sharedPreferences.setInt(PreferencesKey.currentPolygonNodeIdKey, nodeId);
1507
-}
1508
-
1509
-Future<void> addSolanaNodeList({required Box<Node> nodes}) async {
1510
- final nodeList = await loadDefaultSolanaNodes();
1511
- for (var node in nodeList) {
1512
- if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
1513
- await nodes.add(node);
1514
- }
1515
- }
1516
-}
1517
-
1518
-Future<void> changeSolanaCurrentNodeToDefault(
1519
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1520
- final node = getSolanaDefaultNode(nodes: nodes);
1521
- final nodeId = node?.key as int? ?? 0;
1522
-
1523
- await sharedPreferences.setInt(PreferencesKey.currentSolanaNodeIdKey, nodeId);
1244
+Node? getNanoDefaultPowNode({required Box<Node> nodes}) {
1245
+ return nodes.values.firstWhereOrNull((Node node) => node.uriRaw == nanoDefaultPowNodeUri) ??
1246
+ nodes.values.firstWhereOrNull((node) => (node.type == WalletType.nano));
1247
}
1248
1526
-Future<void> addTronNodeList({required Box<Node> nodes}) async {
1527
- final nodeList = await loadDefaultTronNodes();
1249
+Future<void> addWalletNodeList({required Box<Node> nodes, required WalletType type}) async {
1250
+ final List<Node> nodeList = await loadDefaultNodes(type);
1251
for (var node in nodeList) {
1252
if (nodes.values.firstWhereOrNull((element) => element.uriRaw == node.uriRaw) == null) {
1253
await nodes.add(node);
1255
}
1256
}
1257
1535
-Future<void> changeTronCurrentNodeToDefault(
1536
- {required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1537
- final node = getTronDefaultNode(nodes: nodes);
1538
- final nodeId = node?.key as int? ?? 0;
1539
-
1540
- await sharedPreferences.setInt(PreferencesKey.currentTronNodeIdKey, nodeId);
1541
-}
1542
-
1543
-Future<void> replaceTronDefaultNode({
1544
- required SharedPreferences sharedPreferences,
1545
- required Box<Node> nodes,
1546
-}) async {
1547
- // Get the currently active node
1548
- final currentTronNodeId = sharedPreferences.getInt(PreferencesKey.currentTronNodeIdKey);
1549
- final currentTronNode =
1550
- nodes.values.firstWhereOrNull((Node node) => node.key == currentTronNodeId);
1551
-
1552
- //Confirm if this node is part of the default nodes from CakeWallet
1553
- final tronDefaultNodeList = [
1554
- 'tron-rpc.publicnode.com:443',
1555
- 'api.trongrid.io',
1556
- ];
1557
- bool needsToBeReplaced =
1558
- currentTronNode == null ? true : tronDefaultNodeList.contains(currentTronNode.uriRaw);
1559
-
1560
- // If it's a custom node, return. We don't want to switch users from their custom nodes
1561
- if (!needsToBeReplaced) {
1562
- return;
1563
- }
1564
-
1565
- // If it's not, we switch user to the new default node: NowNodes
1566
- await changeTronCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
1567
-}
1568
-
1258
Future<void> removeMoneroWorld(
1259
{required SharedPreferences sharedPreferences, required Box<Node> nodes}) async {
1260
const cakeWalletMoneroNodeUriPattern = '.moneroworld.com';
1271
});
1272
1273
if (needToReplaceCurrentMoneroNode) {
1585
- await changeMoneroCurrentNodeToDefault(sharedPreferences: sharedPreferences, nodes: nodes);
1274
+ await _changeDefaultNode(
1275
+ nodes: nodes,
1276
+ sharedPreferences: sharedPreferences,
1277
+ type: WalletType.monero,
1278
+ newDefaultUri: newCakeWalletMoneroUri,
1279
+ currentNodePreferenceKey: PreferencesKey.currentNodeIdKey,
1280
+ trusted: true,
1281
+ );
1282
}
1283
}
1588
-
1589
-Future<void> updateTronNodesWithNowNodes({
1590
- required SharedPreferences sharedPreferences,
1591
- required Box<Node> nodes,
1592
-}) async {
1593
- final tronNowNodesUri = 'trx.nownodes.io';
1594
-
1595
- if (nodes.values.any((node) => node.uriRaw == tronNowNodesUri)) return;
1596
-
1597
- await nodes.add(Node(uri: tronNowNodesUri, type: WalletType.tron));
1598
-
1599
- await replaceTronDefaultNode(sharedPreferences: sharedPreferences, nodes: nodes);
1600
-}