"use client"; import { useEffect, useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { RefreshCw } from "lucide-react"; import { useRouter } from "next/navigation"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; interface Message { _id: string; msg: string; ts: string; u: { _id: string; username: string; name?: string; }; roomName: string; roomType: string; } export function Parole() { const [messages, setMessages] = useState([]); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); const [refreshing, setRefreshing] = useState(false); const router = useRouter(); const fetchMessages = async (isRefresh = false) => { try { if (isRefresh) { setRefreshing(true); } const response = await fetch('/api/rocket-chat/messages', { // Prevent caching cache: 'no-store', next: { revalidate: 0 }, }); if (!response.ok) { const errorData = await response.json(); throw new Error(errorData.error || 'Failed to fetch messages'); } const data = await response.json(); if (Array.isArray(data.messages)) { setMessages(data.messages); } else { console.warn('Unexpected data format:', data); setMessages([]); } setError(null); } catch (err) { console.error('Error fetching messages:', err); setError(err instanceof Error ? err.message : 'Failed to fetch messages'); } finally { setLoading(false); setRefreshing(false); } }; useEffect(() => { fetchMessages(); // Set up polling every 30 seconds const interval = setInterval(() => fetchMessages(), 30000); return () => clearInterval(interval); }, []); return ( router.push('/parole')} > Talk mentions {loading &&

Loading messages...

} {error && (

Error: {error}

)} {!loading && !error && (
{messages.length === 0 ? (

No messages found

) : ( messages.map((message) => (
{(message.u.name || message.u.username).substring(0, 2).toUpperCase()}

{message.u.name || message.u.username}

{new Date(message.ts).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}

{message.msg}

{message.roomName && (

in {message.roomName}

)}
)) )}
)}
); }