From 08ea8445add5df609d192cecdb25c34f01bedce8 Mon Sep 17 00:00:00 2001 From: poka Date: Sun, 19 Nov 2023 11:08:13 +0100 Subject: [PATCH] feat: allow idty with index 0; certsData is nullable --- lib/providers/substrate_sdk.dart | 19 +++++++++++-------- lib/screens/myWallets/wallet_options.dart | 2 -- lib/widgets/certifications.dart | 6 ++---- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index c82b5ea..c5eaf04 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -137,12 +137,15 @@ class SubstrateSdk with ChangeNotifier { ////////// 2: GET ONCHAIN STORAGE ////////// //////////////////////////////////////////// - Future _getIdentityIndexOf(String address) async { - return await _getStorage('identity.identityIndexOf("$address")') ?? 0; + Future _getIdentityIndexOf(String address) async { + return await _getStorage('identity.identityIndexOf("$address")'); } - Future> getCertsCounter(String address) async { + Future?> getCertsCounter(String address) async { final idtyIndex = await _getIdentityIndexOf(address); + if (idtyIndex == null) { + return null; + } final certsReceiver = await _getStorage('cert.storageIdtyCertMeta($idtyIndex)') ?? []; @@ -400,7 +403,7 @@ class SubstrateSdk with ChangeNotifier { var idtyIndex = await _getIdentityIndexOf(address); - if (idtyIndex == 0) { + if (idtyIndex == null) { return 'noid'; } @@ -983,7 +986,7 @@ class SubstrateSdk with ChangeNotifier { // log.d('debug: ${currencyParameters['minCertForMembership']}'); log.d( - "debug toCert: ${toCerts[0]} --- ${currencyParameters['minCertForMembership']!} --- $toIdtyStatus"); + "debug toCert: ${toCerts?[0]} --- ${currencyParameters['minCertForMembership']!} --- $toIdtyStatus"); if (toIdtyStatus == 'noid') { txInfo = TxInfoData( @@ -994,7 +997,7 @@ class SubstrateSdk with ChangeNotifier { txOptions = [destAddress]; } else if (toIdtyStatus == 'Validated' || toIdtyStatus == 'ConfirmedByOwner') { - if (toCerts[0] >= currencyParameters['minCertForMembership']! - 1 && + if (toCerts![0] >= currencyParameters['minCertForMembership']! - 1 && toIdtyStatus != 'Validated') { log.i('Batch cert and membership validation'); txInfo = TxInfoData( @@ -1055,7 +1058,7 @@ class SubstrateSdk with ChangeNotifier { final prefix = 'icok'.codeUnits; final genesisHashString = await getGenesisHash(); final genesisHash = HEX.decode(genesisHashString.substring(2)) as Uint8List; - final idtyIndex = _int32bytes(await _getIdentityIndexOf(fromAddress)); + final idtyIndex = _int32bytes((await _getIdentityIndexOf(fromAddress))!); final oldPubkey = await addressToPubkey(fromAddress); final messageToSign = Uint8List.fromList(prefix + genesisHash + idtyIndex + oldPubkey); @@ -1114,7 +1117,7 @@ newKeySig: $newKeySig"""); final prefix = 'revo'.codeUnits; final genesisHashString = await getGenesisHash(); final genesisHash = HEX.decode(genesisHashString.substring(2)) as Uint8List; - final idtyIndexBytes = _int32bytes(idtyIndex); + final idtyIndexBytes = _int32bytes(idtyIndex!); final messageToSign = Uint8List.fromList(prefix + genesisHash + idtyIndexBytes); final revocationSig = diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index 794a275..5e8e014 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -42,8 +42,6 @@ class WalletOptions extends StatelessWidget { final duniterIndexer = Provider.of(context, listen: false); final sub = Provider.of(context, listen: false); - // sub.spawnBlock(); - // sub.spawnBlock(0, 20); log.d(walletOptions.address.text); diff --git a/lib/widgets/certifications.dart b/lib/widgets/certifications.dart index 06a7aa9..7ab6a53 100644 --- a/lib/widgets/certifications.dart +++ b/lib/widgets/certifications.dart @@ -19,10 +19,8 @@ class Certifications extends StatelessWidget { Consumer(builder: (context, sdk, _) { return FutureBuilder( future: sdk.getCertsCounter(address), - builder: (BuildContext context, AsyncSnapshot> certs) { - // log.d(_certs.data); - - return certs.data?[0] != 0 && certs.data != null + builder: (BuildContext context, AsyncSnapshot?> certs) { + return certs.data != null ? Row( children: [ Image.asset('assets/medal.png', height: 20),