"use client"; import { useState } from "react"; import { Alert, Toast, ArchiveButton ,ConfirmDialog } from "@/src/Components/UI"; import { BranchDetailModal, BranchTable ,BranchFormModal } from "@/src/Components/Branch"; import { useBranches } from "@/src/hooks/useBranch"; import type { Branch, BranchFormData } from "@/src/types/branch"; import { ArchivedBranchesModal } from "@/src/Components/Branch/archive/ArchivedBranchesModal"; import Header from "@/src/Components/UI/Header"; export default function BranchesPage() { // ── Modal state ───────────────────────────────────────────────────────────── // false = closed | null = create mode | Branch = edit mode const [formTarget, setFormTarget] = useState(false); const [deleteTarget, setDeleteTarget] = useState(null); // ID of branch whose detail modal is open; null = closed const [viewBranchId, setViewBranchId] = useState(null); // Archive browser modal open/closed const [archiveOpen, setArchiveOpen] = useState(false); // Local submitting flag shown in DeleteConfirmModal spinner const [deleting, setDeleting] = useState(false); // ── Data hook ─────────────────────────────────────────────────────────────── const { branches, loading, total, pages, error, page, search, setPage, handleSearch, clearError, createBranch, updateBranch, deleteBranch, notification, } = useBranches(); // ── Create / Update handler ───────────────────────────────────────────────── const handleFormSubmit = async (data: BranchFormData, isNew: boolean): Promise => { if (isNew) return createBranch(data); // formTarget is Branch when editing return updateBranch((formTarget as Branch).id, data); }; // ── Delete handler ────────────────────────────────────────────────────────── const handleDeleteConfirm = async () => { if (!deleteTarget || deleting) return; setDeleting(true); const ok = await deleteBranch(deleteTarget.id); setDeleting(false); if (ok) setDeleteTarget(null); }; // ── Render ────────────────────────────────────────────────────────────────── return ( <> {/* Global success / error toast — fires on create, update, AND delete */} {/* Branch detail modal */} {viewBranchId && ( setViewBranchId(null)} /> )} {/* Create / Edit modal */} {formTarget !== false && ( setFormTarget(false)} onSubmit={handleFormSubmit} /> )} {/* Delete confirmation dialog */} setDeleteTarget(null)} onConfirm={handleDeleteConfirm} title="حذف الفرع" description={`هل أنت متأكد من حذف الفرع ${deleteTarget?.name ?? ""}؟ لا يمكن التراجع عن هذا الإجراء.`} /> {/* Archive browser modal */} {archiveOpen && ( setArchiveOpen(false)} /> )}
{/* ── Page header ── */}
{}} title="الفروع" mainTitle="إدارة الفروع" setPage={setPage} name={"فرع"} isAudit={false} onAdd={() => setFormTarget(null)} /> {/* General load error */} {error && } {/* Branches table */} setViewBranchId(branch.id)} onEdit={branch => setFormTarget(branch)} onDelete={branch => setDeleteTarget(branch)} onAddFirst={() => setFormTarget(null)} onPageChange={setPage} />
{/* Floating button to open the archive browser */} setArchiveOpen(true)} /> ); }