taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 678b8d798d34af1e0d9b1adb79d3a3c4e813734a
parent e8a5cd31620961ffece4477a7eb34f6d09171403
Author: Sebastian <sebasjm@taler-systems.com>
Date:   Fri, 17 Jul 2026 16:27:35 -0300

fix #11637

Diffstat:
Mpackages/taler-wallet-webextension/src/cta/Payment/index.ts | 1+
Mpackages/taler-wallet-webextension/src/cta/Payment/state.ts | 9+++++++--
Mpackages/taler-wallet-webextension/src/cta/Payment/views.tsx | 4++--
3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/packages/taler-wallet-webextension/src/cta/Payment/index.ts b/packages/taler-wallet-webextension/src/cta/Payment/index.ts @@ -107,6 +107,7 @@ export namespace State { status: "confirmed"; effective: undefined; message?: string; + redirectUrl?: string; paid: boolean; } } diff --git a/packages/taler-wallet-webextension/src/cta/Payment/state.ts b/packages/taler-wallet-webextension/src/cta/Payment/state.ts @@ -23,6 +23,7 @@ import { NotificationType, Result, TransactionMajorState, + TransactionMinorState, TransactionType, TranslatedString, } from "@gnu-taler/taler-util"; @@ -117,7 +118,8 @@ export function useComponentStateFromTxId({ const tx = hook.response.transaction; if ( tx.type !== TransactionType.Payment || - tx.txState.major !== TransactionMajorState.Done || + (tx.txState.major !== TransactionMajorState.Done && + tx.txState.minor !== TransactionMinorState.PaidByOther) || tx.contractTerms === undefined ) return; @@ -193,13 +195,16 @@ export function useComponentStateFromTxId({ }; if (payStatus.txState.major !== TransactionMajorState.Dialog) { - const paid = payStatus.txState.major === TransactionMajorState.Done; + const paid = + payStatus.txState.major === TransactionMajorState.Done || + payStatus.txState.minor === TransactionMinorState.PaidByOther; return { status: "confirmed", amount: Amounts.parseOrThrow(payStatus.amountRaw), effective: undefined, paid, message: contractTerms.fulfillment_message, + redirectUrl: contractTerms.fulfillment_url, ...baseResult, }; } diff --git a/packages/taler-wallet-webextension/src/cta/Payment/views.tsx b/packages/taler-wallet-webextension/src/cta/Payment/views.tsx @@ -148,12 +148,12 @@ function ShowImportantMessage({ state }: { state: PaymentStates }): VNode { const { i18n } = useTranslationContext(); if (state.status === "confirmed") { if (state.paid) { - if (state.message) { + if (state.redirectUrl) { return ( <SuccessBox> <i18n.Translate> Already paid, you are going to be redirected to{" "} - <a href={state.message}>{state.message}</a> + <a href={state.redirectUrl}>{state.message ?? state.redirectUrl}</a> </i18n.Translate> </SuccessBox> );