aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/NavigationBar.tsx
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2023-04-13 12:21:39 -0300
committerSebastian <sebasjm@gmail.com>2023-04-13 12:57:40 -0300
commit7b2de89444f27faa554bb40855da996a113ef5b9 (patch)
treedf56fd4246a93790ef778640a7b07c692bc569ca /packages/taler-wallet-webextension/src/NavigationBar.tsx
parentebd004195673c58718c7c9d8b8270df28b35b539 (diff)
downloadwallet-core-7b2de89444f27faa554bb40855da996a113ef5b9.tar.xz
use /taler-uri as redirection point to all taler uris
Diffstat (limited to 'packages/taler-wallet-webextension/src/NavigationBar.tsx')
-rw-r--r--packages/taler-wallet-webextension/src/NavigationBar.tsx30
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();