import { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import api from '../api'; import './MyMessages.css'; function MyMessages() { const [messages, setMessages] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); const [selectedMessage, setSelectedMessage] = useState(null); const navigate = useNavigate(); useEffect(() => { fetchMessages(); }, []); const fetchMessages = async () => { try { const token = localStorage.getItem('token'); if (!token) { navigate('/login'); return; } const response = await api.get('/my-messages'); setMessages(response.data); setLoading(false); } catch (err) { console.error('Error fetching messages:', err); setError('Failed to load messages'); setLoading(false); if (err.response?.status === 401) { navigate('/login'); } } }; const getStatusColor = (status) => { const colors = { new: '#3b82f6', read: '#f59e0b', replied: '#10b981', }; return colors[status] || '#6b7280'; }; const formatDate = (dateString) => { return new Date(dateString).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', }); }; if (loading) { return
Loading your messages...
; } return (

My Messages

View your contact messages and admin responses

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

No messages yet

You haven't sent any contact messages yet.

) : (
{messages.map((message) => (

{message.subject}

Sent on {formatDate(message.created_at)}

{message.status.toUpperCase()}

Your Message:

{message.message}

{message.admin_notes && (

Admin Response:

{message.admin_notes}

)} {!message.admin_notes && message.status === 'new' && (

⏳ Waiting for admin response...

)}
{selectedMessage?.id === message.id && (
Name: {message.full_name}
Email: {message.email}
{message.phone && (
Phone: {message.phone}
)}
Read Status: {message.is_read ? 'Read' : 'Unread'}
)}
))}
)}
); } export default MyMessages;