aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/pay-peer.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/operations/pay-peer.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/pay-peer.ts131
1 files changed, 122 insertions, 9 deletions
diff --git a/packages/taler-wallet-core/src/operations/pay-peer.ts b/packages/taler-wallet-core/src/operations/pay-peer.ts
index 031bdfb92..edebad65b 100644
--- a/packages/taler-wallet-core/src/operations/pay-peer.ts
+++ b/packages/taler-wallet-core/src/operations/pay-peer.ts
@@ -79,6 +79,7 @@ import {
TransactionMajorState,
TransactionMinorState,
TalerPreciseTimestamp,
+ TransactionAction,
} from "@gnu-taler/taler-util";
import { SpendCoinDetails } from "../crypto/cryptoImplementation.js";
import {
@@ -2008,7 +2009,36 @@ export function computePeerPushDebitTransactionState(
case PeerPushPaymentInitiationStatus.Failed:
return {
major: TransactionMajorState.Failed,
- }
+ };
+ }
+}
+
+export function computePeerPushDebitTransactionActions(
+ ppiRecord: PeerPushPaymentInitiationRecord,
+): TransactionAction[] {
+ switch (ppiRecord.status) {
+ case PeerPushPaymentInitiationStatus.PendingCreatePurse:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPushPaymentInitiationStatus.PendingReady:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPushPaymentInitiationStatus.Aborted:
+ return [TransactionAction.Delete];
+ case PeerPushPaymentInitiationStatus.AbortingDeletePurse:
+ return [TransactionAction.Suspend, TransactionAction.Fail];
+ case PeerPushPaymentInitiationStatus.AbortingRefresh:
+ return [TransactionAction.Suspend, TransactionAction.Fail];
+ case PeerPushPaymentInitiationStatus.SuspendedAbortingDeletePurse:
+ return [TransactionAction.Resume, TransactionAction.Fail];
+ case PeerPushPaymentInitiationStatus.SuspendedAbortingRefresh:
+ return [TransactionAction.Resume, TransactionAction.Fail];
+ case PeerPushPaymentInitiationStatus.SuspendedCreatePurse:
+ return [TransactionAction.Resume, TransactionAction.Abort];
+ case PeerPushPaymentInitiationStatus.SuspendedReady:
+ return [TransactionAction.Suspend, TransactionAction.Abort];
+ case PeerPushPaymentInitiationStatus.Done:
+ return [TransactionAction.Delete];
+ case PeerPushPaymentInitiationStatus.Failed:
+ return [TransactionAction.Delete];
}
}
@@ -2072,7 +2102,7 @@ export async function abortPeerPushDebitTransaction(
notifyTransition(ws, transactionId, transitionInfo);
}
-export async function cancelAbortingPeerPushDebitTransaction(
+export async function failPeerPushDebitTransaction(
ws: InternalWalletState,
pursePub: string,
) {
@@ -2316,8 +2346,7 @@ export async function abortPeerPullDebitTransaction(
notifyTransition(ws, transactionId, transitionInfo);
}
-
-export async function cancelAbortingPeerPullDebitTransaction(
+export async function failPeerPullDebitTransaction(
ws: InternalWalletState,
peerPullPaymentIncomingId: string,
) {
@@ -2501,7 +2530,6 @@ export async function suspendPeerPushCreditTransaction(
notifyTransition(ws, transactionId, transitionInfo);
}
-
export async function abortPeerPushCreditTransaction(
ws: InternalWalletState,
peerPushPaymentIncomingId: string,
@@ -2568,7 +2596,7 @@ export async function abortPeerPushCreditTransaction(
notifyTransition(ws, transactionId, transitionInfo);
}
-export async function cancelAbortingPeerPushCreditTransaction(
+export async function failPeerPushCreditTransaction(
ws: InternalWalletState,
peerPushPaymentIncomingId: string,
) {
@@ -2765,7 +2793,7 @@ export async function abortPeerPullCreditTransaction(
notifyTransition(ws, transactionId, transitionInfo);
}
-export async function cancelAbortingPeerPullCreditTransaction(
+export async function failPeerPullCreditTransaction(
ws: InternalWalletState,
pursePub: string,
) {
@@ -2996,12 +3024,41 @@ export function computePeerPushCreditTransactionState(
};
case PeerPushPaymentIncomingStatus.Aborted:
return {
- major: TransactionMajorState.Aborted
+ major: TransactionMajorState.Aborted,
};
case PeerPushPaymentIncomingStatus.Failed:
return {
major: TransactionMajorState.Failed,
- }
+ };
+ default:
+ assertUnreachable(pushCreditRecord.status);
+ }
+}
+
+export function computePeerPushCreditTransactionActions(
+ pushCreditRecord: PeerPushPaymentIncomingRecord,
+): TransactionAction[] {
+ switch (pushCreditRecord.status) {
+ case PeerPushPaymentIncomingStatus.DialogProposed:
+ return [];
+ case PeerPushPaymentIncomingStatus.PendingMerge:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPushPaymentIncomingStatus.Done:
+ return [TransactionAction.Delete];
+ case PeerPushPaymentIncomingStatus.PendingMergeKycRequired:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPushPaymentIncomingStatus.PendingWithdrawing:
+ return [TransactionAction.Suspend, TransactionAction.Fail];
+ case PeerPushPaymentIncomingStatus.SuspendedMerge:
+ return [TransactionAction.Resume, TransactionAction.Abort];
+ case PeerPushPaymentIncomingStatus.SuspendedMergeKycRequired:
+ return [TransactionAction.Resume, TransactionAction.Abort];
+ case PeerPushPaymentIncomingStatus.SuspendedWithdrawing:
+ return [TransactionAction.Resume, TransactionAction.Fail];
+ case PeerPushPaymentIncomingStatus.Aborted:
+ return [TransactionAction.Delete];
+ case PeerPushPaymentIncomingStatus.Failed:
+ return [TransactionAction.Delete];
default:
assertUnreachable(pushCreditRecord.status);
}
@@ -3076,6 +3133,39 @@ export function computePeerPullCreditTransactionState(
}
}
+export function computePeerPullCreditTransactionActions(
+ pullCreditRecord: PeerPullPaymentInitiationRecord,
+): TransactionAction[] {
+ switch (pullCreditRecord.status) {
+ case PeerPullPaymentInitiationStatus.PendingCreatePurse:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPullPaymentInitiationStatus.PendingMergeKycRequired:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPullPaymentInitiationStatus.PendingReady:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPullPaymentInitiationStatus.DonePurseDeposited:
+ return [TransactionAction.Delete];
+ case PeerPullPaymentInitiationStatus.PendingWithdrawing:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPullPaymentInitiationStatus.SuspendedCreatePurse:
+ return [TransactionAction.Resume, TransactionAction.Abort];
+ case PeerPullPaymentInitiationStatus.SuspendedReady:
+ return [TransactionAction.Abort, TransactionAction.Resume];
+ case PeerPullPaymentInitiationStatus.SuspendedWithdrawing:
+ return [TransactionAction.Resume, TransactionAction.Fail];
+ case PeerPullPaymentInitiationStatus.SuspendedMergeKycRequired:
+ return [TransactionAction.Resume, TransactionAction.Fail];
+ case PeerPullPaymentInitiationStatus.Aborted:
+ return [TransactionAction.Delete];
+ case PeerPullPaymentInitiationStatus.AbortingDeletePurse:
+ return [TransactionAction.Suspend, TransactionAction.Fail];
+ case PeerPullPaymentInitiationStatus.Failed:
+ return [TransactionAction.Delete];
+ case PeerPullPaymentInitiationStatus.SuspendedAbortingDeletePurse:
+ return [TransactionAction.Resume, TransactionAction.Fail];
+ }
+}
+
export function computePeerPullDebitTransactionState(
pullDebitRecord: PeerPullPaymentIncomingRecord,
): TransactionState {
@@ -3119,3 +3209,26 @@ export function computePeerPullDebitTransactionState(
};
}
}
+
+export function computePeerPullDebitTransactionActions(
+ pullDebitRecord: PeerPullPaymentIncomingRecord,
+): TransactionAction[] {
+ switch (pullDebitRecord.status) {
+ case PeerPullDebitRecordStatus.DialogProposed:
+ return [];
+ case PeerPullDebitRecordStatus.PendingDeposit:
+ return [TransactionAction.Abort, TransactionAction.Suspend];
+ case PeerPullDebitRecordStatus.DonePaid:
+ return [TransactionAction.Delete];
+ case PeerPullDebitRecordStatus.SuspendedDeposit:
+ return [TransactionAction.Resume, TransactionAction.Abort];
+ case PeerPullDebitRecordStatus.Aborted:
+ return [TransactionAction.Delete];
+ case PeerPullDebitRecordStatus.AbortingRefresh:
+ return [TransactionAction.Fail, TransactionAction.Suspend];
+ case PeerPullDebitRecordStatus.Failed:
+ return [TransactionAction.Delete];
+ case PeerPullDebitRecordStatus.SuspendedAbortingRefresh:
+ return [TransactionAction.Resume, TransactionAction.Fail];
+ }
+}