diff options
| author | Adam Soltys <[email protected]> | 2023-01-22 21:03:57 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2023-01-22 21:03:57 -0800 |
| commit | 29ed3a4366eb9719d32dac390764bf119c40afff (patch) | |
| tree | 89217b59e723ea8b08a12fdac1caa5c63844fa2f | |
| parent | 681e307d00e38ee9bc336e547660f56e71b646c6 (diff) | |
| download | coinos-ui-29ed3a4366eb9719d32dac390764bf119c40afff.tar.gz coinos-ui-29ed3a4366eb9719d32dac390764bf119c40afff.zip | |
rename txns
| -rw-r--r-- | src/lib/socket.js | 6 | ||||
| -rw-r--r-- | src/lib/store.js | 28 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/payments/[...page]/+page.svelte | 51 | ||||
| -rw-r--r-- | src/routes/(app)/payment/[id]/+page.server.js (renamed from src/routes/(app)/tx/[id]/+page.server.js) | 0 | ||||
| -rw-r--r-- | src/routes/(app)/payment/[id]/+page.svelte (renamed from src/routes/(app)/tx/[id]/+page.svelte) | 6 | ||||
| -rw-r--r-- | src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js | 5 | ||||
| -rw-r--r-- | src/routes/(app)/send/lightning/[payreq]/+page.server.js | 3 | ||||
| -rw-r--r-- | src/routes/(app)/send/lightning/[payreq]/+page.svelte | 14 |
8 files changed, 64 insertions, 49 deletions
diff --git a/src/lib/socket.js b/src/lib/socket.js index 86083974..4044d2a2 100644 --- a/src/lib/socket.js +++ b/src/lib/socket.js @@ -6,7 +6,7 @@ import { newPayment, last, rate, - txns, + payments, user } from '$lib/store'; import { success, sat } from '$lib/utils'; @@ -60,9 +60,9 @@ export const messages = (data) => ({ let { amount, invoice } = data; invalidate('app:invoice'); - let payments = get(txns); + let payments = get(payments); let i = payments.findIndex((p) => p.id === data.id); - if (~i) (payments[i] = data), txns.set(payments); + if (~i) (payments[i] = data), payments.set(payments); else newPayment.set(true); invalidate((url) => url.pathname === '/payments'); diff --git a/src/lib/store.js b/src/lib/store.js index e4d017b8..5d83a74c 100644 --- a/src/lib/store.js +++ b/src/lib/store.js @@ -32,22 +32,22 @@ const persistLocal = (key, defaultValue) => { return s; }; -export const requestRedirect = writable(); -export const loginRedirect = writable(); -export const rate = writable(); -export const user = writable(); -export const selectedRate = writable(); -export const token = persistSession('token'); -export const newPayment = persistLocal('newPayment'); -export const colorTheme = writable('from-primary to-gradient'); export const avatarUpload = writable(); export const bannerUpload = writable(); -export const pin = persistSession('pin', undefined); -export const last = writable(); -export const request = writable(); -export const invoice = writable(); -export const txns = persistLocal('transactions', []); +export const colorTheme = writable('from-primary to-gradient'); export const events = writable({}); +export const invoice = writable(); +export const last = writable(); +export const loginRedirect = writable(); +export const messages = persistLocal('messages', {}); +export const newPayment = persistLocal('newPayment'); export const password = persistLocal('password'); export const passwordPrompt = writable(); -export const messages = persistLocal('messages', {}); +export const payments = persistLocal('transactions', []); +export const pin = persistSession('pin', undefined); +export const rate = writable(); +export const request = writable(); +export const requestRedirect = writable(); +export const selectedRate = writable(); +export const token = persistSession('token'); +export const user = writable(); diff --git a/src/routes/(app)/[username]/payments/[...page]/+page.svelte b/src/routes/(app)/[username]/payments/[...page]/+page.svelte index 24f7cf6e..e28ade67 100644 --- a/src/routes/(app)/[username]/payments/[...page]/+page.svelte +++ b/src/routes/(app)/[username]/payments/[...page]/+page.svelte @@ -2,7 +2,7 @@ import { Avatar, Icon } from '$comp'; import { onMount } from 'svelte'; import { format, parseISO } from 'date-fns'; - import { newPayment, txns } from '$lib/store'; + import { newPayment, payments } from '$lib/store'; import { t } from '$lib/translations'; import { f, s, sat, sats } from '$lib/utils'; import { page } from '$app/stores'; @@ -20,10 +20,10 @@ let { start, end, user } = data; let change = ({ target: { value } }) => goto(value); - let link = (tx) => { - if (tx.redeemcode) return `/voucher/${tx.redeemcode}`; - if (tx.with) return '/' + tx.with.username; - return `/tx/${tx.hash}`; + let link = (p) => { + if (p.pot) return `/pot/${p.pot}`; + if (p.with) return '/' + p.with.username; + return `/p/${p.id}`; }; let presets = [ @@ -39,9 +39,8 @@ let p, total, - payments = [], pages = []; - $: data && ({ page: p, pages, start, end, total, payments: $txns } = data); + $: data && ({ page: p, pages, start, end, total, payments: $payments } = data); $: $page && ($newPayment = false); $: $newPayment && invalidate(`/users/${user.username}`); @@ -55,7 +54,7 @@ const csv = keys.map((k) => `"${k}"`).join(',') + '\n' + - $txns.map((r) => keys.map((k) => `"${r[k]}"`).join(',')).join('\n'); + $payments.map((r) => keys.map((k) => `"${r[k]}"`).join(',')).join('\n'); const filename = 'payments.csv'; let blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); @@ -112,34 +111,34 @@ </div> <div class="text-base"> - {#each $txns as tx} - <a href={link(tx)}> + {#each $payments as p} + <a href={`/payment/${p.id}`}> <div class="grid grid-cols-3 border-b h-24 hover:bg-gray-100 px-4"> <div class="whitespace-nowrap my-auto"> <div class="font-bold"> - {f(tx.amount * (tx.rate / sats), tx.currency)} + {f(p.amount * (p.rate / sats), p.currency)} - {#if tx.tip} + {#if p.tip} <span class="text-sm"> - +{f(tx.tip * (tx.rate / sats), tx.currency)} + +{f(p.tip * (p.rate / sats), p.currency)} </span> {/if} </div> <div class="text-secondary"> - {sat(tx.amount)} + {sat(p.amount)} - {#if tx.tip} + {#if p.tip} <span class="text-sm"> - +{sat(tx.tip)} + +{sat(p.tip)} </span> {/if} </div> </div> <div class="flex my-auto"> - {#if tx.type === types.pot} - <a href={`/pot/${tx.pot}`}> + {#if p.type === types.pot} + <a href={`/pot/${p.pot}`}> <div class="text-secondary flex"> <div class="my-auto mr-1"> <img src="/icons/logo-symbol.svg" class="w-12 border-4 border-transparent" /> @@ -148,18 +147,18 @@ <div class="my-auto">Pot</div> </div> </a> - {:else if tx.type === types.internal} - <a href={`/${tx.with.username}`}> + {:else if p.type === types.internal} + <a href={`/${p.with.username}`}> <div class="flex"> <div class="my-auto"> - <Avatar user={tx.with} size={12} /> + <Avatar user={p.with} size={12} /> </div> - <div class="my-auto ml-1 text-secondary">{tx.with.username}</div> + <div class="my-auto ml-1 text-secondary">{p.with.username}</div> </div> </a> {:else} <div class="text-secondary flex"> - {#if tx.type === 'lightning'} + {#if p.type === types.lightning} <div class="text-3xl">⚡️</div> {:else} <div class="my-auto mr-1"> @@ -168,7 +167,7 @@ {/if} <div class="my-auto"> - {tx.amount > 0 ? (tx.confirmed ? 'Received' : 'Pending') : 'Sent'} + {p.amount > 0 ? (p.confirmed ? 'Received' : 'Pending') : 'Sent'} </div> </div> {/if} @@ -176,10 +175,10 @@ <div class="text-secondary text-right text-sm my-auto"> <div> - {format(new Date(tx.created), 'h:mm aaa')} + {format(new Date(p.created), 'h:mm aaa')} </div> <div> - {format(new Date(tx.created), 'MMM d')} + {format(new Date(p.created), 'MMM d')} </div> </div> </div> diff --git a/src/routes/(app)/tx/[id]/+page.server.js b/src/routes/(app)/payment/[id]/+page.server.js index cbd7355e..cbd7355e 100644 --- a/src/routes/(app)/tx/[id]/+page.server.js +++ b/src/routes/(app)/payment/[id]/+page.server.js diff --git a/src/routes/(app)/tx/[id]/+page.svelte b/src/routes/(app)/payment/[id]/+page.svelte index a2bb1459..9c0afaac 100644 --- a/src/routes/(app)/tx/[id]/+page.svelte +++ b/src/routes/(app)/payment/[id]/+page.svelte @@ -8,7 +8,7 @@ export let data; let { user, tx } = data; let { username } = user; - let { amount, hash, created, rate, type, preimage, fee, currency } = tx; + let { id, amount, hash, created, rate, type, preimage, fee, currency } = tx; fee = fee || 0; let fiat = (Math.abs(amount) * rate) / sats; @@ -51,9 +51,9 @@ <div class="font-bold">{$t('payments.id')}</div> <div class="flex"> <div> - <a href={`${expl}/tx/${hash}`} target="_blank" class="text-blue-600">{hash}</a> + <a href={`${expl}/tx/${id}`} target="_blank" class="text-blue-600">{id}</a> </div> - <button class="flex font-bold hover:opacity-80 mb-auto" on:click={() => copy(hash)} + <button class="flex font-bold hover:opacity-80 mb-auto" on:click={() => copy(id)} ><Icon icon="copy" style="mr-1" /> </button> </div> diff --git a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js b/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js index 642593ab..066043e7 100644 --- a/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js +++ b/src/routes/(app)/send/bitcoin/[address]/[...amount]/+page.server.js @@ -4,9 +4,10 @@ import { auth, post } from '$lib/utils'; export const actions = { default: async ({ cookies, request }) => { try { + let feeRate, subtract; let { address, amount, pin } = Object.fromEntries(await request.formData()); - let { tx } = await post('/bitcoin/fee', { address, amount }, auth(cookies)); - await post('/bitcoin/send', { address, pin, tx }, auth(cookies)); + let { tx } = await post('/bitcoin/fee', { address, amount, feeRate, subtract }, auth(cookies)); + await post('/bitcoin/send', { pin, tx }, auth(cookies)); } catch (e) { return invalid(400, { message: e.message }); } diff --git a/src/routes/(app)/send/lightning/[payreq]/+page.server.js b/src/routes/(app)/send/lightning/[payreq]/+page.server.js index 2ae693aa..a72e1c07 100644 --- a/src/routes/(app)/send/lightning/[payreq]/+page.server.js +++ b/src/routes/(app)/send/lightning/[payreq]/+page.server.js @@ -9,11 +9,14 @@ export const actions = { setAmount: async ({ cookies, request }) => { return Object.fromEntries(await request.formData()); }, + send: async ({ cookies, request }) => { try { let body = Object.fromEntries(await request.formData()); let { amount, confirmed } = body; + console.log("AMOUNT", amount); + if (!confirmed) { return invalid(403, { amount, confirm: true }); } diff --git a/src/routes/(app)/send/lightning/[payreq]/+page.svelte b/src/routes/(app)/send/lightning/[payreq]/+page.svelte index 6fff5665..76ab432f 100644 --- a/src/routes/(app)/send/lightning/[payreq]/+page.svelte +++ b/src/routes/(app)/send/lightning/[payreq]/+page.svelte @@ -15,6 +15,7 @@ let { currency } = data.user; let amount = form?.amount || data.amount; let a; + let maxfee = 100; let loading; let submit = () => (loading = true); @@ -46,12 +47,23 @@ <p class="text-6xl break-words">{alias}</p> </div> - <form method="POST" use:enhance on:submit={submit} action="?/send"> + <form method="POST" use:enhance on:submit={submit} action="?/send" class="space-y-5"> <input name="payreq" value={payreq} type="hidden" /> <input name="amount" value={amount} type="hidden" /> <input name="confirmed" value={form?.confirm} type="hidden" /> <input name="pin" value={$pin} type="hidden" /> + <div class="relative w-96 mx-auto"> + <label>Max fee</label> + <input name="maxfee" value={maxfee} /> + + <div + class="absolute right-[2px] top-[25px] text-gray-600 rounded-r-2xl p-4 h-[54px] my-auto border-l " + > + sats + </div> + </div> + <div class="flex w-full"> <button type="submit" |
