import { create } from 'zustand' import { devtools } from 'zustand/middleware' import { fetchJSON } from '@/utils/request' export const fetchHotelList = async (hotelName, checkinDateString, checkoutDateString) => { const { errcode, data } = await fetchJSON( 'http://202.103.68.93:3002/search_hotel', { keyword: hotelName, checkin: checkinDateString, checkout: checkoutDateString } ) return errcode !== 0 ? {} : data } export const fetchAvailability = async (hotelId, checkinDateString, checkoutDateString, adultCount=2, roomCount=1) => { const { errcode, data } = await fetchJSON( 'http://202.103.68.93:3002/availability', { hotel_id: hotelId, checkin: checkinDateString, checkout: checkoutDateString, adults: adultCount, rooms: roomCount } ) return errcode !== 0 ? {} : data } const useHotelStore = create(devtools((set) => ({ selectedHotel: null, hotelList: [], roomList: [], selectHotel: (hotel) => { set(() => ({ selectedHotel: hotel })) }, searchByCriteria: async(formValues) => { const resultArray = await fetchHotelList( formValues.hotelName, formValues.dataRange[0].format('YYYY-MM-DD'), formValues.dataRange[1].format('YYYY-MM-DD') ) set(() => ({ hotelList: resultArray })) }, getRoomListByHotel: async(hotelId, checkin, checkout, adultCount=2, roomCount=1) => { const resultArray = await fetchAvailability( hotelId, checkin, checkout, adultCount, roomCount ) set(() => ({ roomList: resultArray })) }, }), { name: 'hotelStore' })) export default useHotelStore