Files
react-training/hotel-management/src/hooks/users/useCreateUser.ts
T
2023-11-23 08:59:46 +07:00

40 lines
1.0 KiB
TypeScript

import { useMutation, useQueryClient } from '@tanstack/react-query';
import toast from 'react-hot-toast';
// Services
import { createUser as createUserFn } from '@service/userServices';
// Constants
import { ADD_SUCCESS } from '@constant/messages';
// Hooks
import { useUserRoomAvailable } from '@hook/useUserRoomAvailable';
/**
* Create user in database
* @returns The status of creating users and createUser function
*/
const useCreateUser = () => {
const queryClient = useQueryClient();
const { dispatch } = useUserRoomAvailable();
const { mutate: createUser, isPending: isCreating } = useMutation({
mutationFn: createUserFn,
onSuccess: (user) => {
toast.success(ADD_SUCCESS);
queryClient.invalidateQueries({ queryKey: ['users'] });
// Add user to global statement
dispatch!({
type: 'addUser',
payload: [{ id: user.id, name: user.name }],
});
},
onError: (err) => toast.error(err.message),
});
return { isCreating, createUser };
};
export { useCreateUser };