diff --git a/src/apis/domains/booth/_interfaces.ts b/src/apis/domains/booth/_interfaces.ts index 8d40d09..fde2cf4 100644 --- a/src/apis/domains/booth/_interfaces.ts +++ b/src/apis/domains/booth/_interfaces.ts @@ -1,33 +1,60 @@ +import { Booth, BoothsElement } from "@interfaces/booth"; import { BoothStatus, WaitingStatus } from "@linenow-types/status"; -export interface Image { +interface Image { image: string; } -// Booth 인터페이스 정의 -export interface Booth { +interface Menu { + name: string; + price: string; +} + +export interface GetBoothResponse { id: number; - name?: string; - description?: string; - location?: string; - caution?: string; + name: string; + description: string; + location: string; + caution: string; + is_operated: BoothStatus; - images?: Image[]; - menu?: { name: string; price: number }[]; + images: Image[]; + menu: Menu[]; + open_time: string; - close_time?: string; - waiting_count?: number; - is_waiting?: boolean; - waiting_status?: WaitingStatus; + close_time: string; + + waiting_count: number; + total_waiting_teams: number; + waiting_teams_ahead: number; + + is_waiting: boolean; waiting_id?: number; - total_waiting_teams?: number; - waiting_teams_ahead?: number; + waiting_status: WaitingStatus; } -// GetBoothResponse 함수 정의 -export const GetBoothResponse = (response: Booth): Booth => { +export interface GetBoothsResponse + extends Array<{ + id: number; + name: string; + description: string; + location: string; + + is_operated: BoothStatus; + thumbnail: string; + + waiting_count: number; + total_waiting_teams: number; + + is_waiting: boolean; + waiting_status: WaitingStatus | null; + }> {} + +export const transformGetBoothResponse = ( + response: GetBoothResponse +): Booth => { return { - id: response.id, + boothID: response.id, name: response.name, description: response.description, location: response.location, @@ -38,14 +65,31 @@ export const GetBoothResponse = (response: Booth): Booth => { name: item.name, price: item.price, })) || [], - open_time: response.open_time, - close_time: response.close_time, - waiting_count: response.waiting_count, - is_waiting: response.is_waiting, - waiting_status: response.waiting_status, - is_operated: response.is_operated, - waiting_id: response.waiting_id, - total_waiting_teams: response.total_waiting_teams, - waiting_teams_ahead: response.waiting_teams_ahead, + openTime: response.open_time, + closeTime: response.close_time, + waitingCount: response.waiting_count, + isWaiting: response.is_waiting, + waitingStatus: response.waiting_status, + isOperated: response.is_operated, + waitingID: response.waiting_id, + totalWaitingTeams: response.total_waiting_teams, + waitingTeamsAhead: response.waiting_teams_ahead, }; }; + +export const transformgetBoothsResponse = ( + response: GetBoothsResponse +): BoothsElement[] => { + return response.map((item) => ({ + boothID: item.id, + name: item.name, + thumbnail: item.thumbnail, + description: item.description, + location: item.location, + isOperated: item.is_operated, + waitingCount: item.waiting_count, + totalWaitingTeams: item.total_waiting_teams, + isWaiting: item.is_waiting, + waitingStatus: item.waiting_status, + })); +}; diff --git a/src/apis/domains/booth/apis.ts b/src/apis/domains/booth/apis.ts index 03b1740..32cc1fb 100644 --- a/src/apis/domains/booth/apis.ts +++ b/src/apis/domains/booth/apis.ts @@ -1,14 +1,41 @@ +// api method import { getResponse } from "@apis/instance"; -import { Booth, GetBoothResponse } from "./_interfaces"; +// types +import { Booth, BoothsElement } from "@interfaces/booth"; +import { + GetBoothResponse, + GetBoothsResponse, + transformGetBoothResponse, + transformgetBoothsResponse, +} from "./_interfaces"; + +// get booth : - 부스 상세 export interface GetBoothRequest { - boothId: number; + boothID: number; } export const getBooth = async ({ - boothId, + ...props }: GetBoothRequest): Promise => { - const response = await getResponse(`/api/v1/booths/${boothId}`); + const response = await getResponse( + `/api/v1/booths/${props.boothID}` + ); + + return response ? transformGetBoothResponse(response) : null; +}; + +// get booths : - 부스 리스트 +export interface GetBoothsRequest { + ordering: string; +} + +export const getBoothList = async ({ + ...props +}: GetBoothsRequest): Promise => { + const response = await getResponse( + `/api/v1/booths?ordering=${props.ordering}` + ); - return response ? GetBoothResponse(response) : null; + return response ? transformgetBoothsResponse(response) : []; }; diff --git a/src/apis/domains/booth/queries.ts b/src/apis/domains/booth/queries.ts index 087be8b..e4ac4e2 100644 --- a/src/apis/domains/booth/queries.ts +++ b/src/apis/domains/booth/queries.ts @@ -1,3 +1,4 @@ export const BOOTH_QUERY_KEY = { BOOTH: "booth", + BOOTHS: "booths", }; diff --git a/src/apis/domains/boothList/_interfaces.ts b/src/apis/domains/boothList/_interfaces.ts deleted file mode 100644 index 8bf8266..0000000 --- a/src/apis/domains/boothList/_interfaces.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { BoothStatus, WaitingStatus } from "@linenow-types/status"; - -export interface BoothList { - id: number; - name: string; - description: string; - location: string; - is_operated: BoothStatus; - thumbnail: string; - waiting_count: number; - is_waiting: boolean; - waiting_status: WaitingStatus | null; - total_waiting_teams: number; -} - -export const GetBoothListResponse = (response: BoothList) => { - return { - id: response.id, - name: response.name, - description: response.description, - location: response.location, - is_operated: response.is_operated, - thumbnail: response.thumbnail, - waiting_count: response.waiting_count, - is_waiting: response.is_waiting, - waiting_status: response.waiting_status, - total_waiting_teams: response.total_waiting_teams, - }; -}; diff --git a/src/apis/domains/boothList/apis.ts b/src/apis/domains/boothList/apis.ts deleted file mode 100644 index af37a41..0000000 --- a/src/apis/domains/boothList/apis.ts +++ /dev/null @@ -1,20 +0,0 @@ -// api method -import { getResponse } from "@apis/instance"; - -// types -import { GetBoothListResponse, BoothList } from "./_interfaces"; - -// get boothList : 부스 리스트 - -interface GetBoothRequest { - ordering: string; -} -export const getBoothList = async ({ - ordering, -}: GetBoothRequest): Promise => { - const response = await getResponse( - `/api/v1/booths?ordering=${ordering}` - ); - - return response ? response.map(GetBoothListResponse) : []; -}; diff --git a/src/apis/domains/boothList/queries.ts b/src/apis/domains/boothList/queries.ts deleted file mode 100644 index f6d98b4..0000000 --- a/src/apis/domains/boothList/queries.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const BOOTH_QUERY_KEY = { - BOOTH_LIST: "boothList", -}; diff --git a/src/apis/domains/waiting/_interfaces.ts b/src/apis/domains/waiting/_interfaces.ts index ebdf16a..b2b9e65 100644 --- a/src/apis/domains/waiting/_interfaces.ts +++ b/src/apis/domains/waiting/_interfaces.ts @@ -1,4 +1,4 @@ -import { postResponse } from "@apis/instance"; +import { postResponseNew } from "@apis/instance"; import { Waiting } from "@interfaces/waiting"; import { WaitingStatus } from "@linenow-types/status"; @@ -13,6 +13,7 @@ export interface GetWaitingResponse { // confirmed_at?: string; // canceled_at?: string; waiting_teams_ahead: number; + total_waiting_teams: number; confirm_due_time: string; arrival_due_time: string; } @@ -34,8 +35,9 @@ export const transformGetWaitingResponse = ( waitingID: response.id, waitingStatus: response.waiting_status, waitingTeamsAhead: response.waiting_teams_ahead, + totalWaitingTeams: response.total_waiting_teams, - party_size: response.party_size, + partySize: response.party_size, confirmDueTime: response.confirm_due_time, arrivalarrivalDueTime: response.arrival_due_time, @@ -63,25 +65,32 @@ export const transformGetWaitingsResponse = ( // 대기 줄서기 등록 요청 인터페이스 export interface RegisterWaitingRequest { - boothId: number; + boothID: number; + partySize: number; +} + +interface PostWaitingRegisterBody { party_size: number; } -export interface PostWaitingRegisterProps extends Waiting { - id?: number; +export interface PostWaitingRegisterResponse { + id: number; } + // 대기 줄서기 등록 함수 export const postWaitingRegister = async ({ - boothId, - party_size, -}: RegisterWaitingRequest): Promise => { - const response = await postResponse( - `api/v1/waitings/${boothId}/register`, - { party_size } - ); + ...props +}: RegisterWaitingRequest): Promise => { + const response = await postResponseNew< + PostWaitingRegisterBody, + PostWaitingRegisterResponse + >(`api/v1/waitings/${props.boothID}/register`, { + party_size: props.partySize, + }); if (response) { return response; + } else { + throw new Error("post error"); } - return null; }; diff --git a/src/apis/domains/waitingDetail/_interfaces.ts b/src/apis/domains/waitingDetail/_interfaces.ts deleted file mode 100644 index 46d07cd..0000000 --- a/src/apis/domains/waitingDetail/_interfaces.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { WaitingStatus } from "@linenow-types/status"; - -export interface WaitingDetail { - id?: number; - username?: string; - booth: { - booth_id?: number; - name?: string; - description: string; - location: string; - thumbnail?: string; - }; - party_size?: number; - waiting_status?: WaitingStatus; - registered_at?: string | null; - ready_to_confirm_at?: string | null; - confirmed_at?: string | null; - canceled_at?: string | null; - waiting_teams_ahead?: number; - total_waiting_teams?: number; - confirm_remaining_time?: "00:00"; - arrival_remaining_time?: "00:00"; -} - -export const GetWaitingDetailResponse = ( - response: WaitingDetail -): WaitingDetail => { - return { - id: response.id, - username: response.username, - booth: { - booth_id: response.booth?.booth_id, - name: response.booth?.name, - description: response.booth?.description, - location: response.booth?.location, - thumbnail: response.booth?.thumbnail, - }, - party_size: response.party_size, - waiting_status: response.waiting_status, - registered_at: response.registered_at, - ready_to_confirm_at: response.ready_to_confirm_at, - confirmed_at: response.confirmed_at, - canceled_at: response.canceled_at, - waiting_teams_ahead: response.waiting_teams_ahead, - total_waiting_teams: response.total_waiting_teams, - confirm_remaining_time: response.confirm_remaining_time, - arrival_remaining_time: response.arrival_remaining_time, - }; -}; diff --git a/src/apis/domains/waitingDetail/apis.ts b/src/apis/domains/waitingDetail/apis.ts deleted file mode 100644 index abe0183..0000000 --- a/src/apis/domains/waitingDetail/apis.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { getResponse } from "@apis/instance"; -import { WaitingDetail } from "@interfaces/waitingDetail"; - -export interface GetWaitingDetailRequest { - waitingID: number; -} - -export const getWaitingDetail = async ({ - waitingID, -}: GetWaitingDetailRequest): Promise => { - const response = await getResponse( - `/api/v1/waitings/${waitingID}` - ); - return response; -}; diff --git a/src/apis/domains/waitingDetail/queries.ts b/src/apis/domains/waitingDetail/queries.ts deleted file mode 100644 index 02dd117..0000000 --- a/src/apis/domains/waitingDetail/queries.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const WAITING_DETAIL_QUERY_KEY = { - WAITING_DETAIL: "waitingDetail", -}; diff --git a/src/apis/dummy/dummyBoothDetailResponse.ts b/src/apis/dummy/dummyBoothDetailResponse.ts deleted file mode 100644 index 8834ec2..0000000 --- a/src/apis/dummy/dummyBoothDetailResponse.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { BoothDetail } from "@interfaces/boothDeatil"; - -// 저도 gpt가 짜준거에요.. 오해 없으시길 하하,, - -export const dummyBoothDetailResponse: BoothDetail[] = [ - { - boothID: 1, - name: "멋쟁이사자처럼", - description: `나는 읽기 쉬운 마음이야 - 당신도 쓱 훑고 가셔요 - 달랠 길 없는 외로운 마음 있지 - 머물다 가셔요 - 내게 긴 여운을 남겨줘요 - 사랑을, 사랑을 해줘요 - 할 수 있다면 그럴 수만 있다면 - 새하얀 빛으로 그댈 비춰 줄게요 - 그러다 밤이 찾아오면 - 우리 둘만의 비밀을 새겨요 - 추억할 그 밤 위에 갈피를 꽂고선 - 남몰래 펼쳐보아요 - 나의 자라나는 마음을 - 못 본채 꺾어 버릴 순 없네`, - location: "동국대학교 명진관", - isOperated: "운영 중", - images: [ - { - image: "/images/image_thumbnail_1.png", - }, - ], - menu: ["영심: 2,000원", "영심이: 10,000원", "찬주: 100원"], - openTime: "2024-09-20T10:27:56", - closeTime: "2024-09-26T10:27:59", - waitingCount: 2, - isWaiting: true, - waitingStatus: "waiting", - }, - { - boothID: 2, - name: "동대 사자 부스", - description: "여기는 사자 부스입니다.", - location: "동국대학교 팔정도", - isOperated: "운영 중", - images: [ - { - image: "/images/image_thumbnail_2.png", - }, - ], - menu: ["사자고기: 50,000원", "사자음료: 5,000원"], - openTime: "2024-09-21T10:00:00", - closeTime: "2024-09-27T18:00:00", - waitingCount: 3, - isWaiting: true, - waitingStatus: "waiting", - }, - { - boothID: 3, - name: "부스 3", - description: "부스 3 설명입니다.", - location: "동국대학교 신공학관", - isOperated: "운영 중", - images: [ - { - image: "/images/image_thumbnail_1.png", - }, - ], - menu: ["아이템 1: 1,000원", "아이템 2: 5,000원"], - openTime: "2024-09-22T09:00:00", - closeTime: "2024-09-28T17:00:00", - waitingCount: 5, - isWaiting: true, - waitingStatus: "waiting", - }, - { - boothID: 4, - name: "부스 4", - description: "부스 4 설명입니다.", - location: "동국대학교 원흥관", - isOperated: "운영 중", - images: [ - { - image: "/images/image_thumbnail_2.png", - }, - ], - menu: ["메뉴1: 10,000원", "메뉴2: 15,000원"], - openTime: "2024-09-23T11:00:00", - closeTime: "2024-09-29T20:00:00", - waitingCount: 0, - isWaiting: false, - waitingStatus: "canceled", - }, -]; diff --git a/src/components/boothCard/boothCardDetail.tsx b/src/components/boothCard/boothCardDetail.tsx index aaaf279..edd5d5e 100644 --- a/src/components/boothCard/boothCardDetail.tsx +++ b/src/components/boothCard/boothCardDetail.tsx @@ -1,8 +1,8 @@ +import { Waiting } from "@interfaces/waiting"; import BoothCardLayout from "./boothCardLayout"; -import { WaitingDetail } from "@interfaces/waitingDetail"; interface BoothCardDetailProps { - waitingDetail: WaitingDetail; + waitingDetail: Waiting; } const BoothCardDetail = ({ waitingDetail }: BoothCardDetailProps) => { @@ -11,16 +11,16 @@ const BoothCardDetail = ({ waitingDetail }: BoothCardDetailProps) => { {waitingDetail ? ( - {waitingDetail.party_size}명 + {waitingDetail.partySize}명 · {waitingDetail.booth?.name} } - boothSummary={waitingDetail.booth.description} - boothLocationInfo={waitingDetail.booth.location} + boothSummary={waitingDetail.booth?.description} + boothLocationInfo={waitingDetail.booth?.location} /> ) : ( //TODO:- 엠티뷰 만들기 diff --git a/src/components/boothCard/boothCardLayout.tsx b/src/components/boothCard/boothCardLayout.tsx index ae8167e..79fa8d5 100644 --- a/src/components/boothCard/boothCardLayout.tsx +++ b/src/components/boothCard/boothCardLayout.tsx @@ -4,8 +4,8 @@ import * as S from "./BoothCard.styled"; interface BoothCardProps { type: "main" | "waiting"; boothTitle: React.ReactNode; - boothSummary: string; - boothLocationInfo: string; + boothSummary?: string; + boothLocationInfo?: string; boothImage?: string; children?: React.ReactNode; to?: string; diff --git a/src/components/boothCard/boothCardMain.tsx b/src/components/boothCard/boothCardMain.tsx index 9e78a9b..6017897 100644 --- a/src/components/boothCard/boothCardMain.tsx +++ b/src/components/boothCard/boothCardMain.tsx @@ -1,27 +1,27 @@ import * as S from "./BoothCard.styled"; import Chip from "@components/chip/Chip"; import BoothCardLayout from "./boothCardLayout"; -import { BoothList } from "@apis/domains/boothList/_interfaces"; +import { BoothsElement } from "@interfaces/booth"; interface BoothCardProps { - booth: BoothList; + booth: BoothsElement; } const BoothCardMain = ({ booth }: BoothCardProps) => { const getWaitingChip = () => { - if (booth.is_waiting) { + if (booth.isWaiting) { return 대기 중; } }; const getChip = () => { - switch (booth.is_operated) { + switch (booth.isOperated) { case "not_started": return 운영 전; case "finished": return 운영 종료; default: return ( - 대기 {booth.total_waiting_teams} 팀 + 대기 {booth.totalWaitingTeams} 팀 ); } }; @@ -32,7 +32,7 @@ const BoothCardMain = ({ booth }: BoothCardProps) => { boothTitle={booth.name} boothSummary={booth.description} boothLocationInfo={booth.location} - to={`/booth/${booth.id}`} + to={`/booth/${booth.boothID}`} > {getWaitingChip()} diff --git a/src/components/entrance/Entrance.tsx b/src/components/entrance/Entrance.tsx index 8e771fb..8510690 100644 --- a/src/components/entrance/Entrance.tsx +++ b/src/components/entrance/Entrance.tsx @@ -5,13 +5,13 @@ import * as S from "./Entrance.styled"; import { handleConfirmEntry, handleCancelEntry } from "./entranceUtils"; // import useTimer from "@hooks/useTimer"; -import { getWaitingDetail } from "@apis/domains/waitingDetail/apis"; import { useEffect, useState } from "react"; -import { WaitingDetail } from "@interfaces/waitingDetail"; import useModal from "@hooks/useModal"; import useCountdown from "@hooks/useCountdown"; import { usePostConfirm } from "@hooks/apis/entry"; import { usePostWaitingCancel } from "@hooks/apis/waiting"; +import { Waiting } from "@interfaces/waiting"; +import { getWaiting } from "@apis/domains/waiting/apis"; export interface EntranceProps { targetTime: string; @@ -27,14 +27,12 @@ export const Entrance = ({ waitingID, targetTime }: EntranceProps) => { const { openModal, closeModal } = useModal(); - const [waitingDetail, setWaitingDetail] = useState( - null - ); + const [waitingDetail, setWaitingDetail] = useState(null); useEffect(() => { const fetchWaitingDetail = async () => { if (waitingID) { - const detail = await getWaitingDetail({ waitingID: waitingID }); + const detail = await getWaiting({ waitingID: waitingID }); setWaitingDetail(detail); } }; diff --git a/src/components/waitingCard/WaitingCard.tsx b/src/components/waitingCard/WaitingCard.tsx index e5b48b5..cafe50d 100644 --- a/src/components/waitingCard/WaitingCard.tsx +++ b/src/components/waitingCard/WaitingCard.tsx @@ -18,7 +18,7 @@ interface WaitingCardProps { | "waitingID" | "waitingTeamsAhead" | "booth" - | "party_size" + | "partySize" | "waitingStatus" | "confirmDueTime" | "arrivalarrivalDueTime" @@ -106,7 +106,7 @@ const WaitingCard = ({ waiting, disableClick = false }: WaitingCardProps) => { /> - {waiting.party_size || 0}명 + {waiting.partySize || 0}명 · {waiting.booth?.name || "부스명 없음"} diff --git a/src/hooks/apis/booth.ts b/src/hooks/apis/booth.ts index bfb2473..8517160 100644 --- a/src/hooks/apis/booth.ts +++ b/src/hooks/apis/booth.ts @@ -1,12 +1,11 @@ import { useQuery } from "@tanstack/react-query"; import { BOOTH_QUERY_KEY } from "@apis/domains/booth/queries"; -import { getBooth } from "@apis/domains/booth/apis"; +import { getBooth, GetBoothRequest } from "@apis/domains/booth/apis"; -export const useGetBooth = (boothId: number | null) => { +export const useGetBooth = ({ ...props }: GetBoothRequest) => { return useQuery({ - queryKey: [BOOTH_QUERY_KEY.BOOTH, boothId], - queryFn: () => getBooth({ boothId: boothId! }), - enabled: boothId !== null, + queryKey: [BOOTH_QUERY_KEY.BOOTH, props.boothID], + queryFn: () => getBooth(props), }); }; diff --git a/src/hooks/apis/boothList.ts b/src/hooks/apis/boothList.ts index 239daf0..62a379b 100644 --- a/src/hooks/apis/boothList.ts +++ b/src/hooks/apis/boothList.ts @@ -1,11 +1,10 @@ +import { BOOTH_QUERY_KEY } from "@apis/domains/booth/queries"; import { useQuery } from "@tanstack/react-query"; +import { getBoothList, GetBoothsRequest } from "@apis/domains/booth/apis"; -import { BOOTH_QUERY_KEY } from "@apis/domains/boothList/queries"; -import { getBoothList } from "@apis/domains/boothList/apis"; - -export const useGetBoothList = (ordering: string) => { +export const useGetBoothList = ({ ...props }: GetBoothsRequest) => { return useQuery({ - queryKey: [BOOTH_QUERY_KEY.BOOTH_LIST, ordering], - queryFn: () => getBoothList({ ordering }), + queryKey: [BOOTH_QUERY_KEY.BOOTHS, props.ordering], + queryFn: () => getBoothList(props), }); }; diff --git a/src/hooks/apis/waiting.ts b/src/hooks/apis/waiting.ts index 81cd911..47801e3 100644 --- a/src/hooks/apis/waiting.ts +++ b/src/hooks/apis/waiting.ts @@ -13,7 +13,7 @@ import useModal from "@hooks/useModal"; import useIsLoading from "@hooks/useIsLoading"; import { postWaitingRegister, - PostWaitingRegisterProps, + PostWaitingRegisterResponse, RegisterWaitingRequest, } from "@apis/domains/waiting/_interfaces"; @@ -78,12 +78,12 @@ export const usePostWaitingRegister = () => { return useMutation({ mutationKey: ["waiting_register"], mutationFn: async ({ - boothId, - party_size, - }: RegisterWaitingRequest): Promise => { + boothID, + partySize, + }: RegisterWaitingRequest): Promise => { try { setLoadings({ isFullLoading: true }); - return await postWaitingRegister({ boothId, party_size }); + return await postWaitingRegister({ boothID, partySize }); } catch (error) { throw error; } diff --git a/src/hooks/apis/waitingDetail.ts b/src/hooks/apis/waitingDetail.ts deleted file mode 100644 index 4e12eb0..0000000 --- a/src/hooks/apis/waitingDetail.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { useQuery } from "@tanstack/react-query"; - -import { WAITING_DETAIL_QUERY_KEY } from "@apis/domains/waitingDetail/queries"; -import { getWaitingDetail } from "@apis/domains/waitingDetail/apis"; - -export const useGetWaitingDetail = (waitingID: number) => { - return useQuery({ - queryKey: [WAITING_DETAIL_QUERY_KEY.WAITING_DETAIL], - queryFn: () => getWaitingDetail({ waitingID: waitingID! }), - }); -}; diff --git a/src/lib/interfaces/booth.ts b/src/lib/interfaces/booth.ts index 58c4db9..9a2fa71 100644 --- a/src/lib/interfaces/booth.ts +++ b/src/lib/interfaces/booth.ts @@ -1,20 +1,51 @@ +import { BoothStatus, WaitingStatus } from "@linenow-types/status"; + +export interface BoothImage { + image: string; +} + +export interface Menu { + name: string; + price: string; +} + export interface Booth { boothID: number; - thumbnail: string; name: string; description?: string; location: string; - isOperated: boolean; + caution: string; + + images: BoothImage[]; menu: Menu[]; + openTime: string; closeTime: string; + + isOperated: BoothStatus; + + waitingCount: number; + totalWaitingTeams: number; + waitingTeamsAhead: number; + + isWaiting: boolean; + waitingID?: number; + waitingStatus: WaitingStatus; } -export interface BoothBrief - extends Pick< - Booth, - "boothID" | "thumbnail" | "name" | "description" | "location" - > {} +export interface BoothSummary + extends Pick { + thumbnail: string; +} + +export interface BoothsElement + extends BoothSummary, + Pick< + Booth, + "isOperated" | "waitingCount" | "totalWaitingTeams" | "isWaiting" + > { + waitingStatus: WaitingStatus | null; +} export interface Menu { name: string; diff --git a/src/lib/interfaces/boothDeatil.ts b/src/lib/interfaces/boothDeatil.ts deleted file mode 100644 index 6af87a9..0000000 --- a/src/lib/interfaces/boothDeatil.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { WaitingStatus } from "@linenow-types/status"; - -export interface BoothImage { - image: string; -} - -export interface Menu { - item: string; - price: string; -} - -export interface BoothDetail { - boothID: number; - name: string; - description?: string; - location: string; - isOperated: string; - images: BoothImage[]; - menu: string[]; - openTime: string; - closeTime: string; - waitingCount: number; - isWaiting: boolean; - waitingStatus: WaitingStatus; -} diff --git a/src/lib/interfaces/waiting.ts b/src/lib/interfaces/waiting.ts index c48fec0..f4a2639 100644 --- a/src/lib/interfaces/waiting.ts +++ b/src/lib/interfaces/waiting.ts @@ -1,18 +1,22 @@ import { WaitingStatus } from "@linenow-types/status"; -import { BoothBrief } from "@interfaces/booth"; +import { BoothSummary } from "@interfaces/booth"; + +export interface WaitingSummary {} export interface Waiting { waitingID?: number; waitingStatus?: WaitingStatus; - waitingTeamsAhead?: number; + waitingCount?: number; + totalWaitingTeams?: number; + waitingTeamsAhead?: number; - party_size?: number; + partySize?: number; confirmDueTime?: string; arrivalarrivalDueTime?: string; - booth?: BoothBrief; + booth?: BoothSummary; // registeredAt: string; readyToConfirmAt?: string; diff --git a/src/lib/interfaces/waitingDetail.ts b/src/lib/interfaces/waitingDetail.ts deleted file mode 100644 index befe5c6..0000000 --- a/src/lib/interfaces/waitingDetail.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { WaitingStatus } from "@linenow-types/status"; - -export interface WaitingDetail { - id?: number; - username?: string; - booth: { - booth_id?: number; - name?: string; - description: string; - location: string; - thumbnail?: string; - }; - party_size?: number; - waiting_status?: WaitingStatus; - registered_at?: string | null; - ready_to_confirm_at?: string | null; - confirmed_at?: string | null; - canceled_at?: string | null; - waiting_teams_ahead?: number; - total_waiting_teams?: number; - confirm_remaining_time?: "00:00"; - arrival_remaining_time?: "00:00"; -} diff --git a/src/main.tsx b/src/main.tsx index fd8f679..a853e85 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,20 +1,20 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; -import App from './App.tsx'; +// import React from "react"; +import ReactDOM from "react-dom/client"; +import App from "./App.tsx"; -// // mocks -// import { worker } from './mocks/browser.ts'; +// mocks +import { worker } from "./mocks/browser.ts"; -// worker -// .start({ -// onUnhandledRequest: 'bypass', -// }) -// .then(() => { -// ReactDOM.createRoot(document.getElementById('root')!).render(); -// }); +worker + .start({ + onUnhandledRequest: "bypass", + }) + .then(() => { + ReactDOM.createRoot(document.getElementById("root")!).render(); + }); -ReactDOM.createRoot(document.getElementById('root')!).render( - - - -); \ No newline at end of file +// ReactDOM.createRoot(document.getElementById('root')!).render( +// +// +// +// ); diff --git a/src/pages/boothDetail/BoothDetailPage.tsx b/src/pages/boothDetail/BoothDetailPage.tsx index d53086e..5aace27 100644 --- a/src/pages/boothDetail/BoothDetailPage.tsx +++ b/src/pages/boothDetail/BoothDetailPage.tsx @@ -29,7 +29,7 @@ const BoothDetailPage = () => { const boothNumber = boothId ? parseInt(boothId, 10) : null; - const { data: booth, isLoading } = useGetBooth(boothNumber || 0); + const { data: booth, isLoading } = useGetBooth({ boothID: boothNumber || 0 }); // TODO:- 이거 누군가는 고쳐주세요... atom쓰는걸로... const [isModalOpen, setIsModalOpen] = useState(false); @@ -52,7 +52,7 @@ const BoothDetailPage = () => { title: "정말 대기를 취소하시겠어요?", sub: "대기를 취소하면 현재 줄 서기가 사라져요.\n그래도 취소하실건가요?", primaryButton: { - onClick: () => postWaitingCancel(booth?.waiting_id || 0), + onClick: () => postWaitingCancel(booth?.waitingID || 0), }, secondButton: { children: "이전으로", @@ -60,7 +60,7 @@ const BoothDetailPage = () => { }; const getInformationTitle = () => { - switch (booth?.is_operated) { + switch (booth?.isOperated) { case "not_started": return "부스 운영 예상 시간"; case "finished": @@ -71,9 +71,9 @@ const BoothDetailPage = () => { }; const getInformationSub = () => { - switch (booth?.is_operated) { + switch (booth?.isOperated) { case "not_started": - return new Date(booth.open_time).toLocaleTimeString("ko-KR", { + return new Date(booth.openTime).toLocaleTimeString("ko-KR", { hour: "2-digit", minute: "2-digit", }); @@ -81,17 +81,17 @@ const BoothDetailPage = () => { case "finished": return undefined; default: - return `${booth?.total_waiting_teams || 0}팀`; + return `${booth?.totalWaitingTeams || 0}팀`; } }; const getInformationButton = () => { - if (booth?.is_waiting) { + if (booth?.isWaiting) { return ( <> 대기 취소하기 @@ -99,7 +99,7 @@ const BoothDetailPage = () => { ); } - switch (booth?.is_operated) { + switch (booth?.isOperated) { case "not_started": return ( 대기 취소하기