-DD37 wip
This commit is contained in:
parent
f94d7bc151
commit
fd86791e42
@ -89,6 +89,7 @@ export enum TransactionMajorState {
|
||||
Aborting = "aborting",
|
||||
Aborted = "aborted",
|
||||
Suspended = "suspended",
|
||||
SuspendedAborting = "suspended-aborting",
|
||||
Failed = "failed",
|
||||
// Only used for the notification, never in the transaction history
|
||||
Deleted = "deleted",
|
||||
@ -105,6 +106,11 @@ export enum TransactionMinorState {
|
||||
Refresh = "refresh",
|
||||
Pickup = "pickup",
|
||||
User = "user",
|
||||
Bank = "bank",
|
||||
BankRegisterReserve = "bank-register-reserve",
|
||||
BankConfirmTransfer = "bank-confirm-transfer",
|
||||
WithdrawCoins = "withdraw-coins",
|
||||
ExchangeWaitReserve = "exchange-wait-reserve",
|
||||
}
|
||||
|
||||
export interface TransactionsResponse {
|
||||
|
@ -165,6 +165,12 @@ export enum WithdrawalGroupStatus {
|
||||
*/
|
||||
Ready = 13,
|
||||
|
||||
/**
|
||||
* We are telling the bank that we don't want to complete
|
||||
* the withdrawal!
|
||||
*/
|
||||
AbortingBank = 14,
|
||||
|
||||
/**
|
||||
* The corresponding withdraw record has been created.
|
||||
* No further processing is done, unless explicitly requested
|
||||
@ -176,6 +182,12 @@ export enum WithdrawalGroupStatus {
|
||||
* The bank aborted the withdrawal.
|
||||
*/
|
||||
BankAborted = 51,
|
||||
|
||||
SuspendedRegisteringBank = 52,
|
||||
SuspendedWaitConfirmBank = 53,
|
||||
SuspendedQueryingStatus = 54,
|
||||
SuspendedReady = 55,
|
||||
SuspendedAbortingBank = 55,
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -71,6 +71,7 @@ import {
|
||||
TalerErrorDetail,
|
||||
TalerProtocolTimestamp,
|
||||
TalerProtocolViolationError,
|
||||
TransactionState,
|
||||
TransactionType,
|
||||
URL,
|
||||
} from "@gnu-taler/taler-util";
|
||||
@ -2472,3 +2473,9 @@ export async function abortPay(
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export function computeWithdrawalTransactionStatus(
|
||||
purchaseRecord: PurchaseRecord,
|
||||
): TransactionState {
|
||||
throw Error("not implemented");
|
||||
}
|
||||
|
@ -95,6 +95,7 @@ import { processRefreshGroup } from "./refresh.js";
|
||||
import { computeTipTransactionStatus, processTip } from "./tip.js";
|
||||
import {
|
||||
augmentPaytoUrisForWithdrawal,
|
||||
computeWithdrawalTransactionStatus,
|
||||
processWithdrawalGroup,
|
||||
} from "./withdraw.js";
|
||||
|
||||
@ -643,35 +644,35 @@ function buildTransactionForPeerPushCredit(
|
||||
}
|
||||
|
||||
function buildTransactionForBankIntegratedWithdraw(
|
||||
wsr: WithdrawalGroupRecord,
|
||||
wgRecord: WithdrawalGroupRecord,
|
||||
ort?: OperationRetryRecord,
|
||||
): Transaction {
|
||||
if (wsr.wgInfo.withdrawalType !== WithdrawalRecordType.BankIntegrated)
|
||||
if (wgRecord.wgInfo.withdrawalType !== WithdrawalRecordType.BankIntegrated)
|
||||
throw Error("");
|
||||
|
||||
return {
|
||||
type: TransactionType.Withdrawal,
|
||||
txState: mkTxStateUnknown(),
|
||||
amountEffective: Amounts.stringify(wsr.denomsSel.totalCoinValue),
|
||||
amountRaw: Amounts.stringify(wsr.instructedAmount),
|
||||
txState: computeWithdrawalTransactionStatus(wgRecord),
|
||||
amountEffective: Amounts.stringify(wgRecord.denomsSel.totalCoinValue),
|
||||
amountRaw: Amounts.stringify(wgRecord.instructedAmount),
|
||||
withdrawalDetails: {
|
||||
type: WithdrawalType.TalerBankIntegrationApi,
|
||||
confirmed: wsr.wgInfo.bankInfo.timestampBankConfirmed ? true : false,
|
||||
reservePub: wsr.reservePub,
|
||||
bankConfirmationUrl: wsr.wgInfo.bankInfo.confirmUrl,
|
||||
confirmed: wgRecord.wgInfo.bankInfo.timestampBankConfirmed ? true : false,
|
||||
reservePub: wgRecord.reservePub,
|
||||
bankConfirmationUrl: wgRecord.wgInfo.bankInfo.confirmUrl,
|
||||
reserveIsReady:
|
||||
wsr.status === WithdrawalGroupStatus.Finished ||
|
||||
wsr.status === WithdrawalGroupStatus.Ready,
|
||||
wgRecord.status === WithdrawalGroupStatus.Finished ||
|
||||
wgRecord.status === WithdrawalGroupStatus.Ready,
|
||||
},
|
||||
exchangeBaseUrl: wsr.exchangeBaseUrl,
|
||||
extendedStatus: wsr.timestampFinish
|
||||
exchangeBaseUrl: wgRecord.exchangeBaseUrl,
|
||||
extendedStatus: wgRecord.timestampFinish
|
||||
? ExtendedStatus.Done
|
||||
: ExtendedStatus.Pending,
|
||||
pending: !wsr.timestampFinish,
|
||||
timestamp: wsr.timestampStart,
|
||||
pending: !wgRecord.timestampFinish,
|
||||
timestamp: wgRecord.timestampStart,
|
||||
transactionId: makeTransactionId(
|
||||
TransactionType.Withdrawal,
|
||||
wsr.withdrawalGroupId,
|
||||
wgRecord.withdrawalGroupId,
|
||||
),
|
||||
frozen: false,
|
||||
...(ort?.lastError ? { error: ort.lastError } : {}),
|
||||
@ -697,7 +698,7 @@ function buildTransactionForManualWithdraw(
|
||||
|
||||
return {
|
||||
type: TransactionType.Withdrawal,
|
||||
txState: mkTxStateUnknown(),
|
||||
txState: computeWithdrawalTransactionStatus(withdrawalGroup),
|
||||
amountEffective: Amounts.stringify(
|
||||
withdrawalGroup.denomsSel.totalCoinValue,
|
||||
),
|
||||
@ -1238,10 +1239,12 @@ export async function getTransactions(
|
||||
case WithdrawalRecordType.PeerPullCredit:
|
||||
// Will be reported by the corresponding p2p transaction.
|
||||
// FIXME: If this is an orphan withdrawal, still report it as a withdrawal!
|
||||
// FIXME: Still report if requested with verbose option?
|
||||
return;
|
||||
case WithdrawalRecordType.PeerPushCredit:
|
||||
// Will be reported by the corresponding p2p transaction.
|
||||
// FIXME: If this is an orphan withdrawal, still report it as a withdrawal!
|
||||
// FIXME: Still report if requested with verbose option?
|
||||
return;
|
||||
case WithdrawalRecordType.BankIntegrated:
|
||||
transactions.push(
|
||||
|
@ -40,7 +40,6 @@ import {
|
||||
DenomKeyType,
|
||||
DenomSelectionState,
|
||||
Duration,
|
||||
durationFromSpec,
|
||||
encodeCrock,
|
||||
ExchangeListItem,
|
||||
ExchangeWithdrawalDetails,
|
||||
@ -64,6 +63,9 @@ import {
|
||||
WithdrawUriInfoResponse,
|
||||
ExchangeBatchWithdrawRequest,
|
||||
WalletNotification,
|
||||
TransactionState,
|
||||
TransactionMajorState,
|
||||
TransactionMinorState,
|
||||
} from "@gnu-taler/taler-util";
|
||||
import { EddsaKeypair } from "../crypto/cryptoImplementation.js";
|
||||
import {
|
||||
@ -133,6 +135,66 @@ import { isWithdrawableDenom } from "../index.js";
|
||||
*/
|
||||
const logger = new Logger("operations/withdraw.ts");
|
||||
|
||||
export function computeWithdrawalTransactionStatus(
|
||||
wgRecord: WithdrawalGroupRecord,
|
||||
): TransactionState {
|
||||
switch (wgRecord.status) {
|
||||
case WithdrawalGroupStatus.BankAborted:
|
||||
return {
|
||||
major: TransactionMajorState.Aborted,
|
||||
};
|
||||
case WithdrawalGroupStatus.Finished:
|
||||
return {
|
||||
major: TransactionMajorState.Done,
|
||||
};
|
||||
case WithdrawalGroupStatus.RegisteringBank:
|
||||
return {
|
||||
major: TransactionMajorState.Pending,
|
||||
minor: TransactionMinorState.BankRegisterReserve,
|
||||
};
|
||||
case WithdrawalGroupStatus.Ready:
|
||||
return {
|
||||
major: TransactionMajorState.Pending,
|
||||
minor: TransactionMinorState.WithdrawCoins,
|
||||
};
|
||||
case WithdrawalGroupStatus.QueryingStatus:
|
||||
return {
|
||||
major: TransactionMajorState.Pending,
|
||||
minor: TransactionMinorState.ExchangeWaitReserve,
|
||||
};
|
||||
case WithdrawalGroupStatus.WaitConfirmBank:
|
||||
return {
|
||||
major: TransactionMajorState.Pending,
|
||||
minor: TransactionMinorState.BankConfirmTransfer,
|
||||
};
|
||||
case WithdrawalGroupStatus.AbortingBank:
|
||||
return {
|
||||
major: TransactionMajorState.Aborting,
|
||||
minor: TransactionMinorState.Bank,
|
||||
};
|
||||
case WithdrawalGroupStatus.SuspendedAbortingBank:
|
||||
return {
|
||||
major: TransactionMajorState.SuspendedAborting,
|
||||
minor: TransactionMinorState.Bank,
|
||||
};
|
||||
case WithdrawalGroupStatus.SuspendedQueryingStatus:
|
||||
return {
|
||||
major: TransactionMajorState.Suspended,
|
||||
minor: TransactionMinorState.ExchangeWaitReserve,
|
||||
};
|
||||
case WithdrawalGroupStatus.SuspendedRegisteringBank:
|
||||
return {
|
||||
major: TransactionMajorState.Suspended,
|
||||
minor: TransactionMinorState.BankRegisterReserve,
|
||||
};
|
||||
case WithdrawalGroupStatus.SuspendedWaitConfirmBank:
|
||||
return {
|
||||
major: TransactionMajorState.Suspended,
|
||||
minor: TransactionMinorState.BankConfirmTransfer,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get information about a withdrawal from
|
||||
* a taler://withdraw URI by asking the bank.
|
||||
|
Loading…
Reference in New Issue
Block a user