implement batch for membership validation
This commit is contained in:
parent
d8f3936e20
commit
81772f923a
|
@ -240,9 +240,14 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<int> getIdentityIndexOf(String address) async {
|
||||||
|
return await sdk.webView!
|
||||||
|
.evalJavascript('api.query.identity.identityIndexOf("$address")') ??
|
||||||
|
0;
|
||||||
|
}
|
||||||
|
|
||||||
Future<List<int>> getCerts(String address) async {
|
Future<List<int>> getCerts(String address) async {
|
||||||
final idtyIndex = await sdk.webView!
|
final idtyIndex = await getIdentityIndexOf(address);
|
||||||
.evalJavascript('api.query.identity.identityIndexOf("$address")');
|
|
||||||
// log.d('u32: ' + idtyIndex.toString());
|
// log.d('u32: ' + idtyIndex.toString());
|
||||||
|
|
||||||
final certsReceiver = await sdk.webView!
|
final certsReceiver = await sdk.webView!
|
||||||
|
@ -253,13 +258,11 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Map> getCertData(String from, String to) async {
|
Future<Map> getCertData(String from, String to) async {
|
||||||
final idtyIndexFrom = await sdk.webView!
|
final idtyIndexFrom = await getIdentityIndexOf(from);
|
||||||
.evalJavascript('api.query.identity.identityIndexOf("$from")');
|
|
||||||
|
|
||||||
final idtyIndexTo = await sdk.webView!
|
final idtyIndexTo = await getIdentityIndexOf(to);
|
||||||
.evalJavascript('api.query.identity.identityIndexOf("$to")');
|
|
||||||
|
|
||||||
if (idtyIndexFrom == null || idtyIndexTo == null) return {};
|
if (idtyIndexFrom == 0 || idtyIndexTo == 0) return {};
|
||||||
|
|
||||||
final certData = await sdk.webView!.evalJavascript(
|
final certData = await sdk.webView!.evalJavascript(
|
||||||
'api.query.cert.storageCertsByIssuer($idtyIndexFrom, $idtyIndexTo)') ??
|
'api.query.cert.storageCertsByIssuer($idtyIndexFrom, $idtyIndexTo)') ??
|
||||||
|
@ -271,6 +274,13 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
return certData;
|
return certData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<Map<String, dynamic>> getParameters() async {
|
||||||
|
final currencyParameters = await sdk.webView!
|
||||||
|
.evalJavascript('api.query.parameters.parametersStorage()') ??
|
||||||
|
{};
|
||||||
|
return currencyParameters;
|
||||||
|
}
|
||||||
|
|
||||||
Future<bool> hasAccountConsumers(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")');
|
||||||
|
@ -463,6 +473,9 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
final myIdtyStatus = await idtyStatus(fromAddress);
|
final myIdtyStatus = await idtyStatus(fromAddress);
|
||||||
final toIdtyStatus = await idtyStatus(toAddress);
|
final toIdtyStatus = await idtyStatus(toAddress);
|
||||||
|
|
||||||
|
final fromIndex = await getIdentityIndexOf(fromAddress);
|
||||||
|
final toIndex = await getIdentityIndexOf(toAddress);
|
||||||
|
|
||||||
log.d(myIdtyStatus);
|
log.d(myIdtyStatus);
|
||||||
log.d(toIdtyStatus);
|
log.d(toIdtyStatus);
|
||||||
|
|
||||||
|
@ -472,6 +485,9 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
return 'notMember';
|
return 'notMember';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final toCerts = await getCerts(toAddress);
|
||||||
|
final currencyParameters = await getParameters();
|
||||||
|
|
||||||
final sender = TxSenderData(
|
final sender = TxSenderData(
|
||||||
keyring.current.address,
|
keyring.current.address,
|
||||||
keyring.current.pubKey,
|
keyring.current.pubKey,
|
||||||
|
@ -486,11 +502,21 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
);
|
);
|
||||||
} else if (toIdtyStatus == 'Validated' ||
|
} else if (toIdtyStatus == 'Validated' ||
|
||||||
toIdtyStatus == 'ConfirmedByOwner') {
|
toIdtyStatus == 'ConfirmedByOwner') {
|
||||||
txInfo = TxInfoData(
|
if (toCerts[0] >= currencyParameters['wotMinCertForMembership'] &&
|
||||||
'cert',
|
toIdtyStatus != 'Validated') {
|
||||||
'addCert',
|
log.d('Batch cert and membership validation');
|
||||||
sender,
|
txInfo = TxInfoData(
|
||||||
);
|
'utility',
|
||||||
|
'batchAll',
|
||||||
|
sender,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
txInfo = TxInfoData(
|
||||||
|
'cert',
|
||||||
|
'addCert',
|
||||||
|
sender,
|
||||||
|
);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
transactionStatus = 'cantBeCert';
|
transactionStatus = 'cantBeCert';
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
|
@ -500,10 +526,24 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
log.d('Cert action: ${txInfo.call!}');
|
log.d('Cert action: ${txInfo.call!}');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
List txOptions = [];
|
||||||
|
if (txInfo.call == 'batchAll') {
|
||||||
|
txOptions = [
|
||||||
|
'cert.addCert($fromIndex, $toIndex)',
|
||||||
|
'identity.validateIdentity($toIndex)'
|
||||||
|
];
|
||||||
|
} else if (txInfo.call == 'createIdentity') {
|
||||||
|
txOptions = [toAddress];
|
||||||
|
} else if (txInfo.call == 'addCert') {
|
||||||
|
txOptions = [fromIndex, toIndex];
|
||||||
|
} else {
|
||||||
|
log.e('TX call is unexpected');
|
||||||
|
return 'Ğecko says: TX call is unexpected';
|
||||||
|
}
|
||||||
final hash = await sdk.api.tx
|
final hash = await sdk.api.tx
|
||||||
.signAndSend(
|
.signAndSend(
|
||||||
txInfo,
|
txInfo,
|
||||||
[toAddress],
|
txOptions,
|
||||||
password,
|
password,
|
||||||
)
|
)
|
||||||
.timeout(
|
.timeout(
|
||||||
|
@ -532,10 +572,9 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
// var tata = await sdk.webView!
|
// var tata = await sdk.webView!
|
||||||
// .evalJavascript('api.query.system.account("$address")');
|
// .evalJavascript('api.query.system.account("$address")');
|
||||||
|
|
||||||
var idtyIndex = await sdk.webView!
|
var idtyIndex = await getIdentityIndexOf(address);
|
||||||
.evalJavascript('api.query.identity.identityIndexOf("$address")');
|
|
||||||
|
|
||||||
if (idtyIndex == null) {
|
if (idtyIndex == 0) {
|
||||||
return 'noid';
|
return 'noid';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,21 +687,17 @@ class SubstrateSdk with ChangeNotifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Map> getCertMeta(String address) async {
|
Future<Map> getCertMeta(String address) async {
|
||||||
var idtyIndex = await sdk.webView!
|
var idtyIndex = await getIdentityIndexOf(address);
|
||||||
.evalJavascript('api.query.identity.identityIndexOf("$address")');
|
|
||||||
|
|
||||||
final certMeta = await sdk.webView!
|
final certMeta = await sdk.webView!
|
||||||
.evalJavascript('api.query.cert.storageIdtyCertMeta($idtyIndex)') ??
|
.evalJavascript('api.query.cert.storageIdtyCertMeta($idtyIndex)') ??
|
||||||
'';
|
'';
|
||||||
// if (_certMeta['nextIssuableOn'] != 0) return {};
|
|
||||||
|
|
||||||
// log.d(_certMeta);
|
|
||||||
return certMeta;
|
return certMeta;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future revokeIdentity(String address, String password) async {
|
Future revokeIdentity(String address, String password) async {
|
||||||
final idtyIndex = await sdk.webView!
|
final idtyIndex = await getIdentityIndexOf(address);
|
||||||
.evalJavascript('api.query.identity.identityIndexOf("$address")');
|
|
||||||
|
|
||||||
final sender = TxSenderData(
|
final sender = TxSenderData(
|
||||||
keyring.current.address,
|
keyring.current.address,
|
||||||
|
|
Loading…
Reference in New Issue