Delete wallet only if has no consumers

This commit is contained in:
poka 2022-06-08 04:24:06 +02:00
parent 20c5ebafcc
commit 89c52ab8d7
3 changed files with 55 additions and 37 deletions

View File

@ -240,12 +240,13 @@ class SubstrateSdk with ChangeNotifier {
return _certData; return _certData;
} }
// Future<bool> isAccountExit(String address) async { Future<bool> hasAccountConsumers(String address) async {
// final _accountInfo = await sdk.webView! final _accountInfo = await sdk.webView!
// .evalJavascript('api.query.system.account("$address")'); .evalJavascript('api.query.system.account("$address")');
// final _randomId = _accountInfo['data']['randomId']; final _consumers = _accountInfo['consumers'];
// return _randomId == null ? false : true; // log.d('Consumers: $_consumers');
// } return _consumers == 0 ? false : true;
}
Future<double> getBalance(String address, {bool isUd = false}) async { Future<double> getBalance(String address, {bool isUd = false}) async {
double balance = 0.0; double balance = 0.0;
@ -568,7 +569,7 @@ class SubstrateSdk with ChangeNotifier {
} }
Future<String> getMemberAddress() async { Future<String> getMemberAddress() async {
// TODO: Continue digging memberAddress detection // TODOO: Continue digging memberAddress detection
String memberAddress = ''; String memberAddress = '';
walletBox.toMap().forEach((key, value) async { walletBox.toMap().forEach((key, value) async {
final bool _isMember = await isMember(value.address!); final bool _isMember = await isMember(value.address!);

View File

@ -39,7 +39,7 @@ class ManageMembership extends StatelessWidget {
return InkWell( return InkWell(
key: const Key('revokeIdty'), key: const Key('revokeIdty'),
onTap: () async { 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, // final _answer = await confirmPopup(context,
// 'Êtes-vous certains de vouloir révoquer définitivement cette identité ?') ?? // 'Êtes-vous certains de vouloir révoquer définitivement cette identité ?') ??
// false; // false;

View File

@ -171,7 +171,7 @@ class WalletOptions extends StatelessWidget {
if (!walletProvider.isDefaultWallet && if (!walletProvider.isDefaultWallet &&
!_isMember.data!) !_isMember.data!)
deleteWallet(context, walletProvider, deleteWallet(context, walletProvider,
_myWalletProvider, _currentChest) _currentChest)
else else
const SizedBox(), const SizedBox(),
if (_isMember.data!) if (_isMember.data!)
@ -482,33 +482,50 @@ class WalletOptions extends StatelessWidget {
_myWalletProvider.rebuildWidget(); _myWalletProvider.rebuildWidget();
} }
Widget deleteWallet( Widget deleteWallet(BuildContext context,
BuildContext context, WalletOptionsProvider walletProvider, int _currentChest) {
WalletOptionsProvider walletProvider, SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
MyWalletsProvider _myWalletProvider, MyWalletsProvider _myWalletProvider =
int _currentChest) { Provider.of<MyWalletsProvider>(context, listen: false);
return InkWell(
key: const Key('deleteWallet'), final _defaultWallet = _myWalletProvider.getDefaultWallet();
onTap: !walletProvider.isDefaultWallet final bool isDefaultWallet =
? () async { walletProvider.address.text == _defaultWallet.address;
await walletProvider.deleteWallet(context, wallet); // return Consumer<MyWalletsProvider>(
WidgetsBinding.instance.addPostFrameCallback((_) { // builder: (context, _myWalletProvider, _) {
_myWalletProvider.listWallets = return FutureBuilder(
_myWalletProvider.readAllWallets(_currentChest); future: _sub.hasAccountConsumers(wallet.address!),
_myWalletProvider.rebuildWidget(); builder: (BuildContext context, AsyncSnapshot<bool> _hasConsumers) {
}); if (_hasConsumers.connectionState != ConnectionState.done ||
} _hasConsumers.hasError) {
: null, return const Text('');
child: Row(children: <Widget>[ }
const SizedBox(width: 30), return InkWell(
Image.asset( key: const Key('deleteWallet'),
'assets/walletOptions/trash.png', onTap: !isDefaultWallet && !_hasConsumers.data!
height: 45, ? () async {
), await walletProvider.deleteWallet(context, wallet);
const SizedBox(width: 19), WidgetsBinding.instance.addPostFrameCallback((_) {
const Text('Supprimer ce portefeuille', _myWalletProvider.listWallets =
style: TextStyle(fontSize: 20, color: Color(0xffD80000))), _myWalletProvider.readAllWallets(_currentChest);
]), _myWalletProvider.rebuildWidget();
); });
}
: null,
child: !isDefaultWallet && !_hasConsumers.data!
? Row(children: <Widget>[
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),
);
});
} }
} }