"use client"; import { useEffect } from "react"; import { nip19 } from "nostr-tools"; import useEvents from "@/lib/hooks/useEvents"; import Spinner from "@/components/spinner"; import { getTagAllValues, getTagValues, getTagsAllValues, getTagsValues, } from "@/lib/nostr/utils"; import Header from "./_components/Header"; import HostsContainer from "./_components/HostsContainer"; import LocationContainer from "./_components/LocationContainer"; import AnnouncementsContainer from "./_components/AnnouncementsContainer"; import DiscussionContainer from "./_components/DiscussionContainer"; import AttendeesContainer from "./_components/AttendeesContainer"; import { add } from "@/lib/server-actions/events/cache"; import { BANNER } from "@/constants"; export default function EventPage({ params: { naddr }, }: { params: { naddr: string; }; }) { const { type, data } = nip19.decode(naddr); if (type !== "naddr") { throw new Error("Invalid list"); } const { identifier, kind, pubkey } = data; const bech32 = `${kind}:${pubkey}:${identifier}`; const { events } = useEvents({ filter: { authors: [pubkey], kinds: [kind], ["#d"]: [identifier], limit: 1, }, }); const event = events[0]; useEffect(() => { if (event) { const { tags, content } = event; const name = getTagValues("name", tags) ?? "Untitled"; const image = getTagValues("image", tags) ?? getTagValues("picture", tags) ?? getTagValues("banner", tags) ?? BANNER; add({ identifier: naddr, name: name, description: content, image: image, }); } }, [event]); if (!event) { return (