getDiscussionFromSCAddress method
Future<AEDiscussion?>
getDiscussionFromSCAddress({
- required ApiService apiService,
- required String discussionSCAddress,
- required KeyPair keyPair,
Implementation
Future<AEDiscussion?> getDiscussionFromSCAddress({
required ApiService apiService,
required String discussionSCAddress,
required KeyPair keyPair,
}) async {
final smartContractMap =
await apiService.getTransaction([discussionSCAddress]);
if (smartContractMap[discussionSCAddress] == null) {
return null;
}
try {
final discussionKeyAccess = await getDiscussionKeyAccess(
apiService: apiService,
discussionSCAddress: discussionSCAddress,
keyPair: keyPair,
);
final smartContract = smartContractMap[discussionSCAddress];
final cryptedContent = base64.decode(smartContract!.data!.content!);
final content = utf8.decode(
aesDecrypt(cryptedContent, discussionKeyAccess),
);
final jsonContentMap = jsonDecode(content);
final usersPubKey = <String>[];
for (final authorizedPublicKey
in smartContract.data!.ownerships[1].authorizedPublicKeys) {
usersPubKey.add(authorizedPublicKey.publicKey!);
}
final aeDiscussion = AEDiscussion(
address: smartContract.address!.address!,
discussionName: jsonContentMap['discussionName'],
usersPubKey: usersPubKey,
adminPublicKey: List<String>.from(jsonContentMap['adminPublicKey']),
timestampLastUpdate: smartContract.validationStamp!.timestamp!,
);
return aeDiscussion;
} catch (e) {
dev.log(e.toString());
return null;
}
}