createTransactionMultDestSync function
PendingTransactionDescription
createTransactionMultDestSync({
- required List<
MoneroOutput> outputs, - required String paymentId,
- required int priorityRaw,
- int accountIndex = 0,
Implementation
PendingTransactionDescription createTransactionMultDestSync(
{required List<MoneroOutput> outputs,
required String paymentId,
required int priorityRaw,
int accountIndex = 0}) {
final int size = outputs.length;
final List<Pointer<Char>> addressesPointers = outputs
.map((output) => output.address.toNativeUtf8().cast<Char>())
.toList();
final Pointer<Pointer<Char>> addressesPointerPointer = calloc(size);
final List<Pointer<Char>> amountsPointers = outputs
.map((output) => output.amount.toNativeUtf8().cast<Char>())
.toList();
final Pointer<Pointer<Char>> amountsPointerPointer = calloc(size);
for (int i = 0; i < size; i++) {
addressesPointerPointer[i] = addressesPointers[i];
amountsPointerPointer[i] = amountsPointers[i];
}
final paymentIdPointer = paymentId.toNativeUtf8().cast<Char>();
final pendingTransactionPointer = calloc<ExternPendingTransactionRaw>();
final errorBoxPointer = monero_flutter.buildErrorBoxPointer();
monero_flutter.bindings.transaction_create_mult_dest(
addressesPointerPointer,
paymentIdPointer,
amountsPointerPointer,
size,
priorityRaw,
accountIndex,
pendingTransactionPointer,
errorBoxPointer);
final errorInfo = monero_flutter.extractErrorInfo(errorBoxPointer);
for (var element in addressesPointers) {
calloc.free(element);
}
for (var element in amountsPointers) {
calloc.free(element);
}
calloc.free(addressesPointerPointer);
calloc.free(amountsPointerPointer);
calloc.free(paymentIdPointer);
if (0 != errorInfo.code) {
calloc.free(pendingTransactionPointer);
throw CreationTransactionException(message: errorInfo.getErrorMessage());
}
final pendingTransactionDescription = PendingTransactionDescription(
amount: pendingTransactionPointer.ref.amount,
fee: pendingTransactionPointer.ref.fee,
hash: pendingTransactionPointer.ref.hash.cast<Utf8>().toDartString(),
hex: pendingTransactionPointer.ref.hex.cast<Utf8>().toDartString(),
txKey: pendingTransactionPointer.ref.tx_key.cast<Utf8>().toDartString(),
multisigSignData: pendingTransactionPointer.ref.multisig_sign_data
.cast<Utf8>()
.toDartString(),
pointerAddress: pendingTransactionPointer.address);
return pendingTransactionDescription;
}