"use client"; import { useRouter } from "next/navigation"; import Link from "next/link"; import { useAuth } from "@/components/AuthProvider"; import { Coffee, MapPin, ArrowRight, AlertCircle, Calendar, } from "lucide-react"; import { Skeleton } from "@/components/ui/Skeleton"; interface Task { id: string; description: string; priority: number; state: string; city: string; locality: string; full_address: string; latitude: number; longitude: number; image_url: string; created_at: string; sla_deadline: string; } import { useCachedFetch } from "@/hooks/useCachedFetch"; export default function WorkerDashboard() { const { user, role, loading: authLoading } = useAuth(); const router = useRouter(); const { data: tasksData, loading: tasksLoading } = useCachedFetch( role === "worker" ? "/worker/tasks" : "", ); const tasks = tasksData || []; const isLoading = authLoading || (tasksLoading && tasks.length === 0); const getPriorityBadge = (priority: number) => { const badges: Record = { 1: { bg: "bg-red-50", text: "text-red-700", border: "border-red-200" }, 2: { bg: "bg-orange-50", text: "text-orange-700", border: "border-orange-200", }, 3: { bg: "bg-amber-50", text: "text-amber-700", border: "border-amber-200", }, 4: { bg: "bg-emerald-50", text: "text-emerald-700", border: "border-emerald-200", }, }; const labels: Record = { 1: "Critical", 2: "High", 3: "Medium", 4: "Low", }; const badge = badges[priority] || badges[3]; return ( {labels[priority] || "Unknown"} ); }; if (isLoading) { return (
{Array.from({ length: 4 }).map((_, i) => ( ))}
); } return (

My Assignments

Tasks assigned to you for resolution.

Active Tasks

{ tasks.filter((t) => ["assigned", "in_progress", "rejected"].includes(t.state), ).length }

Pending Review

{ tasks.filter((t) => ["pending_verification", "resolved"].includes(t.state), ).length }

Current Assignments

{tasks.length === 0 ? (

All caught up!

Enjoy your break, no pending assignments.

) : (
{tasks.map((task) => (
{getPriorityBadge(task.priority)} {task.state === "pending_verification" ? "Under Review" : task.state.replace("_", " ")}

{task.description || "Issue Report"}

{task.full_address || `${task.city}, ${task.locality}`}
{task.sla_deadline && (
Due:{" "} {new Date(task.sla_deadline).toLocaleDateString()}
)}
ID: {task.id.slice(0, 8)} Resolve
))}
)}
); }