diff --git a/lib/providers/substrate_sdk.dart b/lib/providers/substrate_sdk.dart index 1770abefdbc1685bba203fa4c2096748a2d8bfa9..7a2d89f1ee801d54b665042f445b021dcbe7ca26 100644 --- a/lib/providers/substrate_sdk.dart +++ b/lib/providers/substrate_sdk.dart @@ -265,37 +265,49 @@ class SubstrateSdk with ChangeNotifier { } else { balance = -1; } + + await getUnclaimedUd(address); return balance; } Future<double> getUnclaimedUd(String address) async { -// TODO: Implement unclaimedUd evaluation -// Pour ce faire, il vous faut requêter cinq éléments de storage : - -// system.account(address) -// identity.identityIndexOf(address) -// identity.identities(idtyIndex) -// universalDividend.currentUdIndex() -// universalDividend.pastReevals() - -// const api = await ApiPromise.create(...); -// const { data: balance } = await api.query.system.account(address); -// const idtyIndex = await api.query.identity.identityIndexOf(address); -// const { data: idtyData } = await api.query.identity.identies(idtyIndex); -// const currentUdIndex = await api.query.universalDividend.currentUdIndex(); -// const pastReevals = await api.query.universalDividend.pastReevals(); - -// let newUdsAmount = computeClaimUds(currentUdIndex, idtyData.firstEligibleUd, pastReevals); -// let transferableBalance = balance.free + newUdsAmount; -// let potentialBalance = balance.reserved + transferableBalance; + final balanceGlobal = await sdk.webView! + .evalJavascript('api.query.system.account("$address")'); - double balance = 0.0; + final idtyIndex = await sdk.webView! + .evalJavascript('api.query.identity.identityIndexOf("$address")'); + final idtyData = await sdk.webView! + .evalJavascript('api.query.identity.identities($idtyIndex)'); - final brutBalance = await sdk.api.account.queryBalance(address); - // log.d(brutBalance?.toJson()); - balance = int.parse(brutBalance!.freeBalance) / 100; + final int currentUdIndex = int.parse(await sdk.webView! + .evalJavascript('api.query.universalDividend.currentUdIndex()')); - return balance; + final List pastReevals = await sdk.webView! + .evalJavascript('api.query.universalDividend.pastReevals()'); + + log.d( + 'DEBUGG ${getShortPubkey(address)} : $balanceGlobal |---| $idtyIndex |---| $idtyData |---| $currentUdIndex |---| $pastReevals'); + + final int newUdsAmount = _computeClaimUds(currentUdIndex, + idtyData?['data']?['firstEligibleUd'] ?? 0, pastReevals); + + final double transferableBalance = + (balanceGlobal['data']['free'] + newUdsAmount) / 100; + final double potentialBalance = + (balanceGlobal['data']['reserved'] + transferableBalance) / 100; + + log.i( + 'transferableBalance: $transferableBalance --- potentialBalance: $potentialBalance'); + + return transferableBalance; + } + + int _computeClaimUds( + int currentUdIndex, int firstEligibleUd, List pastReevals) { + // TODO: Implement _computeClaimUds + + log.d('DEBUGGG: $currentUdIndex - $firstEligibleUd - $pastReevals'); + return 0; } Future<double> subscribeBalance(String address, {bool isUd = false}) async {