wallet-core: Add 'deposited' field to deposit transaction
This field indicates whether the POST requests to deposit coins went through with the exchange. We also don't consider a deposit transaction as having lifeness when it is already deposited and we're just querying for informational deposit tracking information.
This commit is contained in:
parent
5e129abe9e
commit
598de5b0d5
@ -54,11 +54,10 @@ export async function runDepositTest(t: GlobalTestState) {
|
||||
WalletApiOperation.GetTransactions,
|
||||
{},
|
||||
);
|
||||
|
||||
console.log("transactions", JSON.stringify(transactions, undefined, 2));
|
||||
t.assertDeepEqual(transactions.transactions[0].type, "withdrawal");
|
||||
t.assertTrue(!transactions.transactions[0].pending);
|
||||
t.assertDeepEqual(transactions.transactions[1].type, "deposit");
|
||||
t.assertTrue(!transactions.transactions[1].pending);
|
||||
// The raw amount is what ends up on the bank account, which includes
|
||||
// deposit and wire fees.
|
||||
t.assertDeepEqual(transactions.transactions[1].amountRaw, "TESTKUDOS:9.79");
|
||||
|
@ -550,6 +550,11 @@ export interface TransactionDeposit extends TransactionCommon {
|
||||
wireTransferDeadline: TalerProtocolTimestamp;
|
||||
|
||||
wireTransferProgress: number;
|
||||
|
||||
/**
|
||||
* Did all the deposit requests succeed?
|
||||
*/
|
||||
deposited: boolean;
|
||||
}
|
||||
|
||||
export interface TransactionByIdRequest {
|
||||
|
@ -21,7 +21,6 @@ import {
|
||||
AbsoluteTime,
|
||||
AmountJson,
|
||||
Amounts,
|
||||
bytesToString,
|
||||
CancellationToken,
|
||||
canonicalJson,
|
||||
codecForDepositSuccess,
|
||||
@ -457,6 +456,8 @@ export async function prepareDepositGroup(
|
||||
effectiveDepositAmount: Amounts.stringify(effectiveDepositAmount),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
export async function createDepositGroup(
|
||||
ws: InternalWalletState,
|
||||
req: CreateDepositGroupRequest,
|
||||
|
@ -200,13 +200,22 @@ async function gatherDepositPending(
|
||||
if (dg.timestampFinished) {
|
||||
return;
|
||||
}
|
||||
let deposited = true;
|
||||
for (const d of dg.depositedPerCoin) {
|
||||
if (!d) {
|
||||
deposited = false;
|
||||
}
|
||||
}
|
||||
const opId = RetryTags.forDeposit(dg);
|
||||
const retryRecord = await tx.operationRetries.get(opId);
|
||||
const timestampDue = retryRecord?.retryInfo.nextRetry ?? AbsoluteTime.now();
|
||||
resp.pendingOperations.push({
|
||||
type: PendingTaskType.Deposit,
|
||||
...getPendingCommon(ws, opId, timestampDue),
|
||||
givesLifeness: true,
|
||||
// Fully deposited operations don't give lifeness,
|
||||
// because there is no reason to wait on the
|
||||
// deposit tracking status.
|
||||
givesLifeness: !deposited,
|
||||
depositGroupId: dg.depositGroupId,
|
||||
lastError: retryRecord?.lastError,
|
||||
retryInfo: retryRecord?.retryInfo,
|
||||
|
@ -557,6 +557,12 @@ function buildTransactionForDeposit(
|
||||
dg: DepositGroupRecord,
|
||||
ort?: OperationRetryRecord,
|
||||
): Transaction {
|
||||
let deposited = true;
|
||||
for (const d of dg.depositedPerCoin) {
|
||||
if (!d) {
|
||||
deposited = false;
|
||||
}
|
||||
}
|
||||
return {
|
||||
type: TransactionType.Deposit,
|
||||
amountRaw: Amounts.stringify(dg.effectiveDepositAmount),
|
||||
@ -581,6 +587,7 @@ function buildTransactionForDeposit(
|
||||
)) /
|
||||
dg.transactionPerCoin.length,
|
||||
depositGroupId: dg.depositGroupId,
|
||||
deposited,
|
||||
...(ort?.lastError ? { error: ort.lastError } : {}),
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user