import { useCallback, useEffect, useMemo, useState } from 'react'; import { Link, useParams } from 'react-router-dom'; import { ArrowRight, Ban, CheckCircle2, ClipboardList, FileText, Play, Plus, Save, ShieldAlert, Users } from 'lucide-react'; import toast from 'react-hot-toast'; import api from '../services/api'; import Modal from '../components/Modal'; import { formatJalaliDate } from '../utils/date'; const stages = [['before', 'قبل از جلسه'], ['during', 'حین جلسه'], ['after', 'بعد از جلسه']]; export default function MeetingWorkspace() { const { id } = useParams(); const [meeting, setMeeting] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); const [stage, setStage] = useState('before'); const [saving, setSaving] = useState(false); const [form, setForm] = useState({ objective: '', agenda: '', notes: '', summary: '' }); const [quickForm, setQuickForm] = useState(null); const load = useCallback(async () => { setLoading(true); try { const { data } = await api.get(`/meetings/${id}/workspace`); setMeeting(data.data); setForm({ objective: data.data.objective || '', agenda: data.data.agenda || '', notes: data.data.notes || '', summary: data.data.summary || '' }); setStage(data.data.status === 'completed' ? 'after' : data.data.status === 'in_progress' ? 'during' : 'before'); setError(''); } catch { setError('دریافت فضای کاری جلسه ناموفق بود.'); } finally { setLoading(false); } }, [id]); useEffect(() => { load(); }, [load]); const saveNotes = async () => { setSaving(true); try { await api.patch(`/meetings/${id}`, form); toast.success('اطلاعات جلسه ذخیره شد'); await load(); } catch { toast.error('ذخیره جلسه ناموفق بود'); } finally { setSaving(false); } }; const startMeeting = async () => { try { await api.post(`/meetings/${id}/start`); toast.success('جلسه شروع شد'); await load(); } catch (err) { toast.error(err.response?.data?.message || 'شروع جلسه ناموفق بود'); } }; const completeMeeting = async () => { try { await api.post(`/meetings/${id}/complete`, { summary: form.summary }); toast.success('جلسه تکمیل شد'); await load(); } catch (err) { toast.error(err.response?.data?.message || 'تکمیل جلسه ناموفق بود'); } }; if (loading) return
{Array.from({ length: 7 }).map((_, index) =>
)}
; if (error || !meeting) return

{error}

; return (
جلسات/{meeting.title}

{meeting.title}

{meeting.status}

{meeting.objective || 'هدف جلسه هنوز ثبت نشده است.'}

{formatJalaliDate(meeting.date)}{meeting.start_time?.slice(0, 5) || 'بدون ساعت'} تا {meeting.end_time?.slice(0, 5) || 'نامشخص'}{meeting.project?.title || 'جلسه عمومی'}{meeting.sprint?.title && {meeting.sprint.title}}
{stage === 'before' && (

آماده‌سازی جلسه