Files
react-training/hotel-management/src/hooks/rooms/useCreateRoom.ts
T
2023-11-29 15:21:04 +07:00

44 lines
1.1 KiB
TypeScript

import { useMutation, useQueryClient } from '@tanstack/react-query';
import toast from 'react-hot-toast';
// Services
import { createRoom as createRoomFn } from '@service/roomServices';
// Constants
import { ADD_SUCCESS } from '@constant/messages';
// Hooks
import { useUserRoomAvailable } from '@hook/useUserRoomAvailable';
/**
* Create room on database
* @returns The boolean of isCreating and create room function
*/
const useCreateRoom = () => {
const queryClient = useQueryClient();
const { dispatch } = useUserRoomAvailable();
const {
mutate: createRoom,
isPending: isCreating,
isSuccess,
} = useMutation({
mutationFn: createRoomFn,
onSuccess: (room) => {
toast.success(ADD_SUCCESS);
queryClient.invalidateQueries({ queryKey: ['rooms'] });
// Add room available to global state
dispatch!({
type: 'addRoom',
payload: [{ id: room.id, name: room.name }],
});
},
onError: (err) => toast.error(err.message),
});
return { isCreating, createRoom, isSuccess };
};
export { useCreateRoom };