diff options
Diffstat (limited to 'packages/taler-wallet-webextension/src/NavigationBar.tsx')
-rw-r--r-- | packages/taler-wallet-webextension/src/NavigationBar.tsx | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/packages/taler-wallet-webextension/src/NavigationBar.tsx b/packages/taler-wallet-webextension/src/NavigationBar.tsx index e8ee4f475..b73704c70 100644 --- a/packages/taler-wallet-webextension/src/NavigationBar.tsx +++ b/packages/taler-wallet-webextension/src/NavigationBar.tsx @@ -38,6 +38,7 @@ import { useAsyncAsHook } from "./hooks/useAsyncAsHook.js"; import qrIcon from "./svg/qr_code_24px.svg"; import settingsIcon from "./svg/settings_black_24dp.svg"; import warningIcon from "./svg/warning_24px.svg"; +import { parseTalerUri, TalerUriAction } from "@gnu-taler/taler-util"; /** * List of pages used by the wallet @@ -115,6 +116,7 @@ export const Pages = { "/settings/exchange/add/:currency?", ), + defaultCta: pageDefinition<{ uri: string }>("/taler-uri/:uri"), cta: pageDefinition<{ action: string }>("/cta/:action"), ctaPay: "/cta/pay", ctaPayTemplate: "/cta/pay/template", @@ -136,6 +138,34 @@ export const Pages = { ), }; +const talerUriActionToPageName: { + [t in TalerUriAction]: keyof typeof Pages | undefined; +} = { + [TalerUriAction.Withdraw]: "ctaWithdraw", + [TalerUriAction.Pay]: "ctaPay", + [TalerUriAction.Tip]: "ctaTips", + [TalerUriAction.Refund]: "ctaRefund", + [TalerUriAction.PayPull]: "ctaInvoicePay", + [TalerUriAction.PayPush]: "ctaTransferPickup", + [TalerUriAction.Restore]: "ctaRecovery", + [TalerUriAction.PayTemplate]: "ctaPayTemplate", + [TalerUriAction.DevExperiment]: undefined, + [TalerUriAction.Exchange]: undefined, + [TalerUriAction.Auditor]: undefined, +}; + +export function getPathnameForTalerURI(talerUri: string): string | undefined { + const uri = parseTalerUri(talerUri); + if (!uri) { + return undefined; + } + const pageName = talerUriActionToPageName[uri.type]; + if (!pageName) { + return undefined; + } + return `${Pages[pageName]}?talerUri=${encodeURIComponent(talerUri)}`; +} + export type PopupNavBarOptions = "balance" | "backup" | "dev"; export function PopupNavBar({ path }: { path?: PopupNavBarOptions }): VNode { const api = useBackendContext(); |