diff --git a/app/(app)/calendar/[naddr]/page.tsx b/app/(app)/calendar/[naddr]/page.tsx index 0e1bb9d..b04fe12 100644 --- a/app/(app)/calendar/[naddr]/page.tsx +++ b/app/(app)/calendar/[naddr]/page.tsx @@ -15,6 +15,7 @@ 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"; +import { unixTimeNowInSeconds } from "@/lib/nostr/dates"; export default function EventPage({ params: { naddr }, @@ -61,8 +62,6 @@ export default function EventPage({ ); } - const { tags } = event; - const eventReference = event.encode(); return (
No upcoming events
diff --git a/app/(app)/explore/_components/CalendarCard.tsx b/app/(app)/explore/_components/CalendarCard.tsx index 1e8a0a5..511f716 100644 --- a/app/(app)/explore/_components/CalendarCard.tsx +++ b/app/(app)/explore/_components/CalendarCard.tsx @@ -24,7 +24,7 @@ import { import { Skeleton } from "@/components/ui/skeleton"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { unixTimeNowInSeconds } from "@/lib/nostr/dates"; - +import { uniqBy } from "ramda"; type CalendarCardProps = { calendar: NDKEvent; }; @@ -61,7 +61,9 @@ export default function CalendarCard({ calendar }: CalendarCardProps) { unixTimeNowInSeconds(), ); const sortedEvents = sortEventsByTagNumber(filteredEvents, "start"); - setUpcomingEvents(sortedEvents); + setUpcomingEvents( + uniqBy((e) => getTagValues("name", e.tags), sortedEvents), + ); } }, [events]); diff --git a/containers/EventsTimeline/EventsFromCalendar.tsx b/containers/EventsTimeline/EventsFromCalendar.tsx index 921074e..d41243e 100644 --- a/containers/EventsTimeline/EventsFromCalendar.tsx +++ b/containers/EventsTimeline/EventsFromCalendar.tsx @@ -9,26 +9,26 @@ import CalendarSection, { CalendarSectionLoading } from "./CalendarSection"; import useEvents from "@/lib/hooks/useEvents"; type EventsFromCalendar = { calendar: NDKEvent; + secondaryFilter?: (event: NDKEvent) => Boolean; loader?: () => JSX.Element; empty?: () => JSX.Element; }; export default function EventsFromCalendar({ calendar, + secondaryFilter, loader: Loader, empty: Empty, }: EventsFromCalendar) { const calendarEvents = getTagsValues("a", calendar.tags); - const { ndk } = useNDK(); const [eventsByDay, setEventsByDay] = useState