diff --git a/packages/web/src/components/ModalPopup/Body/BodyRoomSelection.tsx b/packages/web/src/components/ModalPopup/Body/BodyRoomSelection.tsx index e37671da8..a9122a532 100644 --- a/packages/web/src/components/ModalPopup/Body/BodyRoomSelection.tsx +++ b/packages/web/src/components/ModalPopup/Body/BodyRoomSelection.tsx @@ -1,4 +1,4 @@ -import { useCallback, useRef } from "react"; +import { useCallback, useMemo, useRef } from "react"; import { useTranslation } from "react-i18next"; import { useHistory } from "react-router-dom"; @@ -124,6 +124,17 @@ const BodyRoomSelection = ({ roomInfo }: BodyRoomSelectionProps) => { isLogin && myRooms && myRooms.ongoing.length >= MAX_PARTICIPATION; // 최대 참여 가능한 방 개수를 초과했는지 여부 const isDepart = useIsTimeOver(dayServerToClient(roomInfo.time)); // 방 출발 여부 + const notPaid = useMemo(() => { + const myOngoingRoom = myRooms?.ongoing.slice() ?? []; + const notPaid = myOngoingRoom.find( + (room) => + room.part.find((item: any) => item._id === loginInfo?.oid) + .isSettlement === "send-required" && room.isDeparted + ); // 다른 사람이 정산을 올렸으나 내가 아직 송금하지 않은 방이 있는지 여부 (추가 입장 제한에 사용) + return notPaid; + }, [myRooms]); // myOngoingRoom은 infoSection의 sortedMyRoom에서 정렬만 뺀 코드입니다. useMemo로 감싼 형태입니다. + // item : any 가 좋은 방법인지 모르겠습니다 + const requestJoin = useCallback(async () => { if (isAlreadyPart) { // 이미 참여 중인 방에서 버튼을 누르면 API 호출 관련 로직을 건너뛰고 해당 방으로 이동합니다. @@ -210,7 +221,9 @@ const BodyRoomSelection = ({ roomInfo }: BodyRoomSelectionProps) => { {isLogin || isRoomFull || isDepart ? (