diff options
| author | Adam Soltys <[email protected]> | 2022-10-18 21:03:27 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2022-10-18 21:03:27 -0700 |
| commit | ad24f34434368d3767fd147d80d45adc3c28f106 (patch) | |
| tree | f98eea88a95a2c1fbe79283cfa3f77e4ff737449 /src | |
| parent | 02af363d2f0d552a72dc1c90bf8d785e04465d3a (diff) | |
| download | coinos-ui-ad24f34434368d3767fd147d80d45adc3c28f106.tar.gz coinos-ui-ad24f34434368d3767fd147d80d45adc3c28f106.zip | |
tickets wip
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/socket.js | 3 | ||||
| -rw-r--r-- | src/lib/store.js | 1 | ||||
| -rw-r--r-- | src/routes/invoice/[id]/+page.svelte | 5 | ||||
| -rw-r--r-- | src/routes/invoice/[id]/paid/+page.svelte | 2 | ||||
| -rw-r--r-- | src/routes/launch/+page.svelte | 33 | ||||
| -rw-r--r-- | src/routes/launch/purchase/+page.server.js | 19 | ||||
| -rw-r--r-- | src/routes/launch/purchase/+page.svelte | 28 | ||||
| -rw-r--r-- | src/routes/launch/ticket/+page.server.js | 9 | ||||
| -rw-r--r-- | src/routes/launch/ticket/+page.svelte | 32 |
9 files changed, 86 insertions, 46 deletions
diff --git a/src/lib/socket.js b/src/lib/socket.js index fb77333f..b385db9d 100644 --- a/src/lib/socket.js +++ b/src/lib/socket.js @@ -19,13 +19,14 @@ export const messages = (data) => ({ rate.set(data); }, - payment() { + async payment() { let { amount, invoice } = data; if (get(user).account_id !== data.account_id) return; if (invoice) { invoices.set({ ...get(invoices), [invoice.uuid]: invoice }); } + newPayment.set(true); if (amount > 0) { success(`Received ${amount} sats!`); diff --git a/src/lib/store.js b/src/lib/store.js index ffafa70b..e317ed24 100644 --- a/src/lib/store.js +++ b/src/lib/store.js @@ -27,7 +27,6 @@ const persistLocal = (key, defaultValue) => { return s; }; -export const invoiceRedirect = writable(); export const loginRedirect = writable(); export const rate = writable(); export const user = writable(); diff --git a/src/routes/invoice/[id]/+page.svelte b/src/routes/invoice/[id]/+page.svelte index 8e9e6ff4..cfff251e 100644 --- a/src/routes/invoice/[id]/+page.svelte +++ b/src/routes/invoice/[id]/+page.svelte @@ -1,7 +1,7 @@ <script> import { copy, f, get, reverseFormat, s, sats } from '$lib/utils'; import { browser } from '$app/environment'; - import { invoices, invoiceRedirect } from '$lib/store'; + import { invoices } from '$lib/store'; import { Icon, Heart, Image, Qr, Tip } from '$comp'; import { goto } from '$app/navigation'; import { t } from '$lib/translations'; @@ -46,7 +46,7 @@ $invoices[id] = { amount, id, rate, received, text, tip, username }; $: browser && $invoices[id]?.received >= $invoices[id]?.amount && - goto($invoiceRedirect || `/invoice/${id}/paid`); + goto(($invoices[id].memo === 'launch' && '/launch/purchase') || `/invoice/${id}/paid`); $: amountFiat = parseFloat(((amount * rate) / sats).toFixed(2)); @@ -55,6 +55,7 @@ $: invoiceAmountFiatFormatted = f(amountFiat, currency); </script> +{$invoices[id]?.memo} <div class:full-shadow={showMobileTip}> <button class="ml-5 md:ml-20 mt-5 md:mt-10 hover:opacity-80" diff --git a/src/routes/invoice/[id]/paid/+page.svelte b/src/routes/invoice/[id]/paid/+page.svelte index 95c721d0..d619b7ff 100644 --- a/src/routes/invoice/[id]/paid/+page.svelte +++ b/src/routes/invoice/[id]/paid/+page.svelte @@ -22,7 +22,7 @@ }; </script> -<div class="container px-4 text-center"> +<div class="container px-4 text-center mx-auto"> <div class="flex w-full py-20 max-w-[200px] mx-auto" in:scale={{ start: 0.5 }}> <Icon icon="check" style="mx-auto" /> </div> diff --git a/src/routes/launch/+page.svelte b/src/routes/launch/+page.svelte index 843c7705..ec649b92 100644 --- a/src/routes/launch/+page.svelte +++ b/src/routes/launch/+page.svelte @@ -8,7 +8,7 @@ $loginRedirect = '/launch/purchase'; let hasTicket = !!user?.accounts.find((a) => tickets.includes(a.asset)); - $: link = user ? $loginRedirect : '/register'; + $: link = hasTicket ? '/launch/ticket' : user ? $loginRedirect : '/register'; $: text = (hasTicket ? 'View' : 'Purchase') + ' Ticket'; beforeNavigate(({ to }) => { @@ -39,26 +39,35 @@ rel="noreferrer">first commit</a >! </p> - <div class="ml-8"> - <p><b>When</b></p> - <p>6pm on October 26</p> - </div> - <div class="ml-8"> - <p><b>Where</b></p> - <p>1184 Denman Street, #203</p> - <p>Vancouver, BC</p> + + <div class="flex"> + <div class="space-y-5"> + <div class="ml-8"> + <p><b>When</b></p> + <p>6pm October 26</p> + </div> + <div class="ml-8"> + <p><b>Where</b></p> + <p>The Loft Lounge</p> + <p>1184 Denman Street, #203</p> + <p>Vancouver, BC</p> + </div> + </div> + + <img src="/icons/party.svg" alt="Partygoers" class="w-[120px] mx-auto" /> </div> <p> - We'll introduce our new interface for merchants to take bitcoin payments and afterwards - we'll network and enjoy tasty food and drinks from <a + We'll introduce our new interface for merchants to take bitcoin payments, discuss how we + can get all of Metro Vancouver on a bitcoin economy, and enjoy tasty food and drinks from <a href="https://loftondenman.com/" class="underline">The Loft</a >! </p> <p> - We're charging a nominal $6 entry fee so we can get an idea of how much space to reserve. + We're asking for a nominal $6 entry fee so we can get an idea of how much space to + reserve. </p> <div class="flex w-full my-8"> diff --git a/src/routes/launch/purchase/+page.server.js b/src/routes/launch/purchase/+page.server.js index ff5efc84..3317b420 100644 --- a/src/routes/launch/purchase/+page.server.js +++ b/src/routes/launch/purchase/+page.server.js @@ -7,16 +7,29 @@ import { browser } from '$app/environment'; export const load = async ({ parent }) => { let tickets = await get('/tickets'); - return { ...(await parent()), tickets }; + let { user } = await parent(); + let hasTicket = !!user?.accounts.find((a) => tickets.includes(a.asset)); + if (hasTicket) throw redirect(307, '/launch/ticket'); + return { tickets }; }; export const actions = { internal: async ({ cookies, request }) => { + let form = await request.formData(); + let username = form.get('username'); + + let { address } = await post( + '/invoice', + { invoice: { network: 'liquid' }, user: { username } }, + auth(cookies) + ); + let { ticket } = await get('/ticket'); let { asset } = await post( '/assets', { + address, name: `Launch Party Ticket ${ticket}`, ticker: 'LPT', precision: 0, @@ -25,9 +38,10 @@ export const actions = { domain: 'coinos.io', filename: tickets[ticket] }, - auth(cookies) + { authorization: `Bearer ${env.LAUNCH}` } ); + await post('/send', { amount: 25000, username: 'launch' }, auth(cookies)); await post('/ticket', { asset }, { authorization: `Bearer ${env.LAUNCH}` }); throw redirect(307, `/launch/thanks/${asset}`); @@ -40,6 +54,7 @@ export const actions = { let invoice = { amount: 25000, + memo: 'launch', network: 'lightning', prompt: false, rate: rates[form.get('currency')] diff --git a/src/routes/launch/purchase/+page.svelte b/src/routes/launch/purchase/+page.svelte index d31d20f0..d78b95d2 100644 --- a/src/routes/launch/purchase/+page.svelte +++ b/src/routes/launch/purchase/+page.svelte @@ -1,6 +1,7 @@ <script> + import { onMount } from 'svelte'; import { enhance } from '$app/forms'; - import { invoiceRedirect, selectedRate } from '$lib/store'; + import { selectedRate } from '$lib/store'; import { post } from '$lib/utils'; import { goto } from '$app/navigation'; @@ -8,7 +9,6 @@ let amount = 25000; let { - address, currency, account: { balance }, username @@ -16,24 +16,6 @@ let { tickets } = data; let ticket = tickets.length; - - let invoice; - let get = async (network) => { - let { uuid } = await post('/invoice', { - amount, - rate: $selectedRate, - network, - username - }); - - $invoiceRedirect = '/launch/purchase'; - goto(`/invoice/${uuid}`); - }; - - 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-4"> @@ -48,9 +30,10 @@ alt="Ticket" /> - {#if balance > amount} + {#if balance >= amount} <form action="?/internal" method="POST" use:enhance> - <input type="hidden" name="ticket" value={ticket} /> + <input type="hidden" name="username" value={username} /> + <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" @@ -77,7 +60,6 @@ <form action="?/bitcoin" method="POST"> <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> diff --git a/src/routes/launch/ticket/+page.server.js b/src/routes/launch/ticket/+page.server.js new file mode 100644 index 00000000..59ea966e --- /dev/null +++ b/src/routes/launch/ticket/+page.server.js @@ -0,0 +1,9 @@ +import { get } from '$lib/utils'; + +export const load = async ({ cookies, parent }) => { + let { user } = await parent(); + let tickets = await get('/tickets'); + let ticket = tickets.findIndex((t) => user.accounts.find((a) => a.asset === t)); + console.log("TICK", ticket) + return { ticket }; +}; diff --git a/src/routes/launch/ticket/+page.svelte b/src/routes/launch/ticket/+page.svelte index 229c18f0..2585c57c 100644 --- a/src/routes/launch/ticket/+page.svelte +++ b/src/routes/launch/ticket/+page.svelte @@ -1,4 +1,28 @@ -<img - src={`/tickets/${(ticket + 1).toString().padStart(2, '0')}.png`} - class="w-full max-w-[800px]" -/> +<script> + export let data; + let { ticket } = data; +</script> + +<div class="mx-auto h-screen flex items-center justify-center px-4"> + <div class="font-normal text-gray-800 mx-auto mb-8 space-y-8"> + <h1 class="mb-4 text-4xl font-bold leading-none tracking-tight text-gray-800 text-center"> + Your Ticket + </h1> + + <img + src={`/tickets/${(ticket + 1).toString().padStart(2, '0')}.png`} + class="w-full max-w-[800px]" + alt="Ticket" + /> + + <div class="w-full flex"> + <a href="/" class="mx-auto"> + <button + class="bg-black text-white border rounded-full px-8 py-4 font-bold hover:opacity-80 text-2xl" + > + Done + </button> + </a> + </div> + </div> +</div> |
