diff options
author | Sebastian <sebasjm@gmail.com> | 2023-08-07 06:51:45 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2023-08-07 08:14:45 -0300 |
commit | ef148b1501e6820a75e4e5c8b29ce88d54fd2783 (patch) | |
tree | 1f46ac7f3f715adfacf6a1056a4081a3bfe3f0df /packages/merchant-backoffice-ui/src/paths/instance | |
parent | 9f776d3fb0de01c44ca7b6efcdbcf89655a6ac3f (diff) | |
download | wallet-core-ef148b1501e6820a75e4e5c8b29ce88d54fd2783.tar.xz |
use stringify taler util
Diffstat (limited to 'packages/merchant-backoffice-ui/src/paths/instance')
-rw-r--r-- | packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx b/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx index 90084f113..0f30efafd 100644 --- a/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx +++ b/packages/merchant-backoffice-ui/src/paths/instance/templates/qr/QrPage.tsx @@ -34,6 +34,7 @@ import { useBackendContext } from "../../../../context/backend.js"; import { useConfigContext } from "../../../../context/config.js"; import { useInstanceContext } from "../../../../context/instance.js"; import { MerchantBackend } from "../../../../declaration.js"; +import { stringifyPayTemplateUri } from "@gnu-taler/taler-util"; type Entity = MerchantBackend.Template.UsingTemplateDetails; @@ -64,46 +65,47 @@ export function QrPage({ template, id: templateId, onBack }: Props): VNode { const fixedAmount = !!template.template_contract.amount; const fixedSummary = !!template.template_contract.summary; - const params = new URLSearchParams(); + const templateParams: Record<string, string> = {} if (!fixedAmount) { if (state.amount) { - params.append("amount", state.amount); + templateParams.amount = state.amount } else { - params.append("amount", config.currency); + templateParams.amount = config.currency } } + if (!fixedSummary) { - params.append("summary", state.summary ?? ""); + templateParams.summary = state.summary ?? "" } - const paramsStr = fixedAmount && fixedSummary ? "" : "?" + params.toString(); - const merchantURL = new URL(backendUrl); - - const talerProto = - merchantURL.protocol === "http:" ? "taler+http:" : "taler:"; + const merchantBaseUrl = new URL(backendUrl).href; - const payTemplateUri = `${talerProto}//pay-template/${merchantURL.hostname}/${templateId}${paramsStr}`; + const payTemplateUri = stringifyPayTemplateUri({ + merchantBaseUrl, + templateId, + templateParams + }) const issuer = encodeURIComponent( - `${new URL(backendUrl).hostname}/${instanceId}`, + `${new URL(backendUrl).host}/${instanceId}`, ); const oauthUri = !template.pos_algorithm ? undefined : template.pos_algorithm === 1 - ? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` - : template.pos_algorithm === 2 - ? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` - : undefined; + ? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` + : template.pos_algorithm === 2 + ? `otpauth://totp/${issuer}:${templateId}?secret=${template.pos_key}&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` + : undefined; const keySlice = template.pos_key?.substring(0, 4); const oauthUriWithoutSecret = !template.pos_algorithm ? undefined : template.pos_algorithm === 1 - ? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` - : template.pos_algorithm === 2 - ? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` - : undefined; + ? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` + : template.pos_algorithm === 2 + ? `otpauth://totp/${issuer}:${templateId}?secret=${keySlice}...&issuer=${issuer}&algorithm=SHA1&digits=8&period=30` + : undefined; return ( <div> {oauthUri && ( |