From ce41337bd1f15a82706808d02660d6550c7ab9fc Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 24 Apr 2023 21:39:28 +0200 Subject: wallet-core: derive DD37 for tipping --- packages/taler-wallet-core/src/operations/tip.ts | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'packages/taler-wallet-core/src/operations/tip.ts') diff --git a/packages/taler-wallet-core/src/operations/tip.ts b/packages/taler-wallet-core/src/operations/tip.ts index b37288079..5bcf609b5 100644 --- a/packages/taler-wallet-core/src/operations/tip.ts +++ b/packages/taler-wallet-core/src/operations/tip.ts @@ -35,6 +35,9 @@ import { TalerErrorCode, TalerProtocolTimestamp, TipPlanchetDetail, + TransactionMajorState, + TransactionMinorState, + TransactionState, TransactionType, URL, } from "@gnu-taler/taler-util"; @@ -67,6 +70,30 @@ import { selectWithdrawalDenominations } from "../util/coinSelection.js"; const logger = new Logger("operations/tip.ts"); +/** + * Get the (DD37-style) transaction status based on the + * database record of a tip. + */ +export function computeTipTransactionStatus( + tipRecord: TipRecord, +): TransactionState { + if (tipRecord.pickedUpTimestamp) { + return { + major: TransactionMajorState.Done, + }; + } + if (tipRecord.acceptedTimestamp) { + return { + major: TransactionMajorState.Pending, + minor: TransactionMinorState.Pickup, + }; + } + return { + major: TransactionMajorState.Pending, + minor: TransactionMinorState.User, + }; +} + export async function prepareTip( ws: InternalWalletState, talerTipUri: string, -- cgit v1.2.3