"use client"; import { useEffect } from "react"; import Image from "next/image"; import Link from "next/link"; 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 { type NDKKind } from "@nostr-dev-kit/ndk"; import Header from "./_components/Header"; import EventsFromCalendar from "@/containers/EventsTimeline/EventsFromCalendar"; import { add } from "@/lib/server-actions/events/cache"; 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 { 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); add({ identifier: naddr, name: name, description: content, image: image, }); } }, [event]); if (!event) { return (
No upcoming events