diff --git a/lib/providers/my_wallets.dart b/lib/providers/my_wallets.dart index 76eea459142053ca8bf3b40d9b80985485f6757f..17741bb988bff454d36d7345da91117d0e6b208b 100644 --- a/lib/providers/my_wallets.dart +++ b/lib/providers/my_wallets.dart @@ -51,7 +51,7 @@ class MyWalletsProvider with ChangeNotifier { // update all idty status in lists int n = 0; - final idtyStatusList = await sub.idtyStatus(walletsToScan.keys.toList()); + final idtyStatusList = await sub.idtyStatusMulti(walletsToScan.keys.toList()); for (final wallet in walletsToScan.values) { wallet.identityStatus = idtyStatusList[n]; walletBox.put(wallet.address, wallet); diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index 8f2d4966bfe1b80b4962988d9a927902f78a5f4d..2f0dd634fbe3e1f8eda0ccc0ee3237cc24082709 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -367,7 +367,7 @@ class SubstrateSdk with ChangeNotifier { } Future<CertState> certState(String from, String to) async { - final toStatus = (await idtyStatus([to])).first; + final toStatus = (await idtyStatusMulti([to])).first; final myWallets = MyWalletsProvider(); if (from == to || !myWallets.getWalletDataByAddress(from)!.isMembre) { @@ -434,7 +434,14 @@ class SubstrateSdk with ChangeNotifier { 'unknown': IdtyStatus.unknown, }; - Future<List<IdtyStatus>> idtyStatus(List<String> addresses) async { + Future<IdtyStatus> idtyStatus(String address) async { + final idtyIndex = await _getIdentityIndexOf(address); + if (idtyIndex == null) return IdtyStatus.none; + final idtyStatus = await idtyStatusByIndex(idtyIndex); + return idtyStatus; + } + + Future<List<IdtyStatus>> idtyStatusMulti(List<String> addresses) async { final idtyIndexes = await _getIdentityIndexOfMulti(addresses); //FIXME: should not have to replace null values by 99999999 @@ -898,7 +905,7 @@ class SubstrateSdk with ChangeNotifier { final transferableBalance = fromBalance['transferableBalance']; - final statusList = await idtyStatus([fromAddress, toAddress]); + final statusList = await idtyStatusMulti([fromAddress, toAddress]); final fromIdtyStatus = statusList[0]; final fromHasConsumer = fromAddress == '' ? false : await hasAccountConsumers(fromAddress); final toIdtyStatus = statusList[1]; @@ -1005,7 +1012,7 @@ class SubstrateSdk with ChangeNotifier { } Future<String> certify(String fromAddress, String destAddress, String password) async { - final statusList = await idtyStatus([fromAddress, destAddress]); + final statusList = await idtyStatusMulti([fromAddress, destAddress]); final myIdtyStatus = statusList[0]; final toIdtyStatus = statusList[1]; diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index 15ffc2092326fc89c79225bd16b347c4affa7a73..3cd414be95dbfc8eeb503467670cbd7d30b559ea 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -420,7 +420,7 @@ class WalletOptions extends StatelessWidget { Widget buildConfirmIdentitySection(WalletOptionsProvider walletProvider) { return Consumer<SubstrateSdk>(builder: (context, sub, _) { return FutureBuilder( - future: sub.idtyStatus([walletProvider.address.text]), + future: sub.idtyStatusMulti([walletProvider.address.text]), initialData: const [IdtyStatus.unknown], builder: (BuildContext context, AsyncSnapshot<List<IdtyStatus>> snapshot) { if (!snapshot.hasData || snapshot.hasError) { diff --git a/lib/widgets/idty_status.dart b/lib/widgets/idty_status.dart index b023346c76c808d77984566a0ddf208b01405142..1616cb378b15c4da30fe3b0841a2d63233d0e3aa 100644 --- a/lib/widgets/idty_status.dart +++ b/lib/widgets/idty_status.dart @@ -20,7 +20,7 @@ class IdentityStatus extends StatelessWidget { return Consumer<SubstrateSdk>(builder: (context, sub, _) { return FutureBuilder( - future: sub.idtyStatus([address]), + future: sub.idtyStatusMulti([address]), initialData: [walletData.identityStatus], builder: (context, AsyncSnapshot<List<IdtyStatus>> snapshot) { if (snapshot.data != null && !snapshot.hasError) { diff --git a/lib/widgets/wallet_header.dart b/lib/widgets/wallet_header.dart index 1088ea15289e33c2f73f21c7d21598e4ad3f772f..1c3d99cc4d008bbfc63981b78f68794f89ad0965 100644 --- a/lib/widgets/wallet_header.dart +++ b/lib/widgets/wallet_header.dart @@ -3,8 +3,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/scale_functions.dart'; +import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/widgets_keys.dart'; import 'package:gecko/providers/duniter_indexer.dart'; +import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/screens/certifications.dart'; import 'package:gecko/utils.dart'; @@ -31,6 +33,7 @@ class WalletHeader extends StatelessWidget { Widget build(BuildContext context) { const double avatarSize = 90; final duniterIndexer = Provider.of<DuniterIndexer>(context, listen: false); + final sub = Provider.of<SubstrateSdk>(context, listen: false); return Container( color: headerColor, @@ -109,42 +112,50 @@ class WalletHeader extends StatelessWidget { // Certifications section ScaledSizedBox(height: 12), - InkWell( - onTap: () => Navigator.push( - context, - PageNoTransit( - builder: (context) => CertificationsScreen( - address: address, - username: duniterIndexer.walletNameIndexer[address] ?? '', - ), - ), - ), - child: Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), - color: Colors.transparent, - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IdentityStatus( - address: address, - isOwner: false, - color: orangeC, - ), - SizedBox(width: scaleSize(8)), - Certifications( - address: address, - size: 13, + FutureBuilder( + future: sub.idtyStatus(address), + builder: (context, idtyStatus) { + return Visibility( + visible: idtyStatus.data != IdtyStatus.none, + child: InkWell( + onTap: () => Navigator.push( + context, + PageNoTransit( + builder: (context) => CertificationsScreen( + address: address, + username: duniterIndexer.walletNameIndexer[address] ?? '', + ), + ), ), - Icon( - Icons.chevron_right, - size: scaleSize(15), - color: orangeC.withOpacity(0.8), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8), + color: Colors.transparent, + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IdentityStatus( + address: address, + isOwner: false, + color: orangeC, + ), + SizedBox(width: scaleSize(8)), + Certifications( + address: address, + size: 13, + ), + Icon( + Icons.chevron_right, + size: scaleSize(15), + color: orangeC.withOpacity(0.8), + ), + ], + ), ), - ], - ), - ), + ), + ); + }, ), ], ),