From f0d88333750a2865d3016e92620a87269160effa Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Wed, 2 Nov 2022 19:47:29 -0700 Subject: move to app layout --- src/routes/(app)/launch/+page.server.js | 6 ++ src/routes/(app)/launch/+page.svelte | 103 +++++++++++++++++++++ src/routes/(app)/launch/purchase/+page.server.js | 45 +++++++++ src/routes/(app)/launch/purchase/+page.svelte | 67 ++++++++++++++ .../(app)/launch/purchase/card/+page.server.js | 44 +++++++++ src/routes/(app)/launch/purchase/card/+page.svelte | 77 +++++++++++++++ src/routes/(app)/launch/register/+page.svelte | 1 + .../(app)/launch/thanks/[asset]/+page.server.js | 1 + .../(app)/launch/thanks/[asset]/+page.svelte | 29 ++++++ src/routes/(app)/launch/ticket/+page.server.js | 9 ++ src/routes/(app)/launch/ticket/+page.svelte | 35 +++++++ 11 files changed, 417 insertions(+) create mode 100644 src/routes/(app)/launch/+page.server.js create mode 100644 src/routes/(app)/launch/+page.svelte create mode 100644 src/routes/(app)/launch/purchase/+page.server.js create mode 100644 src/routes/(app)/launch/purchase/+page.svelte create mode 100644 src/routes/(app)/launch/purchase/card/+page.server.js create mode 100644 src/routes/(app)/launch/purchase/card/+page.svelte create mode 100644 src/routes/(app)/launch/register/+page.svelte create mode 100644 src/routes/(app)/launch/thanks/[asset]/+page.server.js create mode 100644 src/routes/(app)/launch/thanks/[asset]/+page.svelte create mode 100644 src/routes/(app)/launch/ticket/+page.server.js create mode 100644 src/routes/(app)/launch/ticket/+page.svelte (limited to 'src/routes/(app)/launch') diff --git a/src/routes/(app)/launch/+page.server.js b/src/routes/(app)/launch/+page.server.js new file mode 100644 index 00000000..2b44dfae --- /dev/null +++ b/src/routes/(app)/launch/+page.server.js @@ -0,0 +1,6 @@ +import { auth, get } from '$lib/utils'; + +export const load = async ({ parent }) => { + let tickets = await get('/tickets'); + return { ...(await parent()), tickets }; +}; diff --git a/src/routes/(app)/launch/+page.svelte b/src/routes/(app)/launch/+page.svelte new file mode 100644 index 00000000..3469f0bc --- /dev/null +++ b/src/routes/(app)/launch/+page.svelte @@ -0,0 +1,103 @@ + + +
+ +
+ +
+
+
+
+
Oct
+
26
+
6 pm
+
+
+

+ Launch Party! +

+ +

+ Come join us at our launch party celebrating our new design and 10 years serving the + Vancouver Bitcoin community! +

+ +
+
+
+

When

+

6pm October 26

+
+
+

Where

+

The Loft Lounge

+

1184 Denman Street, #203

+

Vancouver, BC

+
+
+ + Partygoers +
+ +

+ We'll introduce our new interface and then network and enjoy tasty food and drinks from The Loft! +

+ +

+ The Loft will be accepting Lightning payments at the event and going forward into the + future as well! We're charging $6 for for an NFT ticket that gets you entry, appies, and + the chance to win some swag and sats. +

