dress/resources/js/pages/admin/master/user/hooks/use-user-index.ts

85 lines
2.6 KiB
TypeScript

import { useState } from 'react';
import { User } from '@/types';
import { router } from '@inertiajs/react';
import userRoutes from '@/routes/user';
import { toast } from 'sonner';
export function useUserIndex() {
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
const [isBulkDeleteDialogOpen, setIsBulkDeleteDialogOpen] = useState(false);
const [userToDelete, setUserToDelete] = useState<User | null>(null);
const [isResetPasswordOpen, setIsResetPasswordOpen] = useState(false);
const [userToReset, setUserToReset] = useState<User | null>(null);
const [rowsToDelete, setRowsToDelete] = useState<any[]>([]);
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) => {
toast.success(response.props.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) => {
toast.success(response.props.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) => {
toast.success(response.props.flash.success);
setIsBulkDeleteDialogOpen(false);
setRowsToDelete([]);
setRowSelection({});
},
});
};
return {
isDeleteDialogOpen,
isBulkDeleteDialogOpen,
userToDelete,
isResetPasswordOpen,
userToReset,
rowsToDelete,
rowSelection,
setRowSelection,
setRowsToDelete,
setIsDeleteDialogOpen,
setIsBulkDeleteDialogOpen,
setIsResetPasswordOpen,
onResetPassword,
confirmResetPassword,
onDelete,
confirmDelete,
confirmBulkDelete,
};
}