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;
}
// Future<bool> 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<bool> 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<double> getBalance(String address, {bool isUd = false}) async {
double balance = 0.0;
@ -568,7 +569,7 @@ class SubstrateSdk with ChangeNotifier {
}
Future<String> 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!);

View File

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

View File

@ -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: <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))),
]),
);
Widget deleteWallet(BuildContext context,
WalletOptionsProvider walletProvider, int _currentChest) {
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
final _defaultWallet = _myWalletProvider.getDefaultWallet();
final bool isDefaultWallet =
walletProvider.address.text == _defaultWallet.address;
// return Consumer<MyWalletsProvider>(
// builder: (context, _myWalletProvider, _) {
return FutureBuilder(
future: _sub.hasAccountConsumers(wallet.address!),
builder: (BuildContext context, AsyncSnapshot<bool> _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: <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),
);
});
}
}