import userRoutes from '@/routes/user'; import type { User } from '@/types'; import { router } from '@inertiajs/react'; import { useState } from 'react'; import { toast } from 'sonner'; export function useUserIndex() { const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); const [isBulkDeleteDialogOpen, setIsBulkDeleteDialogOpen] = useState(false); const [userToDelete, setUserToDelete] = useState(null); const [isResetPasswordOpen, setIsResetPasswordOpen] = useState(false); const [userToReset, setUserToReset] = useState(null); const [rowsToDelete, setRowsToDelete] = useState([]); const [rowSelection, setRowSelection] = useState({}); const onResetPassword = (user: User) => { setUserToReset(user); setIsResetPasswordOpen(true); }; const confirmResetPassword = () => { if (userToReset) { router.patch(userRoutes.resetPassword(userToReset.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); } setIsResetPasswordOpen(false); setUserToReset(null); }, }); } }; const onDelete = (user: User) => { setUserToDelete(user); setIsDeleteDialogOpen(true); }; const confirmDelete = () => { if (userToDelete) { router.delete(userRoutes.destroy(userToDelete.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); setUserToDelete(null); setRowSelection({}); }, }); } }; const confirmBulkDelete = () => { router.post(userRoutes.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({}); }, }); }; const onToggleStatus = (user: User) => { router.patch(userRoutes.toggleStatus(user.id).url, {}, { preserveState: true, preserveScroll: true, onSuccess: (response: any) => { const flash = response.props.flash; if (flash?.error) { toast.error(flash.error); } else if (flash?.success) { toast.success(flash.success); } }, }); }; return { isDeleteDialogOpen, isBulkDeleteDialogOpen, userToDelete, isResetPasswordOpen, userToReset, rowsToDelete, rowSelection, setRowSelection, setRowsToDelete, setIsDeleteDialogOpen, setIsBulkDeleteDialogOpen, setIsResetPasswordOpen, onResetPassword, confirmResetPassword, onDelete, confirmDelete, confirmBulkDelete, onToggleStatus, }; }