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,14 +482,27 @@ 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);
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( return InkWell(
key: const Key('deleteWallet'), key: const Key('deleteWallet'),
onTap: !walletProvider.isDefaultWallet onTap: !isDefaultWallet && !_hasConsumers.data!
? () async { ? () async {
await walletProvider.deleteWallet(context, wallet); await walletProvider.deleteWallet(context, wallet);
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
@ -499,7 +512,8 @@ class WalletOptions extends StatelessWidget {
}); });
} }
: null, : null,
child: Row(children: <Widget>[ child: !isDefaultWallet && !_hasConsumers.data!
? Row(children: <Widget>[
const SizedBox(width: 30), const SizedBox(width: 30),
Image.asset( Image.asset(
'assets/walletOptions/trash.png', 'assets/walletOptions/trash.png',
@ -507,8 +521,11 @@ class WalletOptions extends StatelessWidget {
), ),
const SizedBox(width: 19), const SizedBox(width: 19),
const Text('Supprimer ce portefeuille', const Text('Supprimer ce portefeuille',
style: TextStyle(fontSize: 20, color: Color(0xffD80000))), style:
]), TextStyle(fontSize: 20, color: Color(0xffD80000))),
])
: const SizedBox(width: 30),
); );
});
} }
} }