diff options
| author | Adam Soltys <[email protected]> | 2025-01-21 23:26:32 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2025-01-21 23:26:32 -0800 |
| commit | a70316e64bcc9bad7fb626056f9cc58d1858dff9 (patch) | |
| tree | a185e9ee5210d5a83be08cfa15cd6343e2188b3e /src/routes | |
| parent | dd86867462148daa88a3f3727434773d67dcab43 (diff) | |
| download | coinos-ui-a70316e64bcc9bad7fb626056f9cc58d1858dff9.tar.gz coinos-ui-a70316e64bcc9bad7fb626056f9cc58d1858dff9.zip | |
notes
Diffstat (limited to 'src/routes')
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/+layout.svelte | 11 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/notes/+page.server.ts | 13 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/notes/+page.svelte | 35 | ||||
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/notes/new/+page.svelte | 41 | ||||
| -rw-r--r-- | src/routes/(app)/send/zap/[id]/[...amount]/+page.server.ts (renamed from src/routes/(app)/send/zap/[pubkey]/[...id]/+page.server.ts) | 22 | ||||
| -rw-r--r-- | src/routes/(app)/send/zap/[id]/[...amount]/+page.svelte (renamed from src/routes/(app)/send/zap/[pubkey]/[...id]/+page.svelte) | 6 |
6 files changed, 88 insertions, 40 deletions
diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index d364a840..a219a487 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -118,11 +118,16 @@ > <button type="button" - onclick={toggleDetails} class="flex text-3xl font-bold text-center mx-auto justify-center gap-2" > - <div class="my-auto break-words">{display || username}</div> - <iconify-icon noobserver icon="ph:qr-code-bold" width="32"></iconify-icon> + <div class="flex gap-1" onclick={toggleDetails}> + <div class="my-auto break-words">{display || username}</div> + <iconify-icon noobserver icon="ph:qr-code-bold" width="32" + ></iconify-icon> + </div> + <a href={`/${n}/notes`}> + <iconify-icon noobserver icon="ph:note-bold" width="32"></iconify-icon> + </a> </button> {#if subject.about} diff --git a/src/routes/(app)/[username]/(profile)/notes/+page.server.ts b/src/routes/(app)/[username]/(profile)/notes/+page.server.ts new file mode 100644 index 00000000..b7186bc0 --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/notes/+page.server.ts @@ -0,0 +1,13 @@ +import { get } from "$lib/utils"; +import { error } from "@sveltejs/kit"; + +export async function load({ parent }) { + try { + const { subject } = await parent(); + const events = await get(`/${subject.pubkey}/events`); + return { events }; + } catch (e) { + console.log(e); + error(500, { message: "Failed to get events" }); + } +} diff --git a/src/routes/(app)/[username]/(profile)/notes/+page.svelte b/src/routes/(app)/[username]/(profile)/notes/+page.svelte index 0591a881..e4261483 100644 --- a/src/routes/(app)/[username]/(profile)/notes/+page.svelte +++ b/src/routes/(app)/[username]/(profile)/notes/+page.svelte @@ -1,39 +1,24 @@ <script lang="ts"> + import { t } from "$lib/translations"; import Event from "$comp/Event.svelte"; import { get, post } from "$lib/utils"; import { onMount } from "svelte"; - import { Relay } from "nostr-tools/relay"; import { ignore } from "$lib/store"; let { data } = $props(); - let { subject } = $derived(data); - let events = $state([]); - onMount(async () => { - const relay = await Relay.connect("wss://relay.primal.net"); - const subscription = relay.subscribe( - [{ kinds: [1], authors: [subject.pubkey], limit: 20 }], - { - async onevent(event) { - // console.log(event); - const { parts, names } = await post("/post/parseEvent", { event }); - event.author = await get(`/api/users/${event.pubkey}`); - event.parts = parts; - event.names = names; - let { content, pubkey } = event; - events.push(event); - if (events.length > 20) events.shift(); - }, - }, - ); - }); + let { events, subject, user } = $derived(data); </script> <div class="container px-4 max-w-xl mx-auto space-y-5"> - <h1 class="px-3 md:px-0 text-center text-3xl md:text-4xl font-semibold"> - Events - </h1> - + {#if user?.id === subject.id} + <a href={`/${user.username}/notes/new`} class="btn"> + <iconify-icon noobserver icon="ph:note-bold" width="32"></iconify-icon> + <div>Post a note</div> + </a> + {/if} {#each events as event} <Event {event} minimal={true} /> + {:else} + <div class="text-2xl">{$t("notes.notFound")}</div> {/each} </div> diff --git a/src/routes/(app)/[username]/(profile)/notes/new/+page.svelte b/src/routes/(app)/[username]/(profile)/notes/new/+page.svelte new file mode 100644 index 00000000..8957034d --- /dev/null +++ b/src/routes/(app)/[username]/(profile)/notes/new/+page.svelte @@ -0,0 +1,41 @@ +<script> + import { goto } from "$app/navigation"; + import { send, sign } from "$lib/nostr"; + import { t } from "$lib/translations"; + import { focus } from "$lib/utils"; + + let { data } = $props(); + let { user } = $derived(data); + let { pubkey } = $derived(user); + let content = $state(); + + let submit = async (e) => { + try { + e.preventDefault(); + + let event = { + kind: 1, + content, + created_at: Math.round(Date.now() / 1000), + tags: [], + }; + + event = await sign(event); + await send(event); + + goto(`/${user.username}/notes`); + } catch (e) { + console.log(e); + } + }; +</script> + +<div class="container px-4 max-w-xl mx-auto space-y-5"> + <form method="POST" class="space-y-2 text-xl" onsubmit={submit}> + <textarea use:focus bind:value={content} placeholder={$t("notes.contents")} + ></textarea> + <button type="submit" class="btn btn-accent"> + {$t("payments.submit")}</button + > + </form> +</div> diff --git a/src/routes/(app)/send/zap/[pubkey]/[...id]/+page.server.ts b/src/routes/(app)/send/zap/[id]/[...amount]/+page.server.ts index 1dd80d20..2219c370 100644 --- a/src/routes/(app)/send/zap/[pubkey]/[...id]/+page.server.ts +++ b/src/routes/(app)/send/zap/[id]/[...amount]/+page.server.ts @@ -2,26 +2,26 @@ import getRates from "$lib/rates"; import { auth, fd, post } from "$lib/utils"; import { fail, redirect } from "@sveltejs/kit"; -export async function load({ params, parent }) { +export async function load({ cookies, params, parent }) { const { user } = await parent(); - const data = { ...params }; + const { amount, id } = params; const rates = await getRates(); - data.rate = rates[user.currency]; - return data; + let request; + if (amount) + request = await post("/zapRequest", { amount, id }, auth(cookies)); + + const rate = rates[user.currency]; + return { amount, id, rates, rate, request }; } export const actions = { setAmount: async ({ cookies, params, request }) => { const data = await fd(request); - const { id, pubkey } = params; + const { id } = params; const { amount } = data; - data.request = await post( - "/zapRequest", - { id, amount, pubkey }, - auth(cookies), - ); + data.request = await post("/zapRequest", { amount, id }, auth(cookies)); return data; }, @@ -32,7 +32,9 @@ export const actions = { const body = await fd(request); p = await post("/payments", body, auth(cookies)); + console.log("P", p); } catch (_) { + console.log("WHAT", _); return fail(400, { message: "payments.failedToRoute" }); } diff --git a/src/routes/(app)/send/zap/[pubkey]/[...id]/+page.svelte b/src/routes/(app)/send/zap/[id]/[...amount]/+page.svelte index eb0be4c8..e6dd1384 100644 --- a/src/routes/(app)/send/zap/[pubkey]/[...id]/+page.svelte +++ b/src/routes/(app)/send/zap/[id]/[...amount]/+page.svelte @@ -1,4 +1,5 @@ <script> + import { tick } from "svelte"; import { goto } from "$app/navigation"; import { untrack } from "svelte"; import { t } from "$lib/translations"; @@ -14,14 +15,14 @@ let { data, form } = $props(); let { id, request, user } = $derived({ ...data, ...form }); - let a = $state(); + let a = $state(data.amount); let { currency } = $derived(user); let locale = loc(user); let event = $state(); $effect(() => ($rate ||= data.rate)); $effect(async () => { - if (form) { + if (form || request) { try { loading = false; event = await sign(request); @@ -29,6 +30,7 @@ await post("/post/payments", { amount, payreq, pin: $pin }); goto(`/e/${id}`); } catch (e) { + console.log(e); fail(e.message); } } |
