"use client"; import { useState, useCallback } from "react"; import { Alert, ArchiveButton, ConfirmDialog } from "@/src/Components/UI"; import { ArchivedDrivers } from "@/src/Components/Driver/archive/ArchivedDrivers"; import { DriverTable } from "@/src/Components/Driver/DriverTable"; import { useDrivers } from "@/src/hooks/useDriver"; import { CreateDriverPayload, Driver, UpdateDriverPayload } from "@/src/types/driver"; import { DriverDetailPanel, DriverFormModal , } from "@/src/Components/Driver"; // ── Page Component ──────────────────────────────────────────────────────────── export default function DriversPage() { const { drivers, loading, error, total, pages, page, search, setPage, handleSearch, clearError, createDriver, updateDriver, deleteDriver, notification, } = useDrivers(); // ── Panel / modal state ─────────────────────────────────────────────────── const [selectedDriverId, setSelectedDriverId] = useState(null); const [formDriver, setFormDriver] = useState(null); const [deleteTarget, setDeleteTarget] = useState(null); const [deleting, setDeleting] = useState(false); // Bumped after a successful edit to force the detail panel to re-fetch const [panelRefreshKey, setPanelRefreshKey] = useState(0); // Archive browser modal open/closed const [archiveOpen, setArchiveOpen] = useState(false); // ── Handlers ────────────────────────────────────────────────────────────── const handleEdit = useCallback((driver: Driver) => { setSelectedDriverId(null); setFormDriver(driver); }, []); const handleDelete = useCallback((driver: Driver) => { setSelectedDriverId(null); setDeleteTarget(driver); }, []); const handleFormSubmit = useCallback( async ( payload: CreateDriverPayload | UpdateDriverPayload, isNew: boolean, ): Promise => { let ok: boolean; if (isNew) { ok = await createDriver( payload as CreateDriverPayload & { photo?: File; nationalPhoto?: File; driverCardPhoto?: File; }, ); } else { const id = (formDriver as Driver).id; ok = await updateDriver( id, payload as UpdateDriverPayload & { photo?: File; nationalPhoto?: File; driverCardPhoto?: File; }, ); // Re-fetch detail panel so updated status is visible immediately if (ok && selectedDriverId) setPanelRefreshKey((k) => k + 1); } return ok; }, [formDriver, createDriver, updateDriver, selectedDriverId], ); const handleConfirmDelete = useCallback(async () => { if (!deleteTarget) return; setDeleting(true); const ok = await deleteDriver(deleteTarget.id); setDeleting(false); if (ok) setDeleteTarget(null); }, [deleteTarget, deleteDriver]); // ── Render ──────────────────────────────────────────────────────────────── return ( <>
{/* ── Header ── */}

إدارة الكوادر

السائقون

إجمالي{" "} {total}{" "} سائق مسجل

{/* Search */}