diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index 997bea5..520df84 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -240,12 +240,13 @@ class SubstrateSdk with ChangeNotifier { return _certData; } - // Future isAccountExit(String address) async { - // final _accountInfo = await sdk.webView! - // .evalJavascript('api.query.system.account("$address")'); - // final _randomId = _accountInfo['data']['randomId']; - // return _randomId == null ? false : true; - // } + Future hasAccountConsumers(String address) async { + final _accountInfo = await sdk.webView! + .evalJavascript('api.query.system.account("$address")'); + final _consumers = _accountInfo['consumers']; + // log.d('Consumers: $_consumers'); + return _consumers == 0 ? false : true; + } Future getBalance(String address, {bool isUd = false}) async { double balance = 0.0; @@ -568,7 +569,7 @@ class SubstrateSdk with ChangeNotifier { } Future getMemberAddress() async { - // TODO: Continue digging memberAddress detection + // TODOO: Continue digging memberAddress detection String memberAddress = ''; walletBox.toMap().forEach((key, value) async { final bool _isMember = await isMember(value.address!); diff --git a/lib/screens/myWallets/manage_membership.dart b/lib/screens/myWallets/manage_membership.dart index 4ef851b..3520a0e 100644 --- a/lib/screens/myWallets/manage_membership.dart +++ b/lib/screens/myWallets/manage_membership.dart @@ -39,7 +39,7 @@ class ManageMembership extends StatelessWidget { return InkWell( key: const Key('revokeIdty'), onTap: () async { - // TODO: Generate revoke document, and understand extrinsic identity.revokeIdentity options + // TODOO: Generate revoke document, and understand extrinsic identity.revokeIdentity options // final _answer = await confirmPopup(context, // 'Êtes-vous certains de vouloir révoquer définitivement cette identité ?') ?? // false; diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index 972f9f7..4ec7558 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -171,7 +171,7 @@ class WalletOptions extends StatelessWidget { if (!walletProvider.isDefaultWallet && !_isMember.data!) deleteWallet(context, walletProvider, - _myWalletProvider, _currentChest) + _currentChest) else const SizedBox(), if (_isMember.data!) @@ -482,33 +482,50 @@ class WalletOptions extends StatelessWidget { _myWalletProvider.rebuildWidget(); } - Widget deleteWallet( - BuildContext context, - WalletOptionsProvider walletProvider, - MyWalletsProvider _myWalletProvider, - int _currentChest) { - return InkWell( - key: const Key('deleteWallet'), - onTap: !walletProvider.isDefaultWallet - ? () async { - await walletProvider.deleteWallet(context, wallet); - WidgetsBinding.instance.addPostFrameCallback((_) { - _myWalletProvider.listWallets = - _myWalletProvider.readAllWallets(_currentChest); - _myWalletProvider.rebuildWidget(); - }); - } - : null, - child: Row(children: [ - const SizedBox(width: 30), - Image.asset( - 'assets/walletOptions/trash.png', - height: 45, - ), - const SizedBox(width: 19), - const Text('Supprimer ce portefeuille', - style: TextStyle(fontSize: 20, color: Color(0xffD80000))), - ]), - ); + Widget deleteWallet(BuildContext context, + WalletOptionsProvider walletProvider, int _currentChest) { + SubstrateSdk _sub = Provider.of(context, listen: false); + MyWalletsProvider _myWalletProvider = + Provider.of(context, listen: false); + + final _defaultWallet = _myWalletProvider.getDefaultWallet(); + final bool isDefaultWallet = + walletProvider.address.text == _defaultWallet.address; + // return Consumer( + // builder: (context, _myWalletProvider, _) { + return FutureBuilder( + future: _sub.hasAccountConsumers(wallet.address!), + builder: (BuildContext context, AsyncSnapshot _hasConsumers) { + if (_hasConsumers.connectionState != ConnectionState.done || + _hasConsumers.hasError) { + return const Text(''); + } + return InkWell( + key: const Key('deleteWallet'), + onTap: !isDefaultWallet && !_hasConsumers.data! + ? () async { + await walletProvider.deleteWallet(context, wallet); + WidgetsBinding.instance.addPostFrameCallback((_) { + _myWalletProvider.listWallets = + _myWalletProvider.readAllWallets(_currentChest); + _myWalletProvider.rebuildWidget(); + }); + } + : null, + child: !isDefaultWallet && !_hasConsumers.data! + ? Row(children: [ + const SizedBox(width: 30), + Image.asset( + 'assets/walletOptions/trash.png', + height: 45, + ), + const SizedBox(width: 19), + const Text('Supprimer ce portefeuille', + style: + TextStyle(fontSize: 20, color: Color(0xffD80000))), + ]) + : const SizedBox(width: 30), + ); + }); } }