summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2022-12-22 18:42:18 -0300
committerSebastian <sebasjm@gmail.com>2022-12-22 18:42:18 -0300
commitdc002f99a96752d3f0a10efe44a8a4d0503e8529 (patch)
tree52ae5cc1239a6aafb6e2f18b774d1d4f4d2afa60 /packages/taler-wallet-webextension/src
parent5c84c3273668fa5aaeb2ac040eb7b13ad439549c (diff)
downloadwallet-core-dc002f99a96752d3f0a10efe44a8a4d0503e8529.tar.gz
wallet-core-dc002f99a96752d3f0a10efe44a8a4d0503e8529.tar.bz2
wallet-core-dc002f99a96752d3f0a10efe44a8a4d0503e8529.zip
support for ext+taler:// while taler:// is not yet allowed as scheme
Diffstat (limited to 'packages/taler-wallet-webextension/src')
-rw-r--r--packages/taler-wallet-webextension/src/cta/Withdraw/state.ts7
-rw-r--r--packages/taler-wallet-webextension/src/platform/chrome.ts5
-rw-r--r--packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx60
-rw-r--r--packages/taler-wallet-webextension/src/wxBackend.ts5
4 files changed, 72 insertions, 5 deletions
diff --git a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
index 1ecf05eca..d1853442b 100644
--- a/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
+++ b/packages/taler-wallet-webextension/src/cta/Withdraw/state.ts
@@ -90,7 +90,7 @@ export function useComponentStateFromParams({
}
export function useComponentStateFromURI({
- talerWithdrawUri,
+ talerWithdrawUri: maybeTalerUri,
cancel,
onSuccess,
}: PropsFromURI): RecursiveState<State> {
@@ -99,7 +99,10 @@ export function useComponentStateFromURI({
* Ask the wallet about the withdraw URI
*/
const uriInfoHook = useAsyncAsHook(async () => {
- if (!talerWithdrawUri) throw Error("ERROR_NO-URI-FOR-WITHDRAWAL");
+ if (!maybeTalerUri) throw Error("ERROR_NO-URI-FOR-WITHDRAWAL");
+ const talerWithdrawUri = maybeTalerUri.startsWith("ext+")
+ ? maybeTalerUri.substring(4)
+ : maybeTalerUri;
const uriInfo = await api.wallet.call(
WalletApiOperation.GetWithdrawalDetailsForUri,
diff --git a/packages/taler-wallet-webextension/src/platform/chrome.ts b/packages/taler-wallet-webextension/src/platform/chrome.ts
index b7b0c6640..744283913 100644
--- a/packages/taler-wallet-webextension/src/platform/chrome.ts
+++ b/packages/taler-wallet-webextension/src/platform/chrome.ts
@@ -233,7 +233,10 @@ function notifyWhenAppIsReady(callback: () => void): void {
}
}
-function openWalletURIFromPopup(talerUri: string): void {
+function openWalletURIFromPopup(maybeTalerUri: string): void {
+ const talerUri = maybeTalerUri.startsWith("ext+")
+ ? maybeTalerUri.substring(4)
+ : maybeTalerUri;
const uriType = classifyTalerUri(talerUri);
let url: string | undefined = undefined;
diff --git a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
index 0916f4f43..4805c03ca 100644
--- a/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
+++ b/packages/taler-wallet-webextension/src/wallet/DeveloperPage.tsx
@@ -170,7 +170,7 @@ export function View({
<p>
<i18n.Translate>Debug tools</i18n.Translate>:
</p>
- <Grid container justifyContent="space-between" spacing={1}>
+ <Grid container justifyContent="space-between" spacing={1} size={4}>
<Grid item>
<Button
variant="contained"
@@ -251,6 +251,64 @@ export function View({
<i18n.Translate>export database</i18n.Translate>
</Button>
</Grid>
+ <Grid item>
+ <Button
+ variant="contained"
+ onClick={async () => {
+ navigator.registerProtocolHandler(
+ "taler",
+ `${window.location.origin}/static/wallet.html#/cta/withdraw?talerWithdrawUri=%s`,
+ );
+ }}
+ >
+ <i18n.Translate>Register taler:// handler</i18n.Translate>
+ </Button>
+ </Grid>
+ <Grid item>
+ <Button
+ variant="contained"
+ onClick={async () => {
+ const n = navigator as any;
+ if ("unregisterProtocolHandler" in n) {
+ n.unregisterProtocolHandler(
+ "taler",
+ `${window.location.origin}/static/wallet.html#/cta/withdraw?talerWithdrawUri=%s`,
+ );
+ }
+ }}
+ >
+ <i18n.Translate>Remove taler:// handler</i18n.Translate>
+ </Button>
+ </Grid>{" "}
+ <Grid item>
+ <Button
+ variant="contained"
+ onClick={async () => {
+ navigator.registerProtocolHandler(
+ "ext+taler",
+ `${window.location.origin}/static/wallet.html#/cta/withdraw?talerWithdrawUri=%s`,
+ );
+ }}
+ >
+ <i18n.Translate>Register ext+taler:// handler</i18n.Translate>
+ </Button>
+ </Grid>
+ <Grid item>
+ <Button
+ variant="contained"
+ onClick={async () => {
+ const n = navigator as any;
+ if ("unregisterProtocolHandler" in n) {
+ n.unregisterProtocolHandler(
+ "ext+taler",
+ `${window.location.origin}/static/wallet.html#/cta/withdraw?talerWithdrawUri=%s`,
+ );
+ }
+ }}
+ >
+ <i18n.Translate>Remove ext+taler:// handler</i18n.Translate>
+ </Button>
+ </Grid>{" "}
</Grid>
{downloadedDatabase && (
<div>
diff --git a/packages/taler-wallet-webextension/src/wxBackend.ts b/packages/taler-wallet-webextension/src/wxBackend.ts
index dca239de6..0f0beb41f 100644
--- a/packages/taler-wallet-webextension/src/wxBackend.ts
+++ b/packages/taler-wallet-webextension/src/wxBackend.ts
@@ -298,7 +298,10 @@ async function reinitWallet(): Promise<void> {
return walletInit.resolve();
}
-function parseTalerUriAndRedirect(tabId: number, talerUri: string): void {
+function parseTalerUriAndRedirect(tabId: number, maybeTalerUri: string): void {
+ const talerUri = maybeTalerUri.startsWith("ext+")
+ ? maybeTalerUri.substring(4)
+ : maybeTalerUri;
const uriType = classifyTalerUri(talerUri);
switch (uriType) {
case TalerUriType.TalerWithdraw: