All files / apps/host/src/hooks useRoom.ts

100% Statements 15/15
0% Branches 0/1
100% Functions 9/9
100% Lines 15/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76                            1x 2x     1x   1x   1x                         1x 1x     1x   1x       1x                       1x 1x     1x   1x         1x              
import { useQuery } from '@tanstack/react-query';
 
import { REQUEST_POLICY, runRequestEffect } from '@repo/services/effectRequest';
 
import { ENDPOINTS, QUERY_KEYS } from '@/constants/apis';
 
import { MeetingRoom, MeetingRoomBooked, RoomBase } from '@/types/room';
 
import { https } from '@/services/mainHttpClient';
 
interface RoomsResponse {
  data: RoomBase[];
}
 
export const useGetRooms = (disabled = true) => {
  return useQuery<RoomBase[]>({
    queryKey: [QUERY_KEYS.ROOMS],
    queryFn: ({ signal: querySignal }) =>
      runRequestEffect(
        async signal => {
          const response = await https.get<RoomsResponse>(ENDPOINTS.ROOMS, { signal });
 
          return response.data.data;
        },
        REQUEST_POLICY.READ,
        querySignal,
      ),
    enabled: !disabled,
  });
};
 
interface MeetingRoomsResponse {
  data: MeetingRoom[];
}
 
export const useGetMeetingRooms = () => {
  return useQuery<MeetingRoom[]>({
    queryKey: [QUERY_KEYS.MEETING_ROOMS],
    queryFn: ({ signal: querySignal }) =>
      runRequestEffect(
        async signal => {
          const response = await https.get<MeetingRoomsResponse>(ENDPOINTS.MEETING_ROOMS, {
            signal,
          });
 
          return response.data.data;
        },
        REQUEST_POLICY.READ,
        querySignal,
      ),
  });
};
 
interface MeetingRoomsBookedResponse {
  data: MeetingRoomBooked[];
}
 
export const useGetMeetingRoomsBooked = () => {
  return useQuery<MeetingRoomBooked[]>({
    queryKey: [QUERY_KEYS.MEETING_ROOMS_BOOKED],
    queryFn: ({ signal: querySignal }) =>
      runRequestEffect(
        async signal => {
          const response = await https.get<MeetingRoomsBookedResponse>(
            ENDPOINTS.MEETING_ROOMS_BOOKED,
            { signal },
          );
 
          return response.data.data;
        },
        REQUEST_POLICY.READ,
        querySignal,
      ),
  });
};