"use client" import Navigation from "@/components/Navigation"; import { CalendarIcon } from "@heroicons/react/24/outline" import axios from "axios"; import { addDays, format, isWithinInterval, setDate, toDate } from "date-fns" import Link from "next/link"; import { useEffect, useState } from "react"; import type { Event } from "@/lib/types"; import placeholder from "@/public/placeholder.svg" import { useAppStore } from "@/lib/store"; import { redirect, useRouter } from "next/navigation" import { EVENT_GET, USER_INFO_ROUTE } from "@/routes/routes"; export default function Tickets(){ const [searchQuery, setSearchQuery] = useState("") const router = useRouter() const { user, events, setUser } = useAppStore() useEffect(() => { const fun = async() => { if(!user){ await axios.get(USER_INFO_ROUTE, { withCredentials: true }) .then((res) => { setUser(res.data) if(res.data.role === 0){ router.replace("/events") } }) .catch((err) => { router.replace("/") }) } } fun(); },[user, setUser, router]) const filteredEvents = events.filter(event => { const search = event.title.toLowerCase().includes(searchQuery.toLowerCase()) const isInInterval = isWithinInterval(event.date, { start: new Date(), end: addDays(new Date(), 5) }) return search && isInInterval }) return(
{searchQuery ? `No events matching "${searchQuery}"` : "There are no upcoming events at the moment."}