import { router } from '@inertiajs/react'; import { useState } from 'react'; import { toast } from 'sonner'; import roleRoutes from '@/routes/system/role'; import type { Role } from '@/types'; export function useRoleIndex() { const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); const [isBulkDeleteDialogOpen, setIsBulkDeleteDialogOpen] = useState(false); const [roleToDelete, setRoleToDelete] = useState(null); const [rowsToDelete, setRowsToDelete] = useState([]); const [rowSelection, setRowSelection] = useState({}); const onDelete = (role: Role) => { setRoleToDelete(role); setIsDeleteDialogOpen(true); }; const confirmDelete = () => { if (roleToDelete) { router.delete(roleRoutes.destroy(roleToDelete.id).url, { onSuccess: (response: any) => { const flash = response.props.flash; if (flash?.error) { toast.error(flash.error); } else if (flash?.success) { toast.success(flash.success); } setIsDeleteDialogOpen(false); setRoleToDelete(null); setRowSelection({}); }, }); } }; const confirmBulkDelete = () => { router.post(roleRoutes.bulkDestroy().url, { ids: rowsToDelete.map((row: any) => row.id), _method: 'DELETE' }, { onSuccess: (response: any) => { const flash = response.props.flash; if (flash?.error) { toast.error(flash.error); } else if (flash?.success) { toast.success(flash.success); } setIsBulkDeleteDialogOpen(false); setRowsToDelete([]); setRowSelection({}); }, }); }; return { isDeleteDialogOpen, isBulkDeleteDialogOpen, roleToDelete, rowsToDelete, rowSelection, setRowSelection, setRowsToDelete, setIsDeleteDialogOpen, setIsBulkDeleteDialogOpen, onDelete, confirmDelete, confirmBulkDelete, }; }