aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2022-09-30 15:52:10 -0700
committerAdam Soltys <[email protected]>2022-09-30 15:52:27 -0700
commit63e3eaaa7bf3ba43b95927c1421b0b13cb5816b3 (patch)
treeca8b4e6a04b4b977379f3b147c2eccc23de04fb6 /src/routes
parent6bc16274bd37759c060d18e39f8caee373b09dd2 (diff)
downloadcoinos-ui-63e3eaaa7bf3ba43b95927c1421b0b13cb5816b3.tar.gz
coinos-ui-63e3eaaa7bf3ba43b95927c1421b0b13cb5816b3.zip
sent payment confirmation
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/+layout.server.js3
-rw-r--r--src/routes/[username]/transactions/[...page]/+page.svelte6
-rw-r--r--src/routes/invoice/+server.js6
-rw-r--r--src/routes/invoice/[id]/+page.svelte2
-rw-r--r--src/routes/logout/+page.server.js1
-rw-r--r--src/routes/send/bitcoin/[address]/+page.server.js9
-rw-r--r--src/routes/sent/+page.svelte38
7 files changed, 50 insertions, 15 deletions
diff --git a/src/routes/+layout.server.js b/src/routes/+layout.server.js
index 3ebf8be2..ea3ccfdb 100644
--- a/src/routes/+layout.server.js
+++ b/src/routes/+layout.server.js
@@ -2,8 +2,9 @@ import { error, redirect } from '@sveltejs/kit';
import cookie from 'cookie';
import { protectedRoutes } from '$lib/utils';
import { get, post, auth } from '$lib/utils';
+import { env } from '$env/dynamic/public';
-const btc = import.meta.env.VITE_BTC;
+export const { PUBLIC_BTC: btc } = env;
export async function load({ request, setHeaders, url, params }) {
let { token } = cookie.parse(request.headers.get('cookie') || '');
diff --git a/src/routes/[username]/transactions/[...page]/+page.svelte b/src/routes/[username]/transactions/[...page]/+page.svelte
index 3042e574..a3e6850a 100644
--- a/src/routes/[username]/transactions/[...page]/+page.svelte
+++ b/src/routes/[username]/transactions/[...page]/+page.svelte
@@ -27,7 +27,7 @@
{#if pages.length > 1}
{#each pages as _, i}
<a href={`/${user.username}/transactions/${i + 1}`} class:active={page === i + 1}>
- <div class="border py-2 px-4 border-r-0 last:border-r hover:opacity-80">
+ <div class="border py-2 px-4 rounded-full border-2 w-12 h-12 hover:opacity-80 mr-1 text-center my-auto">
{i + 1}
</div>
</a>
@@ -75,7 +75,7 @@
</div>
<style>
- .active {
- @apply font-bold;
+ .active div {
+ @apply bg-gray-100;
}
</style>
diff --git a/src/routes/invoice/+server.js b/src/routes/invoice/+server.js
index 759c9315..9b96b114 100644
--- a/src/routes/invoice/+server.js
+++ b/src/routes/invoice/+server.js
@@ -4,12 +4,6 @@ export async function POST({ request, parent }) {
let { amount, currency, network = 'lightning', prompt, rate, tip, user } = await request.json();
let invoice = { amount, currency, network, prompt, rate, tip };
- if (network === 'lightning') {
- invoice.text = (await post('/lightning/invoice', { amount }, auth(request))).text;
- } else {
- invoice.address = (await get('/address?network=bitcoin&type=bech32')).address;
- }
-
return new Response(JSON.stringify(await post('/invoice', { invoice, user }, auth(request))), {
headers: { 'content-type': 'application/json' }
});
diff --git a/src/routes/invoice/[id]/+page.svelte b/src/routes/invoice/[id]/+page.svelte
index 094f698e..7ff63862 100644
--- a/src/routes/invoice/[id]/+page.svelte
+++ b/src/routes/invoice/[id]/+page.svelte
@@ -45,7 +45,7 @@
$: tip = Math.round((amount / 100) * tipPercent);
$invoices[id] = { amount, id, rate, received, text, tip, username };
- $: $invoices[id]?.received && goto(`/invoice/${id}/paid`);
+ $: $invoices[id]?.received >= $invoices[id]?.amount && goto(`/invoice/${id}/paid`);
$: amountFiat = parseFloat(((amount * rate) / sats).toFixed(2));
diff --git a/src/routes/logout/+page.server.js b/src/routes/logout/+page.server.js
index 726094fd..01ddc1aa 100644
--- a/src/routes/logout/+page.server.js
+++ b/src/routes/logout/+page.server.js
@@ -8,7 +8,6 @@ const opts = {
};
export async function load({ cookies }) {
- console.log('COOKIES', cookies);
cookies.set('set-cookie', [
cookies.serialize('token', '', {
...opts,
diff --git a/src/routes/send/bitcoin/[address]/+page.server.js b/src/routes/send/bitcoin/[address]/+page.server.js
index fa440394..4cc3736d 100644
--- a/src/routes/send/bitcoin/[address]/+page.server.js
+++ b/src/routes/send/bitcoin/[address]/+page.server.js
@@ -1,8 +1,11 @@
import { redirect } from '@sveltejs/kit';
+import { btc as asset, auth, post } from '$lib/utils';
+
export const actions = {
default: async ({ request }) => {
- let form = Object.fromEntries(await request.formData());
- console.log('send bitcoin', form);
- throw redirect(307, '/');
+ let { address, amount } = Object.fromEntries(await request.formData());
+ let { tx } = await post('/bitcoin/fee', { address, amount, asset }, auth(request));
+ await post('/bitcoin/send', { address, tx }, auth(request));
+ throw redirect(307, '/sent');
}
};
diff --git a/src/routes/sent/+page.svelte b/src/routes/sent/+page.svelte
new file mode 100644
index 00000000..6e4cb539
--- /dev/null
+++ b/src/routes/sent/+page.svelte
@@ -0,0 +1,38 @@
+<script>
+ import { toast } from '@zerodevx/svelte-toast';
+ import { browser } from '$app/environment';
+ import { t } from '$lib/translations';
+ import { LottiePlayer } from '@lottiefiles/svelte-lottie-player';
+ import { goto } from '$app/navigation';
+
+ export let data;
+ let { user } = data;
+
+ toast.pop(0);
+
+ const done = () => {
+ goto(`/${user.username}/transactions`);
+ };
+</script>
+
+<div class="text-center mt-20 md:mt-0">
+ {#if browser}
+ <div class="w-full mx-auto max-w-xl">
+ <LottiePlayer
+ src="/lottie/success.json"
+ autoplay={true}
+ loop={true}
+ controls={false}
+ renderer="svg"
+ background="transparent"
+ />
+ </div>
+ {/if}
+ <h1 class="text-3xl md:text-4xl font-bold mb-6">{$t('invoice.paymentSuccessful')}</h1>
+ <button
+ class="bg-black text-white rounded-2xl w-20 py-3 font-bold hover:opacity-80"
+ on:click={done}
+ >
+ {$t('invoice.done')}
+ </button>
+</div>