@@ -4,9 +4,9 @@ import 'dart:math';
44
55import 'package:isar/isar.dart' ;
66import 'package:mutex/mutex.dart' ;
7- import 'package:stack_wallet_backup/generate_password.dart' ;
87import 'package:xelis_dart_sdk/xelis_dart_sdk.dart' as xelis_sdk;
98import 'package:xelis_flutter/src/api/wallet.dart' as x_wallet;
9+ import 'package:stack_wallet_backup/generate_password.dart' ;
1010
1111import '../../../models/balance.dart' ;
1212import '../../../models/isar/models/blockchain_data/address.dart' ;
@@ -31,28 +31,6 @@ class XelisWallet extends LibXelisWallet {
3131 @override
3232 int get isarTransactionVersion => 2 ;
3333
34- @override
35- Future <void > init ({bool ? isRestore}) async {
36- Logging .instance.d ("Xelis: init" );
37-
38- if (isRestore == true ) {
39- await _restoreWallet ();
40- return await super .init ();
41- }
42-
43- final String ? walletExists = await secureStorageInterface.read (
44- key: "${walletId }_wallet" ,
45- );
46-
47- if (walletExists == null ) {
48- await _createNewWallet ();
49- }
50-
51- await open ();
52-
53- return await super .init ();
54- }
55-
5634 Future <void > _createNewWallet () async {
5735 final String password = generatePassword ();
5836
@@ -61,39 +39,24 @@ class XelisWallet extends LibXelisWallet {
6139 key: Wallet .mnemonicPassphraseKey (walletId: info.walletId),
6240 value: password,
6341 );
64-
65- await secureStorageInterface.write (
66- key: '${walletId }_wallet' ,
67- value: 'true' ,
68- );
69-
70- await secureStorageInterface.write (
71- key: '_${walletId }_needs_creation' ,
72- value: 'true' ,
73- );
7442 }
7543
76- Future <void > _restoreWallet () async {
77- final String password = generatePassword ();
78-
79- await secureStorageInterface.write (
80- key: Wallet .mnemonicPassphraseKey (walletId: info.walletId),
81- value: password,
82- );
83-
84- await secureStorageInterface.write (
85- key: '${walletId }_wallet' ,
86- value: 'true' ,
87- );
44+ @override
45+ Future <void > init ({bool ? isRestore}) async {
46+ Logging .instance.d ("Xelis: init" );
8847
89- await secureStorageInterface. write (
90- key : '_${ walletId }_needs_restoration' ,
91- value : 'true' ,
92- );
48+ if (isRestore == true ) {
49+ await super . init ();
50+ return await open (openType : XelisWalletOpenType .restore);
51+ }
9352
94- if (libXelisWallet != null ) {
95- await super .exit ();
53+ final bool walletExists = await LibXelisWallet .checkWalletExists (walletId);
54+ if (! walletExists) {
55+ await _createNewWallet ();
56+ await open (openType: XelisWalletOpenType .create);
9657 }
58+
59+ return await super .init ();
9760 }
9861
9962 @override
@@ -507,20 +470,10 @@ class XelisWallet extends LibXelisWallet {
507470 try {
508471 checkInitialized ();
509472
510- // Use default address if recipients list is empty
511473 final recipients =
512474 txData.recipients? .isNotEmpty == true
513475 ? txData.recipients!
514- : [
515- (
516- address:
517- 'xel:xz9574c80c4xegnvurazpmxhw5dlg2n0g9qm60uwgt75uqyx3pcsqzzra9m' ,
518- amount: Amount .zeroWith (
519- fractionDigits: cryptoCurrency.fractionDigits,
520- ),
521- isChange: false ,
522- ),
523- ];
476+ : throw ArgumentError ('Address cannot be empty.' ); // in the future, support for multiple recipients will work.
524477
525478 final asset = assetId ?? xelis_sdk.xelisAsset;
526479
@@ -596,7 +549,7 @@ class XelisWallet extends LibXelisWallet {
596549 final defaultDecimals = cryptoCurrency.fractionDigits;
597550 final defaultFee = BigInt .from (0 );
598551
599- // Use default address if recipients list is empty
552+ // Use default address if recipients list is empty to ensure basic fee estimates are readily available
600553 final effectiveRecipients =
601554 recipients.isNotEmpty
602555 ? recipients
@@ -816,6 +769,9 @@ class XelisWallet extends LibXelisWallet {
816769
817770 @override
818771 Future <void > handleOnline () async {
772+ await updateChainHeight ();
773+ await updateBalance ();
774+ await updateTransactions ();
819775 GlobalEventBus .instance.fire (
820776 WalletSyncStatusChangedEvent (
821777 WalletSyncStatus .synced,
0 commit comments