buildMessageSendTransaction method
Future<({KeyPair previousKeyPair, Transaction transaction})>
buildMessageSendTransaction(
{ - required Keychain keychain,
- required ApiService apiService,
- required String discussionSCAddress,
- required String messageContent,
- required String senderAddress,
- required String senderServiceName,
- required KeyPair senderKeyPair,
})
Implementation
Future<({Transaction transaction, KeyPair previousKeyPair})>
buildMessageSendTransaction({
required Keychain keychain,
required ApiService apiService,
required String discussionSCAddress,
required String messageContent,
required String senderAddress,
required String senderServiceName,
required KeyPair senderKeyPair,
}) async {
final message = '''
{
"compressionAlgo": "gzip",
"message": "${await _encodeMessage(message: messageContent, apiService: apiService, discussionSCAddress: discussionSCAddress, senderKeyPair: senderKeyPair)}"
}
''';
final blockchainTxVersion = int.parse(
(await apiService.getBlockchainVersion()).version.transaction,
);
final tx = Transaction(
type: 'transfer',
version: blockchainTxVersion,
data: Transaction.initData(),
).setContent(message).addRecipient(discussionSCAddress);
final indexMap = await apiService.getTransactionIndex(
[senderAddress],
);
final index = indexMap[senderAddress] ?? 0;
final originPrivateKey = apiService.getOriginKey();
final buildTxResult =
keychain.buildTransaction(tx, senderServiceName, index);
return (
transaction: buildTxResult.transaction.originSign(originPrivateKey),
previousKeyPair: buildTxResult.keyPair,
);
}