mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-06-28 20:39:51 +00:00
properly await multDest transactino so it won't freeze the UI (#2116)
This commit is contained in:
parent
18049308df
commit
2f0cb28fb2
2 changed files with 22 additions and 43 deletions
|
@ -161,31 +161,39 @@ Future<PendingTransactionDescription> createTransactionSync(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
PendingTransactionDescription createTransactionMultDestSync(
|
Future<PendingTransactionDescription> createTransactionMultDest(
|
||||||
{required List<MoneroOutput> outputs,
|
{required List<MoneroOutput> outputs,
|
||||||
required String paymentId,
|
required String paymentId,
|
||||||
required int priorityRaw,
|
required int priorityRaw,
|
||||||
int accountIndex = 0,
|
int accountIndex = 0,
|
||||||
List<String> preferredInputs = const []}) {
|
List<String> preferredInputs = const []}) async {
|
||||||
|
|
||||||
final dstAddrs = outputs.map((e) => e.address).toList();
|
final dstAddrs = outputs.map((e) => e.address).toList();
|
||||||
final amounts = outputs.map((e) => monero.Wallet_amountFromString(e.amount)).toList();
|
final amounts = outputs.map((e) => monero.Wallet_amountFromString(e.amount)).toList();
|
||||||
|
|
||||||
// printV("multDest: dstAddrs: $dstAddrs");
|
final waddr = wptr!.address;
|
||||||
// printV("multDest: amounts: $amounts");
|
|
||||||
|
// force reconnection in case the os killed the connection
|
||||||
|
Isolate.run(() async {
|
||||||
|
monero.Wallet_synchronized(Pointer.fromAddress(waddr));
|
||||||
|
});
|
||||||
|
|
||||||
|
final txptr = Pointer<Void>.fromAddress(await Isolate.run(() {
|
||||||
|
return monero.Wallet_createTransactionMultDest(
|
||||||
|
Pointer.fromAddress(waddr),
|
||||||
|
dstAddr: dstAddrs,
|
||||||
|
isSweepAll: false,
|
||||||
|
amounts: amounts,
|
||||||
|
mixinCount: 0,
|
||||||
|
pendingTransactionPriority: priorityRaw,
|
||||||
|
subaddr_account: accountIndex,
|
||||||
|
).address;
|
||||||
|
}));
|
||||||
|
|
||||||
final txptr = monero.Wallet_createTransactionMultDest(
|
|
||||||
wptr!,
|
|
||||||
dstAddr: dstAddrs,
|
|
||||||
isSweepAll: false,
|
|
||||||
amounts: amounts,
|
|
||||||
mixinCount: 0,
|
|
||||||
pendingTransactionPriority: priorityRaw,
|
|
||||||
subaddr_account: accountIndex,
|
|
||||||
);
|
|
||||||
if (monero.PendingTransaction_status(txptr) != 0) {
|
if (monero.PendingTransaction_status(txptr) != 0) {
|
||||||
throw CreationTransactionException(message: monero.PendingTransaction_errorString(txptr));
|
throw CreationTransactionException(message: monero.PendingTransaction_errorString(txptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
return PendingTransactionDescription(
|
return PendingTransactionDescription(
|
||||||
amount: monero.PendingTransaction_amount(txptr),
|
amount: monero.PendingTransaction_amount(txptr),
|
||||||
fee: monero.PendingTransaction_fee(txptr),
|
fee: monero.PendingTransaction_fee(txptr),
|
||||||
|
@ -255,21 +263,6 @@ Future<PendingTransactionDescription> _createTransactionSync(Map args) async {
|
||||||
preferredInputs: preferredInputs);
|
preferredInputs: preferredInputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
PendingTransactionDescription _createTransactionMultDestSync(Map args) {
|
|
||||||
final outputs = args['outputs'] as List<MoneroOutput>;
|
|
||||||
final paymentId = args['paymentId'] as String;
|
|
||||||
final priorityRaw = args['priorityRaw'] as int;
|
|
||||||
final accountIndex = args['accountIndex'] as int;
|
|
||||||
final preferredInputs = args['preferredInputs'] as List<String>;
|
|
||||||
|
|
||||||
return createTransactionMultDestSync(
|
|
||||||
outputs: outputs,
|
|
||||||
paymentId: paymentId,
|
|
||||||
priorityRaw: priorityRaw,
|
|
||||||
accountIndex: accountIndex,
|
|
||||||
preferredInputs: preferredInputs);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<PendingTransactionDescription> createTransaction(
|
Future<PendingTransactionDescription> createTransaction(
|
||||||
{required String address,
|
{required String address,
|
||||||
required int priorityRaw,
|
required int priorityRaw,
|
||||||
|
@ -286,21 +279,6 @@ Future<PendingTransactionDescription> createTransaction(
|
||||||
'preferredInputs': preferredInputs
|
'preferredInputs': preferredInputs
|
||||||
});
|
});
|
||||||
|
|
||||||
Future<PendingTransactionDescription> createTransactionMultDest(
|
|
||||||
{required List<MoneroOutput> outputs,
|
|
||||||
required int priorityRaw,
|
|
||||||
String paymentId = '',
|
|
||||||
int accountIndex = 0,
|
|
||||||
List<String> preferredInputs = const []}) async =>
|
|
||||||
_createTransactionMultDestSync({
|
|
||||||
'outputs': outputs,
|
|
||||||
'paymentId': paymentId,
|
|
||||||
'priorityRaw': priorityRaw,
|
|
||||||
'accountIndex': accountIndex,
|
|
||||||
'preferredInputs': preferredInputs
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
class Transaction {
|
class Transaction {
|
||||||
final String displayLabel;
|
final String displayLabel;
|
||||||
late final String subaddressLabel = monero.Wallet_getSubaddressLabel(
|
late final String subaddressLabel = monero.Wallet_getSubaddressLabel(
|
||||||
|
|
|
@ -402,6 +402,7 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
|
||||||
outputs: moneroOutputs,
|
outputs: moneroOutputs,
|
||||||
priorityRaw: _credentials.priority.serialize(),
|
priorityRaw: _credentials.priority.serialize(),
|
||||||
accountIndex: walletAddresses.account!.id,
|
accountIndex: walletAddresses.account!.id,
|
||||||
|
paymentId: "",
|
||||||
preferredInputs: inputs);
|
preferredInputs: inputs);
|
||||||
} else {
|
} else {
|
||||||
final output = outputs.first;
|
final output = outputs.first;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue