Create booking hooks and update room, user hooks

This commit is contained in:
2023-11-30 09:17:16 +07:00
parent 5252729544
commit 52cc76d664
7 changed files with 253 additions and 3 deletions
@@ -0,0 +1,43 @@
import toast from 'react-hot-toast';
import { useMutation, useQueryClient } from '@tanstack/react-query';
// Constants
import { CHECKOUT_SUCCESS } from '@constant/messages';
// Hooks
import { useUserRoomAvailable } from '@hook/useUserRoomAvailable';
// Services
import { checkOutBooking as checkOutBookingFn } from '@service/bookingServices';
const useCheckOut = () => {
const queryClient = useQueryClient();
const { dispatch } = useUserRoomAvailable();
const {
mutate: checkOutBooking,
isPending: isChecking,
isSuccess,
} = useMutation({
mutationFn: checkOutBookingFn,
onSuccess: (data) => {
toast.success(CHECKOUT_SUCCESS);
queryClient.invalidateQueries({ queryKey: ['bookings'] });
// Update status room, users
dispatch!({
type: 'updateStatusRoom',
payload: [{ id: data.roomId, status: false }],
});
dispatch!({
type: 'updateStatusUser',
payload: [{ id: data.userId, isBooked: false }],
});
},
onError: (err) => toast.error(err.message),
});
return { checkOutBooking, isChecking, isSuccess };
};
export default useCheckOut;