You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.4 KiB
37 lines
1.4 KiB
<script lang="ts"> |
|
import EventWrapper from '$lib/components/events/EventWrapper.svelte' |
|
import Status from '$lib/components/events/content/Status.svelte' |
|
import Patch from '$lib/components/events/content/Patch.svelte' |
|
import ParsedContent from '$lib/components/events/content/ParsedContent.svelte' |
|
import { defaults as user_defaults } from '$lib/components/users/type' |
|
import { patch_kind, proposal_status_kinds } from '$lib/kinds' |
|
import { ensureUser } from '$lib/stores/users' |
|
import type { NDKEvent } from '@nostr-dev-kit/ndk' |
|
import { onDestroy } from 'svelte' |
|
import { writable, type Unsubscriber } from 'svelte/store' |
|
|
|
export let event: NDKEvent |
|
export let type: 'proposal' | 'issue' = 'proposal' |
|
|
|
let author = writable({ ...user_defaults }) |
|
let author_unsubsriber: Unsubscriber |
|
$: { |
|
if (event && event.pubkey.length > 0) |
|
author_unsubsriber = ensureUser(event.pubkey).subscribe((u) => { |
|
if (u.hexpubkey == event.pubkey) author.set({ ...u }) |
|
}) |
|
} |
|
onDestroy(() => { |
|
if (author_unsubsriber) author_unsubsriber() |
|
}) |
|
</script> |
|
|
|
<EventWrapper {type} author={$author} created_at={event.created_at} {event}> |
|
{#if event.kind == patch_kind} |
|
<Patch content={event.content} tags={event.tags} /> |
|
{:else if event.kind && proposal_status_kinds.includes(event.kind)} |
|
<Status {type} status={event.kind} /> |
|
{:else} |
|
<ParsedContent content={event.content} tags={event.tags} /> |
|
{/if} |
|
</EventWrapper>
|
|
|