aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/utils
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2021-11-30 17:29:33 -0300
committerSebastian <sebasjm@gmail.com>2021-11-30 17:29:33 -0300
commit54d4a1efe0a55a80ed594f14698da16dfded8c47 (patch)
treef0e70c6c389f009eccd230cfd63cf647de6e2f78 /packages/taler-wallet-webextension/src/utils
parent045a7c0aa10d8e7b3cb5fa139e868b327680f846 (diff)
downloadwallet-core-54d4a1efe0a55a80ed594f14698da16dfded8c47.tar.xz
add a taler action from the history page
Diffstat (limited to 'packages/taler-wallet-webextension/src/utils')
-rw-r--r--packages/taler-wallet-webextension/src/utils/index.ts51
1 files changed, 50 insertions, 1 deletions
diff --git a/packages/taler-wallet-webextension/src/utils/index.ts b/packages/taler-wallet-webextension/src/utils/index.ts
index 15081f920..8eb89d58f 100644
--- a/packages/taler-wallet-webextension/src/utils/index.ts
+++ b/packages/taler-wallet-webextension/src/utils/index.ts
@@ -14,7 +14,7 @@
GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-import { AmountJson, Amounts, GetExchangeTosResult } from "@gnu-taler/taler-util";
+import { AmountJson, Amounts, GetExchangeTosResult, TalerUriType } from "@gnu-taler/taler-util";
function getJsonIfOk(r: Response): Promise<any> {
@@ -164,3 +164,52 @@ export function amountToString(text: AmountJson): string {
return `${amount} ${aj.currency}`;
}
+export function actionForTalerUri(
+ uriType: TalerUriType,
+ talerUri: string,
+): string | undefined {
+ switch (uriType) {
+ case TalerUriType.TalerWithdraw:
+ return makeExtensionUrlWithParams("static/wallet.html#/withdraw", {
+ talerWithdrawUri: talerUri,
+ });
+ case TalerUriType.TalerPay:
+ return makeExtensionUrlWithParams("static/wallet.html#/pay", {
+ talerPayUri: talerUri,
+ });
+ case TalerUriType.TalerTip:
+ return makeExtensionUrlWithParams("static/wallet.html#/tip", {
+ talerTipUri: talerUri,
+ });
+ case TalerUriType.TalerRefund:
+ return makeExtensionUrlWithParams("static/wallet.html#/refund", {
+ talerRefundUri: talerUri,
+ });
+ case TalerUriType.TalerNotifyReserve:
+ // FIXME: implement
+ break;
+ default:
+ console.warn(
+ "Response with HTTP 402 has Taler header, but header value is not a taler:// URI.",
+ );
+ break;
+ }
+ return undefined;
+}
+
+function makeExtensionUrlWithParams(
+ url: string,
+ params?: { [name: string]: string | undefined },
+): string {
+ // eslint-disable-next-line no-undef
+ const innerUrl = new URL(chrome.extension.getURL("/" + url));
+ if (params) {
+ const hParams = Object.keys(params)
+ .map((k) => `${k}=${params[k]}`)
+ .join("&");
+ innerUrl.hash = innerUrl.hash + "?" + hParams;
+ }
+ return innerUrl.href;
+}
+
+