import { useState, useEffect } from 'react'; import { Link } from 'react-router-dom'; import Layout from '../../components/Layout'; import StatusBadge from '../../components/StatusBadge'; import { supabase } from '../../lib/supabase'; import { useAuth } from '../../context/AuthContext'; export default function MyRequests() { const { currentUser } = useAuth(); const [projects, setProjects] = useState([]); const [tasks, setTasks] = useState([]); const [submissions, setSubmissions] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { async function load() { // Only fetch tasks where current user was the original submitter const { data: mySubs } = await supabase .from('submissions') .select('task_id, submitted_by_name, version_number, type') .eq('submitted_by', currentUser.id) .eq('type', 'initial'); if (!mySubs || mySubs.length === 0) { setLoading(false); return; } const myTaskIds = mySubs.map(s => s.task_id); const { data: t } = await supabase .from('tasks').select('*, project:projects(id, name, created_at, status)') .in('id', myTaskIds); setTasks(t || []); // Also fetch all submissions for these tasks (to show revision history) const { data: allSubs } = await supabase .from('submissions') .select('task_id, submitted_by_name, version_number, type') .in('task_id', myTaskIds) .order('version_number'); setSubmissions(allSubs || []); // Group tasks by project const projectMap = {}; (t || []).forEach(task => { const p = task.project; if (!p) return; if (!projectMap[p.id]) projectMap[p.id] = { ...p, id: p.id }; }); setProjects(Object.values(projectMap)); setLoading(false); } load(); }, [currentUser.id]); if (loading) return

Loading...

; return (
My Requests
Requests you have submitted.
+ New Request
{projects.length === 0 ? (
📋

No requests yet

Submit a new request to get started.

Submit Request
) : ( projects.map(project => { const projectTasks = tasks.filter(t => t.project?.id === project.id); return (
{project.name}
Started {new Date(project.created_at).toLocaleDateString()} · {projectTasks.length} job{projectTasks.length !== 1 ? 's' : ''}
{projectTasks.map(task => { const taskSubs = submissions.filter(s => s.task_id === task.id); const initialSub = taskSubs.find(s => s.type === 'initial') || taskSubs[0]; const latestSub = taskSubs[taskSubs.length - 1]; const hasRevision = taskSubs.length > 1 && latestSub?.submitted_by_name !== initialSub?.submitted_by_name; return (
{task.title}{' '} {'v' + String(task.current_version).padStart(2, '0')}
Submitted by {initialSub?.submitted_by_name || 'Unknown'} {hasRevision && ` · Last updated by ${latestSub.submitted_by_name}`}
Details
); })}
); }) )}
); }