summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-webextension/src/wallet
diff options
context:
space:
mode:
authorSebastian <sebasjm@gmail.com>2024-03-06 11:07:42 -0300
committerSebastian <sebasjm@gmail.com>2024-03-06 11:07:42 -0300
commite89d2098041d265131915c4e006a51478ff664bb (patch)
tree45c4433147eb989efce148a8d9c00b541872cbe3 /packages/taler-wallet-webextension/src/wallet
parent541886750eb1bc32b9aa0323868dd24776baf0eb (diff)
downloadwallet-core-e89d2098041d265131915c4e006a51478ff664bb.tar.gz
wallet-core-e89d2098041d265131915c4e006a51478ff664bb.tar.bz2
wallet-core-e89d2098041d265131915c4e006a51478ff664bb.zip
fix #8564
Diffstat (limited to 'packages/taler-wallet-webextension/src/wallet')
-rw-r--r--packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts71
-rw-r--r--packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts6
2 files changed, 43 insertions, 34 deletions
diff --git a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts
index e6d46a626..75b8e53c0 100644
--- a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/state.ts
@@ -99,42 +99,45 @@ function useUrlState<T>(
}
const constHref = href;
- useDebounceEffect(
- 500,
- constHref == undefined
- ? undefined
- : async () => {
- const req = await fetch(constHref).catch((e) => {
- return setState({
- status: "network-error",
- href: constHref,
- });
- });
- if (!req) return;
+ async function checkURL() {
+ if (!constHref) {
+ return;
+ }
+ const req = await fetch(constHref).catch((e) => {
+ return setState({
+ status: "network-error",
+ href: constHref,
+ });
+ });
+ if (!req) return;
+
+ if (req.status >= 400 && req.status < 500) {
+ setState({
+ status: "client-error",
+ code: req.status,
+ });
+ return;
+ }
+ if (req.status > 500) {
+ setState({
+ status: "server-error",
+ code: req.status,
+ });
+ return;
+ }
- if (req.status >= 400 && req.status < 500) {
- setState({
- status: "client-error",
- code: req.status,
- });
- return;
- }
- if (req.status > 500) {
- setState({
- status: "server-error",
- code: req.status,
- });
- return;
- }
+ const json = await req.json();
+ try {
+ const result = codec.decode(json);
+ setState({ status: "ok", result });
+ } catch (e: any) {
+ setState({ status: "parsing-error", json });
+ }
+ }
- const json = await req.json();
- try {
- const result = codec.decode(json);
- setState({ status: "ok", result });
- } catch (e: any) {
- setState({ status: "parsing-error", json });
- }
- },
+ useDebounceEffect(
+ 500,
+ constHref == undefined ? undefined : checkURL,
[host, path],
);
diff --git a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
index 598ca9369..66f64d82e 100644
--- a/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
+++ b/packages/taler-wallet-webextension/src/wallet/AddBackupProvider/test.ts
@@ -45,6 +45,12 @@ describe("AddBackupProvider states", () => {
expect(state.name.value).eq("");
expect(state.url.value).eq("");
},
+ (state) => {
+ expect(state.status).equal("select-provider");
+ if (state.status !== "select-provider") return;
+ expect(state.name.value).eq("");
+ expect(state.url.value).eq("");
+ },
],
TestingContext,
);