blob: 1cf2324e5bc03b525a5ed0f1ddd9708226cdb906 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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>
|