diff options
| author | Adam Soltys <[email protected]> | 2024-01-29 15:19:38 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-01-29 15:19:38 -0800 |
| commit | b54d3afc6465acd5e518a8b4970be1ab75b361b1 (patch) | |
| tree | c2ab7a8d91140ec6a60bd2b76e25c68a0355ee38 /src/routes | |
| parent | a7dd56863aada46964a4277f0a5940de68c332b5 (diff) | |
| download | coinos-ui-b54d3afc6465acd5e518a8b4970be1ab75b361b1.tar.gz coinos-ui-b54d3afc6465acd5e518a8b4970be1ab75b361b1.zip | |
autowithdrawals
Diffstat (limited to 'src/routes')
5 files changed, 163 insertions, 12 deletions
diff --git a/src/routes/(app)/[username]/settings/[...tab]/+page.server.js b/src/routes/(app)/[username]/settings/[...tab]/+page.server.js index 8b44f452..23d2ba9b 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/+page.server.js +++ b/src/routes/(app)/[username]/settings/[...tab]/+page.server.js @@ -16,8 +16,10 @@ export const actions = { form.notify = form.notify === "on"; form.nip5 = form.nip5 === "on"; form.prompt = form.prompt === "on"; + form.autowithdraw = form.autowithdraw === "on"; } + console.log("FORM", form.reserve) let user = { ...(await get("/me", auth(cookies))), ...form }; try { diff --git a/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte index 4fd61918..4eca2979 100644 --- a/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte +++ b/src/routes/(app)/[username]/settings/[...tab]/_pos.svelte @@ -1,5 +1,7 @@ <script> + import { tick } from "svelte"; import Icon from "$comp/Icon.svelte"; + import Numpad from "$comp/Numpad.svelte"; import LocaleSelector from "$comp/LocaleSelector.svelte"; import Toggle from "$comp/Toggle.svelte"; import { locale, t } from "$lib/translations"; @@ -8,8 +10,34 @@ export let user, rates, submit; + let { currency } = user; + let rate = rates[currency]; + let fiats = Object.keys(rates); - $: user.language = $locale + $: user.language = $locale; + let keypress = (e) => e.key === "Enter" && (e.preventDefault() || el.click()); + + let editingReserve, editingThreshold, doneReserve, doneThreshold; + let doneEditing = () => { + editingReserve = false; + editingThreshold = false; + }; + + let editReserve = async () => { + editingReserve = true; + await tick(); + reserveEl.focus(); + }; + + let editThreshold = async () => { + editingThreshold = true; + await tick(); + thresholdEl.focus(); + }; + + if (!user.threshold) user.threshold = 1000000; + if (!user.reserve) user.reserve = 100000; + let reserveEl, thresholdEl; </script> <div> @@ -66,6 +94,126 @@ </p> </div> +<div> + <div class="flex justify-between items-center"> + <span class="font-bold">{$t("user.settings.autoWithdraw")}</span> + <Toggle id="autowithdraw" bind:value={user.autowithdraw} /> + </div> + <p class="text-secondary mt-1 w-9/12"> + {$t("user.settings.autoWithdrawDescription")} + </p> +</div> + +{#if user.autowithdraw} + <div class="mb-2"> + <label for="display" class="font-bold mb-1 block" + >{$t("user.settings.destination")}</label + > + <textarea + name="destination" + placeholder={$t("user.settings.destinationPlaceholder")} + on:keypress={keypress} + class="w-full p-4 border rounded-xl h-48" + bind:value={user.destination} + /> + </div> + + <div> + <label for="display" class="font-bold mb-1 block" + >{$t("user.settings.threshold")}</label + > + <button type="button" class="flex w-full" on:click={editThreshold}> + <div class="p-4 border rounded-2xl rounded-r-none border-r-0 bg-primary"> + ⚡️ + </div> + <div + class="border-l-0 rounded-l-none pl-2 w-full p-4 border rounded-2xl text-left" + >{user.threshold}</div> + <input type="hidden" name="reserve" bind:value={user.reserve} /> + </button> + <p class="text-secondary mt-1"> + {$t("user.settings.thresholdDesc")} + </p> + </div> + + <div> + <label for="display" class="font-bold mb-1 block" + >{$t("user.settings.reserve")}</label + > + <button type="button" class="flex w-full" on:click={editReserve}> + <div class="p-4 border rounded-2xl rounded-r-none border-r-0 bg-primary"> + ⚡️ + </div> + <div + class="border-l-0 rounded-l-none pl-2 w-full p-4 border rounded-2xl text-left" + > + {user.reserve} + </div> + <input type="hidden" name="reserve" bind:value={user.reserve} /> + </button> + <p class="text-secondary mt-1"> + {$t("user.settings.reserveDesc")} + </p> + </div> +{/if} + +{#if editingThreshold} + <div + class="fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full z-50" + > + <div + class="relative top-40 mx-auto p-5 border shadow-lg rounded-md bg-white space-y-5 w-lg max-w-lg" + > + <h1 class="text-center text-2xl font-semibold"> + {$t("user.settings.threshold")} + </h1> + <Numpad + bind:amount={user.threshold} + bind:currency + bind:rate + bind:submit={doneReserve} + bind:element={thresholdEl} + /> + + <button + bind:this={doneReserve} + type="button" + on:click={doneEditing} + class="p-4 bg-black text-white rounded-2xl text-lg font-semibold w-full" + >Ok</button + > + </div> + </div> +{/if} + +{#if editingReserve} + <div + class="fixed inset-0 bg-gray-600 bg-opacity-50 overflow-y-auto h-full w-full z-50" + > + <div + class="relative top-40 mx-auto p-5 border shadow-lg rounded-md bg-white space-y-5 w-lg max-w-lg text-center" + > + <h1 class="text-2xl font-semibold"> + {$t("user.settings.reserve")} + </h1> + <Numpad + bind:amount={user.reserve} + bind:currency + bind:rate + bind:submit={doneReserve} + bind:element={reserveEl} + /> + <button + bind:this={doneReserve} + type="button" + on:click={doneEditing} + class="p-4 bg-black text-white rounded-2xl text-lg font-semibold w-full" + >Ok</button + > + </div> + </div> +{/if} + <a href="./shopify"> <button type="button" diff --git a/src/routes/(app)/send/[...text]/+page.svelte b/src/routes/(app)/send/[...text]/+page.svelte index 41b58bfb..489650a5 100644 --- a/src/routes/(app)/send/[...text]/+page.svelte +++ b/src/routes/(app)/send/[...text]/+page.svelte @@ -9,7 +9,7 @@ import Avatar from "$comp/Avatar.svelte"; import Icon from "$comp/Icon.svelte"; import Spinner from "$comp/Spinner.svelte"; - import { back, fail } from "$lib/utils"; + import { back, fail, focus } from "$lib/utils"; export let data; export let form; @@ -18,10 +18,9 @@ let { contacts } = data; let w; - let el, textarea, text; - let placeholder = $t("user.send.placeholder"); + let el, text; + - $: $page && setTimeout(() => w > 800 && textarea?.focus(), 0); let keypress = (e) => e.key === "Enter" && (e.preventDefault() || el.click()); let paste = async () => { @@ -48,12 +47,12 @@ <div class="mb-2"> <textarea + use:focus name="text" - {placeholder} + placeholder={$t("user.send.placeholder")} on:keypress={keypress} class="w-full p-4 border rounded-xl h-48" bind:value={text} - bind:this={textarea} /> </div> diff --git a/src/routes/(app)/send/invoice/[id]/+page.server.js b/src/routes/(app)/send/invoice/[id]/+page.server.js index 88017362..c6b0a9a4 100644 --- a/src/routes/(app)/send/invoice/[id]/+page.server.js +++ b/src/routes/(app)/send/invoice/[id]/+page.server.js @@ -41,6 +41,7 @@ export const actions = { await post("/payments", body, auth(cookies)); } catch (e) { + console.log("payment failed", params, e); return fail(400, { message: e.message }); } diff --git a/src/routes/(app)/send/invoice/[id]/+page.svelte b/src/routes/(app)/send/invoice/[id]/+page.svelte index e857f717..dd637d70 100644 --- a/src/routes/(app)/send/invoice/[id]/+page.svelte +++ b/src/routes/(app)/send/invoice/[id]/+page.svelte @@ -35,8 +35,8 @@ amountFiat = af; }; - let loading; - let submit = () => (loading = true); + let submitting; + let submit = () => (submitting = true); let external = async () => { let invoice = { type: "lightning", amount, currency }; @@ -52,8 +52,8 @@ $: update(form); let update = () => { - if (form?.message.includes("pin")) $pin = undefined; - loading = false; + if (form?.message?.includes("pin")) $pin = undefined; + submitting = false; }; // onMount(async () => { @@ -152,8 +152,9 @@ use:focus type="submit" class="opacity-100 hover:opacity-80'} rounded-2xl border py-3 font-bold mx-auto mt-2 bg-black text-white px-4 w-24" + disabled={submitting} > - {#if loading} + {#if submitting} <Spinner /> {:else} {$t("payments.send")} |
