shareDocument static method
Creates a new transaction that allows to share the document associated
with the given metadata
and having the optional contentUri
, doSign
,
checksum
, fee
and broadcasting mode
. If encryptedData
is
specified then encrypts the proper data for the specified recipients
and then sends the transaction to the blockchain.
If doSign
is specified then the field checksum
must be also provided.
Implementation
static Future<TransactionResult> shareDocument({
required String id,
required CommercioDocMetadata metadata,
required List<String> recipients,
required Wallet wallet,
String? contentUri,
CommercioDoSign? doSign,
CommercioDocChecksum? checksum,
Uint8List? aesKey,
Set<CommercioEncryptedData>? encryptedData,
StdFee? fee,
BroadcastingMode? mode,
http.Client? client,
}) async {
// Build a generic document
final commercioDoc = await CommercioDocHelper.fromWallet(
wallet: wallet,
recipients: recipients,
id: id,
metadata: metadata,
checksum: checksum,
contentUri: contentUri,
doSign: doSign,
encryptedData: encryptedData,
aesKey: aesKey,
);
StdMsg msg = MsgShareDocument(document: commercioDoc);
final isLegacy21Chain = await wallet.networkInfo.isVersion(version: '2.1');
if (isLegacy21Chain) {
// Convert the new CommercioDoc entity to the old format
final legacy21Doc = legacy.CommercioDocMapper.toLegacy(commercioDoc);
// Replace the msg with the newer document with the legacy one
msg = legacy.MsgShareDocument(document: legacy21Doc);
}
// Build, sign and send the tx message
return TxHelper.createSignAndSendTx(
[msg],
wallet,
fee: fee,
mode: mode,
client: client,
);
}