Delete wallet only if has no consumers
This commit is contained in:
parent
20c5ebafcc
commit
89c52ab8d7
|
@ -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!);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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),
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue