aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/RegisterOrLogin.svelte6
-rw-r--r--src/lib/store.js1
-rw-r--r--src/routes/[username]/receive/+page.svelte2
-rw-r--r--src/routes/[username]/receive/[network]/[amount]/+page.server.js0
-rw-r--r--src/routes/[username]/receive/[network]/[amount]/+page.svelte1
-rw-r--r--src/routes/invoice/+server.js20
-rw-r--r--src/routes/launch-party/+page.svelte1
-rw-r--r--src/routes/launch/+page.svelte42
-rw-r--r--src/routes/launch/purchase/+page.svelte79
-rw-r--r--src/routes/register/+page.server.js7
10 files changed, 146 insertions, 13 deletions
diff --git a/src/components/RegisterOrLogin.svelte b/src/components/RegisterOrLogin.svelte
index b615d42a..1ec73b64 100644
--- a/src/components/RegisterOrLogin.svelte
+++ b/src/components/RegisterOrLogin.svelte
@@ -1,7 +1,7 @@
<script>
import { Icon } from '$comp';
import { post, failure } from '$lib/utils';
- import { user, token } from '$lib/store';
+ import { redirect, user, token } from '$lib/store';
import { auth } from '$lib/socket';
import { goto } from '$app/navigation';
import { t } from '$lib/translations';
@@ -35,6 +35,10 @@
<h1 class="text-2xl font-bold text-center">{$t('login.' + pageID)}</h1>
<form class="space-y-5" {action} method="POST">
+ {#if $redirect}
+ <input type="hidden" name="redirect" value={$redirect} />
+ {/if}
+
<!-- {#if pageID === 'register'} -->
<!-- <div> -->
<!-- <label for="email" class="font-semibold">{$t('login.email')}</label> -->
diff --git a/src/lib/store.js b/src/lib/store.js
index 95494f52..e7228158 100644
--- a/src/lib/store.js
+++ b/src/lib/store.js
@@ -28,6 +28,7 @@ const persistLocal = (key, defaultValue) => {
};
export const rate = writable();
+export const redirect = writable();
export const rates = writable();
export const selectedRate = writable();
export const user = writable();
diff --git a/src/routes/[username]/receive/+page.svelte b/src/routes/[username]/receive/+page.svelte
index ba443ff2..f10e0426 100644
--- a/src/routes/[username]/receive/+page.svelte
+++ b/src/routes/[username]/receive/+page.svelte
@@ -75,7 +75,7 @@
let submit = async () => {
loading = true;
- let id = await post('/invoice', {
+ let { id } = await post('/invoice', {
amount,
rate: $selectedRate,
username: $page.params.username
diff --git a/src/routes/[username]/receive/[network]/[amount]/+page.server.js b/src/routes/[username]/receive/[network]/[amount]/+page.server.js
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/routes/[username]/receive/[network]/[amount]/+page.server.js
diff --git a/src/routes/[username]/receive/[network]/[amount]/+page.svelte b/src/routes/[username]/receive/[network]/[amount]/+page.svelte
new file mode 100644
index 00000000..45b983be
--- /dev/null
+++ b/src/routes/[username]/receive/[network]/[amount]/+page.svelte
@@ -0,0 +1 @@
+hi
diff --git a/src/routes/invoice/+server.js b/src/routes/invoice/+server.js
index 225f6bb1..d4c4c303 100644
--- a/src/routes/invoice/+server.js
+++ b/src/routes/invoice/+server.js
@@ -1,11 +1,17 @@
import { auth, get, post } from '$lib/utils';
-export async function POST({ request }) {
- let network = 'lightning';
- let { amount, currency, rate, tip, text, username } = await request.json();
- ({ text } = await post('/lightning/invoice', { amount }, auth(request)));
- let invoice = { amount, currency, network, rate, tip, text };
- let { uuid } = await post('/invoice', { invoice, user: { username } }, auth(request));
+export async function POST({ request, parent }) {
+ let { amount, currency, network = 'lightning', rate, tip, username } = await request.json();
+ let invoice = { amount, currency, network, rate, tip };
- return new Response(JSON.stringify(uuid), { headers: { 'content-type': 'application/json' } });
+ if (network === 'lightning') {
+ invoice.text = await post('/lightning/invoice', { amount }, auth(request));
+ } else {
+ invoice.address = (await parent()).user.address;
+ }
+
+ return new Response(
+ JSON.stringify(await post('/invoice', { invoice, user: { username } }, auth(request))),
+ { headers: { 'content-type': 'application/json' } }
+ );
}
diff --git a/src/routes/launch-party/+page.svelte b/src/routes/launch-party/+page.svelte
deleted file mode 100644
index 5c6e643a..00000000
--- a/src/routes/launch-party/+page.svelte
+++ /dev/null
@@ -1 +0,0 @@
-Launch party!
diff --git a/src/routes/launch/+page.svelte b/src/routes/launch/+page.svelte
new file mode 100644
index 00000000..98d9dba6
--- /dev/null
+++ b/src/routes/launch/+page.svelte
@@ -0,0 +1,42 @@
+<script>
+ import { redirect } from "$lib/store";
+
+ export let data;
+ let { user } = data;
+ $: link = user ? '/launch/purchase' : '/register';
+ $redirect = '/launch/purchase';
+</script>
+<div class="mx-auto h-screen flex items-center justify-center px-8">
+ <div class="flex flex-col w-full bg-white rounded shadow-lg sm:w-3/4 md:w-1/2 lg:w-3/5">
+ <img src="/images/ticket.webp" />
+ <div class="flex flex-col w-full md:flex-row">
+ <div
+ class="flex flex-row justify-around p-4 font-bold leading-none text-gray-800 uppercase bg-gray-400 rounded md:flex-col md:items-center md:justify-center md:w-1/4"
+ >
+ <div class="md:text-3xl">Oct</div>
+ <div class="md:text-6xl">5</div>
+ <div class="md:text-xl">6 pm</div>
+ </div>
+ <div class="p-4 font-normal text-gray-800 md:w-3/4">
+ <h1 class="mb-4 text-4xl font-bold leading-none tracking-tight text-gray-800">
+ Coinos Launch Party Ticket
+ </h1>
+ <p class="leading-normal mb-2">
+ Come join us at our launch party celebrating 10 years in business! We'll be introducing
+ our newly designed payments interface and afterwards we'll network and enjoy tasty food
+ and drinks from <a href="https://loftondenman.com/" class="underline">The Loft</a>!
+ </p>
+
+ <div class="flex w-full my-8">
+ <a href={link}>
+ <button
+ class="bg-white text-black border rounded-full px-8 py-4 font-bold hover:opacity-80 mx-auto text-2xl"
+ >
+ Purchase with Bitcoin {user.username}
+ </button>
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/src/routes/launch/purchase/+page.svelte b/src/routes/launch/purchase/+page.svelte
new file mode 100644
index 00000000..c6777349
--- /dev/null
+++ b/src/routes/launch/purchase/+page.svelte
@@ -0,0 +1,79 @@
+<script>
+ import { selectedRate } from '$lib/store';
+ import { post } from '$lib/utils';
+ export let data;
+
+ let amount = 35000;
+ let {
+ account: { address, balance },
+ address,
+ username
+ } = data.user;
+
+ let invoice;
+ let get = async (network) => {
+ invoice = await post('/invoice', {
+ amount,
+ address,
+ rate: $selectedRate,
+ network,
+ username
+ });
+ };
+
+ let lightning = () => get('lightning');
+ let bitcoin = () => get('bitcoin');
+
+ // if (balance < amount) throw redirect(307, `/${username}/fund/${amount - balance}`);
+</script>
+
+<div class="mx-auto h-screen flex items-center justify-center px-8">
+ <div class="flex w-full bg-white rounded shadow-lg">
+ <div class="p-4 font-normal text-gray-800 mx-auto mb-8">
+ {#if balance > amount}
+ <h1 class="mb-4 text-4xl font-bold leading-none tracking-tight text-gray-800 text-center">
+ Buy Your Launch Party Ticket?
+ </h1>
+
+ <div class="text-center text-4xl mb-12">{amount} sats</div>
+
+ <div class="w-full flex">
+ <button
+ class="bg-black text-white border rounded-full px-8 py-4 font-bold hover:opacity-80 mx-auto text-2xl"
+ >
+ Count me in
+ </button>
+ </div>
+ {:else}
+ <h1 class="mb-4 text-4xl font-bold leading-none tracking-tight text-gray-800 text-center">
+ Ticket Price
+ </h1>
+ <div class="text-center text-4xl mb-12">{amount} sats</div>
+
+ <h1 class="mb-4 text-4xl font-bold leading-none tracking-tight text-gray-800 text-center">
+ Your Balance
+ </h1>
+
+ <div class="text-center text-4xl mb-12">{balance} sats</div>
+
+ <h1 class="mb-4 text-4xl font-bold leading-none tracking-tight text-gray-800 text-center">
+ Funding Options
+ </h1>
+
+ <button
+ class="bg-black text-white border rounded-full px-8 py-4 font-bold hover:opacity-80 mx-auto text-2xl"
+ on:click={lightning}
+ >
+ Lightning
+ </button>
+
+ <button
+ class="bg-black text-white border rounded-full px-8 py-4 font-bold hover:opacity-80 mx-auto text-2xl"
+ on:click={bitcoin}
+ >
+ Bitcoin
+ </button>
+ {/if}
+ </div>
+ </div>
+</div>
diff --git a/src/routes/register/+page.server.js b/src/routes/register/+page.server.js
index abafe2de..2ff4af67 100644
--- a/src/routes/register/+page.server.js
+++ b/src/routes/register/+page.server.js
@@ -1,9 +1,10 @@
import { post, login } from '$lib/utils';
export async function POST({ request, setHeaders }) {
- let user = Object.fromEntries(await request.formData());
- await post('/register', { user });
+ let form = Object.fromEntries(await request.formData());
+ let { username, password, redirect } = form;
+ await post('/register', { user: { username, password }});
await login(user, setHeaders);
- return { location: `/${user.username}/dashboard` };
+ return { location: redirect || `/${user.username}/dashboard` };
}