aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts')
-rw-r--r--packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts29
1 files changed, 24 insertions, 5 deletions
diff --git a/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts b/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts
index 449cb698f..74d7cbbd9 100644
--- a/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts
+++ b/packages/taler-wallet-webextension/src/hooks/useTalerActionURL.ts
@@ -17,20 +17,39 @@
import { useEffect, useState } from "preact/hooks";
import { useIocContext } from "../context/iocContext.js";
+export interface UriLocation {
+ uri: string;
+ location: "clipboard" | "activeTab"
+}
+
export function useTalerActionURL(): [
- string | undefined,
+ UriLocation | undefined,
(s: boolean) => void,
] {
- const [talerActionUrl, setTalerActionUrl] = useState<string | undefined>(
+ const [talerActionUrl, setTalerActionUrl] = useState<UriLocation | undefined>(
undefined,
);
const [dismissed, setDismissed] = useState(false);
- const { findTalerUriInActiveTab } = useIocContext();
+ const { findTalerUriInActiveTab, findTalerUriInClipboard } = useIocContext();
useEffect(() => {
async function check(): Promise<void> {
- const talerUri = await findTalerUriInActiveTab();
- setTalerActionUrl(talerUri);
+ const clipUri = await findTalerUriInClipboard();
+ if (clipUri) {
+ setTalerActionUrl({
+ location: "clipboard",
+ uri: clipUri
+ });
+ return;
+ }
+ const tabUri = await findTalerUriInActiveTab();
+ if (tabUri) {
+ setTalerActionUrl({
+ location: "activeTab",
+ uri: tabUri
+ });
+ return;
+ }
}
check();
});