diff options
| author | Adam Soltys <[email protected]> | 2025-01-20 00:05:30 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2025-01-20 00:05:33 -0800 |
| commit | 494fa791c93297917cf3247b561d736934de805c (patch) | |
| tree | b92bbbabe7eed8cde7b9d251cfcb08221689cc83 /src/routes/(app)/firehose | |
| parent | 684d5fe5643d481c4904a1323ae0a257c267b87b (diff) | |
| download | coinos-ui-494fa791c93297917cf3247b561d736934de805c.tar.gz coinos-ui-494fa791c93297917cf3247b561d736934de805c.zip | |
nostr routes
Diffstat (limited to 'src/routes/(app)/firehose')
| -rw-r--r-- | src/routes/(app)/firehose/+page.svelte | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/routes/(app)/firehose/+page.svelte b/src/routes/(app)/firehose/+page.svelte new file mode 100644 index 00000000..1cf2324e --- /dev/null +++ b/src/routes/(app)/firehose/+page.svelte @@ -0,0 +1,48 @@ +<script lang="ts"> + 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 events = $state([]); + let paused = $state(); + let pause = (e) => { + e.preventDefault(); + e.stopPropagation(); + paused = true; + }; + let unpause = (e) => { + e.preventDefault(); + e.stopPropagation(); + paused = false; + }; + + onMount(async () => { + const relay = await Relay.connect("wss://relay.primal.net"); + const subscription = relay.subscribe([{ kinds: [1], limit: 20 }], { + async onevent(event) { + if (paused) return; + 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(); + }, + }); + }); +</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> + + <div onpointerenter={pause} onpointerleave={unpause}> + {#each events as event} + <Event {event} minimal={true} /> + {/each} + </div> +</div> |
