callSmartContractFunction method
Implementation
@override
Future<BlockchainResponse> callSmartContractFunction(
TransferRequest transferRequest,
) async {
NearTransferRequest nearTransferRequest =
transferRequest as NearTransferRequest;
if (nearTransferRequest.arguments
is! NearBlockChainSmartContractArguments) {
throw Exception('Incorrect Blockchain Smart Contract Arguments');
}
final transactionInfo = await getTransactionInfo(
accountId: nearTransferRequest.fromAddress!,
publicKey: nearTransferRequest.publicKey!,
);
final gas = transferRequest.gas ?? BlockchainGas.gas[BlockChains.near];
if (gas == null) {
throw Exception('Incorrect Blockchain Gas');
}
final arg =
nearTransferRequest.arguments as NearBlockChainSmartContractArguments;
if (arg == null) {
throw Exception('Incorrect Blockchain Arg');
}
final List<Map<String, dynamic>> actions = [
{
"type": "functionCall",
"data": {
"methodName": arg.method,
"args": arg.args,
},
},
];
final signedAction = await signNearActions(
fromAddress: transferRequest.fromAddress!,
toAddress: transferRequest.toAddress!,
transferAmount: arg.transferAmount,
privateKey: transferRequest.privateKey!,
gas: gas,
nonce: transactionInfo.nonce,
blockHash: transactionInfo.blockHash,
actions: actions,
);
final res = await nearRpcClient.sendSyncTx([signedAction]);
return res;
}