import { useEffect, useState } from 'react'; import { Send, Users } from 'lucide-react'; import { api } from '../lib/api.js'; function cx(...args) { return args.filter(Boolean).join(' '); } export default function CustomersManager() { const [customers, setCustomers] = useState([]); const [loading, setLoading] = useState(true); const [selectedId, setSelectedId] = useState(null); const [thread, setThread] = useState([]); const [threadLoading, setThreadLoading] = useState(false); const [reply, setReply] = useState(''); const [sending, setSending] = useState(false); async function loadCustomers() { setLoading(true); setCustomers(await api.adminGetCustomers()); setLoading(false); } useEffect(() => { loadCustomers(); }, []); async function openCustomer(id) { setSelectedId(id); setThreadLoading(true); setThread(await api.adminGetCustomerMessages(id)); setThreadLoading(false); } async function sendReply(e) { e.preventDefault(); const text = reply.trim(); if (!text || sending || !selectedId) return; setSending(true); try { const msg = await api.adminSendCustomerMessage(selectedId, text); setThread((t) => [...t, msg]); setReply(''); loadCustomers(); } finally { setSending(false); } } const selected = customers.find((c) => c.id === selectedId); if (loading) return
Загружаем клиентов...
; return (Переписка из личных кабинетов зарегистрированных клиентов.
Пока нет зарегистрированных клиентов.
} {customers.map((c) => ( ))}Выберите клиента слева, чтобы увидеть переписку.
} {selectedId && (Загружаем переписку...
} {!threadLoading && thread.length === 0 &&Сообщений пока нет.
} {thread.map((m) => (