diff options
| author | Adam Soltys <[email protected]> | 2022-09-24 13:34:37 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-09-25 21:34:59 -0700 |
| commit | 7bfd57b8b249fcf8ab87b52c8a4416d62f3cd1f6 (patch) | |
| tree | ed85daeb18785e450fc4cb2e67066809cd0a1956 /src | |
| parent | e0e4441cfa2b20c3f5f0126a5cf8aeddaed269b6 (diff) | |
| download | coinos-ui-7bfd57b8b249fcf8ab87b52c8a4416d62f3cd1f6.tar.gz coinos-ui-7bfd57b8b249fcf8ab87b52c8a4416d62f3cd1f6.zip | |
wip
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/RegisterOrLogin.svelte | 6 | ||||
| -rw-r--r-- | src/lib/store.js | 1 | ||||
| -rw-r--r-- | src/routes/[username]/receive/+page.svelte | 2 | ||||
| -rw-r--r-- | src/routes/[username]/receive/[network]/[amount]/+page.server.js | 0 | ||||
| -rw-r--r-- | src/routes/[username]/receive/[network]/[amount]/+page.svelte | 1 | ||||
| -rw-r--r-- | src/routes/invoice/+server.js | 20 | ||||
| -rw-r--r-- | src/routes/launch-party/+page.svelte | 1 | ||||
| -rw-r--r-- | src/routes/launch/+page.svelte | 42 | ||||
| -rw-r--r-- | src/routes/launch/purchase/+page.svelte | 79 | ||||
| -rw-r--r-- | src/routes/register/+page.server.js | 7 |
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` }; } |