+ + +
+
+
+
diff --git a/src/routes/(app)/launch/purchase/+page.server.js b/src/routes/(app)/launch/purchase/+page.server.js new file mode 100644 index 00000000..2ecce695 --- /dev/null +++ b/src/routes/(app)/launch/purchase/+page.server.js @@ -0,0 +1,45 @@ +import { auth, get, post } from '$lib/utils'; +import tickets from '$lib/tickets'; +import { redirect } from '@sveltejs/kit'; +import { env } from '$env/dynamic/private'; +import { invalidateAll } from '$app/navigation'; +import { browser } from '$app/environment'; +import { createTicket } from '$lib/ticket'; + +export const load = async ({ parent }) => { + let tickets = await get('/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 asset = await createTicket(cookies, form.get('username')); + await post('/send', { amount: 22000, username: 'launch' }, auth(cookies)); + + throw redirect(307, `/launch/thanks/${asset}`); + }, + + lightning: async ({ cookies, request }) => { + let form = await request.formData(); + + let rates = await get('/rates'); + + let invoice = { + amount: 22000, + memo: 'launch', + network: 'lightning', + prompt: false, + rate: rates[form.get('currency')] + }; + + let user = { username: form.get('username') }; + + let { uuid } = await post('/invoice', { invoice, user }, auth(cookies)); + + throw redirect(307, `/invoice/${uuid}`); + } +}; diff --git a/src/routes/(app)/launch/purchase/+page.svelte b/src/routes/(app)/launch/purchase/+page.svelte new file mode 100644 index 00000000..3273752a --- /dev/null +++ b/src/routes/(app)/launch/purchase/+page.svelte @@ -0,0 +1,67 @@ + + +
+
+

+ Purchase Ticket +

+ + Ticket + + {#if balance >= amount} +
+ + +
+ +
+
+ {:else} +

+ Payment Options +

+ +
+
+ + + +
+ + + + +
+ {/if} +
+
diff --git a/src/routes/(app)/launch/purchase/card/+page.server.js b/src/routes/(app)/launch/purchase/card/+page.server.js new file mode 100644 index 00000000..1f564f78 --- /dev/null +++ b/src/routes/(app)/launch/purchase/card/+page.server.js @@ -0,0 +1,44 @@ +import { env } from '$env/dynamic/private'; +import { error, redirect } from '@sveltejs/kit'; +import { post, auth } from '$lib/utils'; +import { createTicket } from '$lib/ticket'; + +let stripe = 'https://api.stripe.com/v1'; + +export const actions = { + default: async ({ cookies, request }) => { + let form = await request.formData(); + + let headers = new Headers(); + headers.set('Authorization', 'Basic ' + new Buffer(env.STRIPE + ':').toString('base64')); + + let body = new URLSearchParams({ + 'card[number]': form.get('number').replace(/\s+/g, ''), + 'card[exp_month]': form.get('expiry').slice(0, 2), + 'card[exp_year]': form.get('expiry').slice(-2), + 'card[cvc]': form.get('cvc') + }); + + let method = 'POST'; + + let { id: source } = await fetch(`${stripe}/tokens`, { body, headers, method }).then((r) => + r.json() + ); + + body = new URLSearchParams({ + amount: 600, + currency: 'cad', + source, + description: 'launch ticket' + }); + + let { status } = await fetch(`${stripe}/charges`, { body, headers, method }).then((r) => + r.json() + ); + + if (status !== 'succeeded') throw error(500, { message: 'Card payment failed' }); + let asset = await createTicket(cookies, form.get('username')); + + throw redirect(307, `/launch/thanks/${asset}`); + } +}; diff --git a/src/routes/(app)/launch/purchase/card/+page.svelte b/src/routes/(app)/launch/purchase/card/+page.svelte new file mode 100644 index 00000000..05d09025 --- /dev/null +++ b/src/routes/(app)/launch/purchase/card/+page.svelte @@ -0,0 +1,77 @@ + + +
+
{ + loading = true; + return ({ update }) => update() && (loading = false); + }} + > + + + + + + + +
+ +
+
+
diff --git a/src/routes/(app)/launch/register/+page.svelte b/src/routes/(app)/launch/register/+page.svelte new file mode 100644 index 00000000..437a48f1 --- /dev/null +++ b/src/routes/(app)/launch/register/+page.svelte @@ -0,0 +1 @@ +We need to get you registered diff --git a/src/routes/(app)/launch/thanks/[asset]/+page.server.js b/src/routes/(app)/launch/thanks/[asset]/+page.server.js new file mode 100644 index 00000000..e9e01376 --- /dev/null +++ b/src/routes/(app)/launch/thanks/[asset]/+page.server.js @@ -0,0 +1 @@ +// export const load = ({ parent }) => parent(); diff --git a/src/routes/(app)/launch/thanks/[asset]/+page.svelte b/src/routes/(app)/launch/thanks/[asset]/+page.svelte new file mode 100644 index 00000000..43f10057 --- /dev/null +++ b/src/routes/(app)/launch/thanks/[asset]/+page.svelte @@ -0,0 +1,29 @@ + + +
+
+

+ Thanks! +

+ +

We look forward to seeing you!

+
+ + +
diff --git a/src/routes/(app)/launch/ticket/+page.server.js b/src/routes/(app)/launch/ticket/+page.server.js new file mode 100644 index 00000000..0362eb7d --- /dev/null +++ b/src/routes/(app)/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)); + let asset = tickets[ticket]; + return { asset, ticket }; +}; diff --git a/src/routes/(app)/launch/ticket/+page.svelte b/src/routes/(app)/launch/ticket/+page.svelte new file mode 100644 index 00000000..3879abcd --- /dev/null +++ b/src/routes/(app)/launch/ticket/+page.svelte @@ -0,0 +1,35 @@ + + +
+
+

+ Your Ticket +

+ +

+ We've minted your ticket as an NFT on the Liquid Blockchain as a proof of purchase and commemorative token. +

+ + Ticket + + +
+
-- cgit v1.2.3