From a31fb956ce2fbb8b07510d1e6c6815bdfeffe09f Mon Sep 17 00:00:00 2001 From: michael1011 Date: Tue, 7 Jan 2025 01:14:03 +0100 Subject: [PATCH] feat: show when no lockup can be found for refund --- e2e/refund/noLockup.png | Bin 0 -> 68697 bytes e2e/refund/refundFile.spec.ts | 23 +++++++ package-lock.json | 15 +++-- package.json | 1 + src/components/RefundButton.tsx | 110 ++++++++++++++++++-------------- src/i18n/i18n.ts | 5 ++ 6 files changed, 102 insertions(+), 52 deletions(-) create mode 100644 e2e/refund/noLockup.png create mode 100644 e2e/refund/refundFile.spec.ts diff --git a/e2e/refund/noLockup.png b/e2e/refund/noLockup.png new file mode 100644 index 0000000000000000000000000000000000000000..53c1aff3dddfa2eb9d03feb15bceaf0bb1eda66b GIT binary patch literal 68697 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 vJoo(V!i2xM{IdDKE { + test("should show that no lockup transaction can be found", async ({ + page, + }) => { + await page.goto("/"); + + await page.getByRole("link", { name: "Refund" }).click(); + await page.getByTestId("refundUpload").click(); + + await page + .getByTestId("refundUpload") + .setInputFiles(path.join(__dirname, "noLockup.png")); + + await expect( + page.getByRole("button", { name: dict.en.no_lockup_transaction }), + ).toBeVisible(); + }); +}); diff --git a/package-lock.json b/package-lock.json index 00504683..224015fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,6 +51,7 @@ "@testing-library/user-event": "^14.5.2", "@trivago/prettier-plugin-sort-imports": "^5.2.0", "@types/jest": "^29.5.14", + "@types/node": "^22.10.5", "@webbtc/webln-types": "^3.0.0", "babel-jest": "^29.7.0", "babel-plugin-transform-import-meta": "^2.2.1", @@ -6777,14 +6778,20 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", - "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", "license": "MIT", "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" + }, "node_modules/@types/offscreencanvas": { "version": "2019.7.3", "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", diff --git a/package.json b/package.json index e9d3487d..2ad356ed 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@testing-library/user-event": "^14.5.2", "@trivago/prettier-plugin-sort-imports": "^5.2.0", "@types/jest": "^29.5.14", + "@types/node": "^22.10.5", "@webbtc/webln-types": "^3.0.0", "babel-jest": "^29.7.0", "babel-plugin-transform-import-meta": "^2.2.1", diff --git a/src/components/RefundButton.tsx b/src/components/RefundButton.tsx index 6699159e..d6499802 100644 --- a/src/components/RefundButton.tsx +++ b/src/components/RefundButton.tsx @@ -5,11 +5,12 @@ import { Network as LiquidNetwork } from "liquidjs-lib/src/networks"; import log from "loglevel"; import { Accessor, + Match, Setter, Show, + Switch, createResource, createSignal, - onMount, } from "solid-js"; import { ChainSwap, SubmarineSwap } from "src/utils/swapCreator"; @@ -162,16 +163,11 @@ const RefundButton = (props: { const refundAction = async () => { setRefundRunning(true); - const transactionToRefund = await getLockupTransaction( - props.swap().id, - props.swap().type, - ); - try { const res = await refund( props.swap(), refundAddress(), - transactionToRefund, + lockupTransaction(), ); // save refundTx into swaps json and set it to the current swap @@ -202,9 +198,9 @@ const RefundButton = (props: { msg === "non-final" ) { msg = t("locktime_not_satisfied"); - setTimeoutEta(transactionToRefund.timeoutEta); + setTimeoutEta(lockupTransaction().timeoutEta); setTimeoutBlockheight( - transactionToRefund.timeoutBlockHeight, + lockupTransaction().timeoutBlockHeight, ); } log.error(msg); @@ -218,8 +214,10 @@ const RefundButton = (props: { setRefundRunning(false); }; - onMount(async () => { - if (!props.swap()) return; + const [lockupTransaction] = createResource(async () => { + if (!props.swap()) { + return undefined; + } const transactionToRefund = await getLockupTransaction( props.swap().id, @@ -231,6 +229,8 @@ const RefundButton = (props: { setTimeoutEta(transactionToRefund.timeoutEta); setTimeoutBlockheight(transactionToRefund.timeoutBlockHeight); } + + return transactionToRefund; }); const [preimageHash] = createResource(async () => { @@ -294,43 +294,57 @@ const RefundButton = (props: { }> - 0 || timeoutBlockheight() > 0}> - - -

- {props.swap() - ? t("refund_address_header", { - asset: props.swap()?.assetSend, - }) - : t("refund_address_header_no_asset")} -

- - setValid(refundAddressChange(e, props.swap()?.assetSend)) - } - type="text" - name="refundAddress" - placeholder={ - props.swap() - ? t("onchain_address", { - asset: props.swap()?.assetSend, - }) - : t("onchain_address_no_asset") - } - /> - + + + 0 || timeoutBlockheight() > 0}> + + +

+ {props.swap() + ? t("refund_address_header", { + asset: props.swap()?.assetSend, + }) + : t("refund_address_header_no_asset")} +

+ + setValid( + refundAddressChange(e, props.swap()?.assetSend), + ) + } + type="text" + name="refundAddress" + placeholder={ + props.swap() + ? t("onchain_address", { + asset: props.swap()?.assetSend, + }) + : t("onchain_address_no_asset") + } + /> + +
+ + + + + + +
); }; diff --git a/src/i18n/i18n.ts b/src/i18n/i18n.ts index 294c075b..b9bf78f9 100644 --- a/src/i18n/i18n.ts +++ b/src/i18n/i18n.ts @@ -227,6 +227,7 @@ const dict = { will_receive: "Will receive", refund_available_in: "Refund will be available in {{ blocks }} blocks", no_wallet_connected: "No wallet connected", + no_lockup_transaction: "No lockup transaction found", }, de: { language: "Deutsch", @@ -466,6 +467,7 @@ const dict = { will_receive: "Sie erhalten", refund_available_in: "Rückerstattung möglich in {{ blocks }} Blöcken", no_wallet_connected: "Kein Wallet verbunden", + no_lockup_transaction: "Keine Lockup-Transaktion gefunden", }, es: { language: "Español", @@ -701,6 +703,7 @@ const dict = { will_receive: "Recibirá", refund_available_in: "Reembolso disponible en {{ blocks }} bloques", no_wallet_connected: "No hay monedero conectado", + no_lockup_transaction: "No se encontró ninguna transacción de lockup", }, zh: { language: "中文", @@ -910,6 +913,7 @@ const dict = { will_receive: "将收到", refund_available_in: "退款将分 {{ blocks }} 区块提供", no_wallet_connected: "未连接钱包", + no_lockup_transaction: "未找到锁仓交易", }, ja: { language: "日本語", @@ -1144,6 +1148,7 @@ const dict = { will_receive: "受信予定", refund_available_in: "返金は {{ blocks }} つのブロックに分かれる", no_wallet_connected: "財布はつながっていない!", + no_lockup_transaction: "ロックアップトランザクションが見つかりません", }, };