aboutsummaryrefslogtreecommitdiffstats
path: root/src/routes/(app)
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2025-01-21 23:26:32 -0800
committerAdam Soltys <[email protected]>2025-01-21 23:26:32 -0800
commita70316e64bcc9bad7fb626056f9cc58d1858dff9 (patch)
treea185e9ee5210d5a83be08cfa15cd6343e2188b3e /src/routes/(app)
parentdd86867462148daa88a3f3727434773d67dcab43 (diff)
downloadcoinos-ui-a70316e64bcc9bad7fb626056f9cc58d1858dff9.tar.gz
coinos-ui-a70316e64bcc9bad7fb626056f9cc58d1858dff9.zip
notes
Diffstat (limited to 'src/routes/(app)')
-rw-r--r--src/routes/(app)/[username]/(profile)/+layout.svelte11
-rw-r--r--src/routes/(app)/[username]/(profile)/notes/+page.server.ts13
-rw-r--r--src/routes/(app)/[username]/(profile)/notes/+page.svelte35
-rw-r--r--src/routes/(app)/[username]/(profile)/notes/new/+page.svelte41
-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);
}
}