"use client"; import { useState, useEffect } from "react"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Announcement } from "@/app/types/announcement"; export function AnnouncementsDropdown() { const [announcements, setAnnouncements] = useState([]); const [selectedAnnouncement, setSelectedAnnouncement] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { // Fetch announcements from the API const fetchAnnouncements = async () => { try { setLoading(true); const response = await fetch('/api/announcements'); if (!response.ok) { throw new Error('Failed to fetch announcements'); } const data = await response.json(); setAnnouncements(data); if (data.length > 0) { setSelectedAnnouncement(data[0]); } } catch (err) { console.error('Error fetching announcements:', err); setError('Failed to load announcements'); } finally { setLoading(false); } }; fetchAnnouncements(); }, []); const handleAnnouncementChange = (announcementId: string) => { const announcement = announcements.find(a => a.id === announcementId); if (announcement) { setSelectedAnnouncement(announcement); } }; return (
{loading ? (
) : error ? (
{error}
) : announcements.length === 0 ? (
No announcements available
) : ( <>
{selectedAnnouncement && ( {selectedAnnouncement.title}
Posted by {selectedAnnouncement.author.email} on {new Date(selectedAnnouncement.createdAt).toLocaleDateString()}
{selectedAnnouncement.content}
)} )}
); }