Skip to content

fix: 완료된 모임방 접근 개선 #292

Merged
ho0010 merged 4 commits into
developfrom
fix/QA10-3
Nov 3, 2025
Merged

fix: 완료된 모임방 접근 개선 #292
ho0010 merged 4 commits into
developfrom
fix/QA10-3

Conversation

@ho0010
Copy link
Copy Markdown
Collaborator

@ho0010 ho0010 commented Nov 2, 2025

#️⃣연관된 이슈

10월 5주차 QA 사항 - 호준
#279

📝작업 내용

  • 모임 메인 페이지 사용성 개선 2차 작업

    • (현재) 완료된 모임방 페이지 따로 존재 ⇒ (수정) 내 모임방 페이지에서 완료된 모임방 탭으로 한번에 제시
image image image

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 그룹 목록에 "완료" 탭 추가 — 완료된 그룹 별도 조회 및 무한 로드 지원
  • 개선 사항

    • 그룹 카드의 완료 표시 개선 — 완료 상태일 때 마감일/모집 정보 간소화
    • 헤더 버튼 동작 정리 — 홈에서만 왼쪽 버튼 표시
    • 피드 렌더링 안정성 향상 (목록 항목 키 처리)
  • 제거

    • 완료 그룹 전용 모달 제거 — 관련 UI/데이터 뷰 삭제

@vercel
Copy link
Copy Markdown

vercel Bot commented Nov 2, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
thip Ready Ready Preview Comment Nov 2, 2025 7:03am

@ho0010 ho0010 self-assigned this Nov 2, 2025
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Nov 2, 2025

Walkthrough

완료된 그룹 모달을 삭제하고 MyGroupModal에 완료 탭을 추가해 해당 그룹들을 통합했습니다. GroupCard에 isCompleted prop이 추가되었고 MainHeader와 TotalFeed의 소소한 렌더/마크업 정리가 적용되었습니다.

Changes

Cohort / File(s) 변경 요약
모달 통합 및 네비게이션
src/components/group/MyGroupModal.tsx, src/pages/group/Group.tsx
CompletedGroupModal 삭제 후 MyGroupModal에 완료 탭 추가, 탭별 roomType'expired' 매핑, 스크롤 기반 로드/페이징 로직(중복 방지/nextCursor/isLast), 탭 전환 시 상태/스크롤 초기화, 완료 탭에서 isCompleted 전달 및 완료 그룹 클릭 시 joined-detail로 네비게이션. Group.tsx의 MainHeader 왼쪽 버튼이 MyGroupModal을 열도록 변경
삭제된 컴포넌트
src/components/group/CompletedGroupModal.tsx
파일 전체 삭제(컴포넌트, 인터페이스, 데이터 페칭, 상태관리, 스타일 전부 제거)
카드 컴포넌트 업데이트
src/components/group/GroupCard.tsx
isCompleted?: boolean prop 추가, 완료 상태일 때 모집 인원/마감일 표현 조정(마감일 블록 제거, 참여자 라인 텍스트 변경), 참여자 레이아웃 간격 조정
헤더 UI 조정
src/components/common/MainHeader.tsx
group-done 로고 임포트 및 기존 분기 제거; 왼쪽 IconButton을 type === 'home'일 때만 렌더링하도록 단순화(오른쪽 알림 로직 유지)
피드 마크업 개선
src/components/feed/TotalFeed.tsx
FeedPost를 감싼 빈 fragment를 Fragment로 교체하고 key 부여(React.Fragment import 추가)

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant User
    participant GroupPage as "Group Page"
    participant MyModal as "MyGroupModal"
    participant API as "getMyRooms API"
    participant Card as "GroupCard"

    User->>GroupPage: 왼쪽 버튼 클릭
    GroupPage->>MyModal: MyGroupModal 열기
    User->>MyModal: '완료' 탭 선택
    MyModal->>API: getMyRooms(type='expired', cursor?)
    API-->>MyModal: rooms + nextCursor/isLast
    MyModal->>Card: 렌더링 (isCompleted=true)
    Card->>Card: 마감일 숨김, 참여자 텍스트 조정
    alt 스크롤 끝 & 더 있음
        User->>MyModal: 스크롤
        MyModal->>API: loadMore(cursor)
        API-->>MyModal: 추가 rooms
    end
    User->>Card: 완료된 그룹 클릭
    Card->>GroupPage: navigate('joined-detail')
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • 주의 필요 영역:
    • MyGroupModal의 스크롤/페이징(다중 요청 방지, nextCursor/isLast 처리) 검증
    • roomType === 'expired' 경로가 API와 타입 시스템에서 허용되는지 확인
    • GroupCard의 isCompleted 조건부 렌더링이 모든 레이아웃/접근성 케이스에서 올바른지 점검
    • 프로젝트 전역에서 삭제된 CompletedGroupModal에 대한 잔여 참조(임포트/라우트 등) 확인

Possibly related issues

Possibly related PRs

Suggested labels

🐞 BugFix, 🎨 Html&css

Suggested reviewers

  • heeeeyong

Poem

🐰 모달 하나 줄이고 탭 하나 더해,
완료된 그룹들 조용히 모여들네,
카드엔 작은 플래그, 마감일은 숨기고,
스크롤로 더 불러와, 클릭하면 바로 홉! 🥕✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed PR 제목 "fix: 완료된 모임방 접근 개선"은 변경 사항의 핵심을 명확하게 반영하고 있습니다. 이 PR의 주요 변경점은 완료된 모임방을 별도의 모달 페이지에서 사용자의 "나의 모임방" 페이지 내 탭으로 통합하는 것으로, 제목은 이 개선사항을 정확하게 요약하고 있습니다. 제목은 간결하고 명확하며, "완료된 모임방"과 "접근 개선"이라는 구체적인 표현을 통해 팀원들이 변경의 의도를 쉽게 이해할 수 있습니다.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/QA10-3

Warning

Review ran into problems

🔥 Problems

Errors were encountered while retrieving linked issues.

Errors (1)
  • QA10-3: Request failed with status code 404

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between dedc38f and 03853b1.

📒 Files selected for processing (6)
  • src/components/common/MainHeader.tsx (1 hunks)
  • src/components/feed/TotalFeed.tsx (2 hunks)
  • src/components/group/CompletedGroupModal.tsx (0 hunks)
  • src/components/group/GroupCard.tsx (3 hunks)
  • src/components/group/MyGroupModal.tsx (8 hunks)
  • src/pages/group/Group.tsx (1 hunks)
💤 Files with no reviewable changes (1)
  • src/components/group/CompletedGroupModal.tsx
🧰 Additional context used
🧬 Code graph analysis (2)
src/components/common/MainHeader.tsx (1)
src/components/common/IconButton.tsx (1)
  • IconButton (3-7)
src/components/group/MyGroupModal.tsx (1)
src/api/rooms/getMyRooms.ts (1)
  • RoomType (3-3)
🔇 Additional comments (6)
src/components/feed/TotalFeed.tsx (1)

18-24: LGTM!

리스트 렌더링에 명시적인 Fragment와 고유한 key를 사용하는 것은 좋은 패턴입니다. feedIdindex를 조합한 key는 안정적이고 고유합니다.

src/components/group/GroupCard.tsx (2)

16-16: LGTM!

완료된 그룹의 UI를 조정하기 위한 isCompleted prop 추가가 적절합니다. 조건부 렌더링 로직이 명확하며, 완료된 그룹에서는 최대 참여자 수 표시와 마감일 정보를 적절히 숨깁니다.

Also applies to: 40-46


149-149: gap 값 변경에 대한 시각적 검증 권장

gap이 6px에서 4px로 줄어들었습니다. 이 변경이 의도된 것이라면 문제없지만, 시각적으로 참여자 수와 아이콘 사이의 간격이 너무 좁지 않은지 확인해보세요.

src/components/group/MyGroupModal.tsx (3)

142-143: exhaustive-deps 경고를 비활성화하는 이유 명확화 필요

eslint-disable-next-line react-hooks/exhaustive-deps 주석이 있지만, loadMore 함수가 의존성 배열에 포함되지 않은 것으로 보입니다.

다음을 확인해주세요:

  1. loadMore 함수를 의존성 배열에 추가해야 하는지
  2. useCallback으로 loadMore를 감싸서 안정적인 참조를 유지해야 하는지
  3. 현재 경고를 비활성화하는 것이 정말 안전한지

현재 구조에서는 loadMore가 외부에 선언되어 있고 상태에 의존하므로, effect가 최신 상태를 참조하지 못할 가능성이 있습니다.


154-167: LGTM!

완료된 그룹의 네비게이션 로직이 적절하게 구현되었습니다. '완료' 탭에서는 항상 joined 상세 페이지로 이동하고, 다른 상태에서는 그룹의 진행 상태에 따라 적절한 페이지로 라우팅됩니다.


178-186: LGTM!

'완료' 탭 추가 및 관련 UI 업데이트가 잘 구현되었습니다:

  • 탭 렌더링에 '완료' 추가
  • GroupCardisCompleted prop 전달
  • 완료 상태에 맞는 적절한 empty state 메시지

Also applies to: 198-198, 212-223

Comment on lines +42 to +44
{type === 'home' && (
<IconButton onClick={leftButtonClick} src={findUserLogo} alt={'사용자 찾기 아이콘'} />
)}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Group 페이지에서 왼쪽 버튼이 렌더링되지 않는 문제

type === 'home' 조건으로 인해 왼쪽 버튼이 'home' 타입일 때만 렌더링됩니다. 그러나 Group.tsx(Line 107)에서는 type="group"과 함께 leftButtonClick 핸들러를 전달하고 있어, 버튼이 렌더링되지 않아 핸들러가 실행될 수 없습니다.

다음 중 하나를 적용하세요:

방안 1: Group 페이지에서도 왼쪽 버튼 렌더링

-        {type === 'home' && (
+        {(type === 'home' || type === 'group') && (
           <IconButton onClick={leftButtonClick} src={findUserLogo} alt={'사용자 찾기 아이콘'} />
         )}

방안 2: Group.tsx에서 불필요한 leftButtonClick 제거
Group.tsx에서 leftButtonClick prop을 제거하고 MyGroupBox의 클릭만 사용

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{type === 'home' && (
<IconButton onClick={leftButtonClick} src={findUserLogo} alt={'사용자 찾기 아이콘'} />
)}
{(type === 'home' || type === 'group') && (
<IconButton onClick={leftButtonClick} src={findUserLogo} alt={'사용자 찾기 아이콘'} />
)}
🤖 Prompt for AI Agents
In src/components/common/MainHeader.tsx around lines 42 to 44, the left
IconButton is only rendered when type === 'home', so pages using type="group"
(like Group.tsx line 107) pass a leftButtonClick handler that never gets
invoked; either render the left button for the group type as well or remove the
unused leftButtonClick prop from Group.tsx. To fix: update the render condition
to include group (e.g., type === 'home' || type === 'group') so the IconButton
is displayed and leftButtonClick will be called, or alternatively remove
leftButtonClick from Group.tsx and rely on MyGroupBox click handling; ensure
props and types are updated accordingly where you choose the approach.

Comment thread src/components/group/MyGroupModal.tsx Outdated
Comment on lines +55 to +62
const roomType: RoomType | 'expired' =
selected === '진행중'
? 'playing'
: selected === '모집중'
? 'recruiting'
: 'playingAndRecruiting';
: selected === '완료'
? 'expired'
: 'playingAndRecruiting';
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

RoomType 타입 선언 중복 제거

관련 코드 스니펫(src/api/rooms/getMyRooms.ts Line 2)에 따르면, RoomType은 이미 'expired'를 포함하고 있습니다:

export type RoomType = 'playingAndRecruiting' | 'recruiting' | 'playing' | 'expired';

따라서 RoomType | 'expired'는 중복이며 RoomType만 사용하면 됩니다.

다음과 같이 수정하세요:

-        const roomType: RoomType | 'expired' =
+        const roomType: RoomType =
           selected === '진행중'
             ? 'playing'
             : selected === '모집중'
               ? 'recruiting'
               : selected === '완료'
                 ? 'expired'
                 : 'playingAndRecruiting';

Lines 92-99에도 동일하게 적용하세요.

Also applies to: 92-99

🤖 Prompt for AI Agents
In src/components/group/MyGroupModal.tsx around lines 55-62 (and similarly lines
92-99), the union type "RoomType | 'expired'" is redundant because RoomType
already includes 'expired'; update the variable declarations to use RoomType
only, removing the extra | 'expired' from those type annotations so the code
uses RoomType consistently in both places.

Comment thread src/pages/group/Group.tsx Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
src/components/group/MyGroupModal.tsx (1)

92-92: 이전 리뷰에서 지적된 중복 타입 제거 필요

RoomType에 이미 'expired'가 포함되어 있으므로 RoomType | 'expired'는 중복입니다. Line 55에서는 수정되었으나 여기서는 아직 반영되지 않았습니다.

다음과 같이 수정하세요:

-      const roomType: RoomType | 'expired' =
+      const roomType: RoomType =
🧹 Nitpick comments (2)
src/components/group/MyGroupModal.tsx (2)

142-143: ESLint 규칙 비활성화 검토

자동 프리로드 로직에서 loadMore 함수가 의존성 배열에 포함되지 않아 exhaustive-deps 규칙이 비활성화되었습니다. 무한 루프를 방지하기 위한 의도적인 선택으로 보이지만, loadMore 함수를 useCallback으로 감싸고 적절한 의존성을 명시하는 것이 더 안전한 접근일 수 있습니다.


154-167: 내비게이션 로직 정상 작동

'완료' 탭 선택 시 joined detail 페이지로 이동하는 로직이 올바르게 추가되었습니다. '진행중'과 '완료' 모두 동일한 경로로 이동하므로 향후 조건을 통합하여 중복을 줄일 수 있습니다.

선택적으로 다음과 같이 리팩토링할 수 있습니다:

  const handleGroupCardClick = (group: Group) => {
-    if (selected === '완료') {
-      navigate(`/group/detail/joined/${group.id}`);
-    } else if (selected === '모집중') {
+    if (selected === '모집중') {
      navigate(`/group/detail/${group.id}`);
-    } else if (selected === '진행중') {
+    } else if (selected === '진행중' || selected === '완료') {
      navigate(`/group/detail/joined/${group.id}`);
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 03853b1 and 967390c.

📒 Files selected for processing (2)
  • src/components/group/MyGroupModal.tsx (8 hunks)
  • src/pages/group/Group.tsx (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/pages/group/Group.tsx
🧰 Additional context used
🧬 Code graph analysis (1)
src/components/group/MyGroupModal.tsx (1)
src/api/rooms/getMyRooms.ts (1)
  • RoomType (3-3)
🔇 Additional comments (6)
src/components/group/MyGroupModal.tsx (6)

24-24: LGTM!

'완료' 탭 추가에 맞춰 state 타입이 올바르게 확장되었습니다.


55-62: LGTM!

'완료' 탭에 대한 'expired' roomType 매핑이 올바르게 추가되었고, 타입 선언도 정확합니다.


178-178: LGTM!

'완료' 탭이 올바르게 추가되었으며, as const를 통해 타입 안전성도 확보되었습니다.


198-198: LGTM!

isCompleted prop이 올바르게 전달되어 GroupCard가 완료 상태를 인식할 수 있습니다.


212-214: LGTM!

'완료' 탭의 빈 상태 메시지가 적절하게 추가되었습니다.


221-223: LGTM!

'완료' 탭의 빈 상태 보조 텍스트가 적절하게 추가되었습니다.

@ho0010 ho0010 changed the title [FIX] 10월 5주차 QA 사항 - 호준 fix: 완료된 모임방 접근 개선 Nov 2, 2025
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (3)
src/components/group/MyGroupModal.tsx (3)

55-62: roomType 계산 로직 중복 제거

동일한 roomType 계산 로직이 두 곳(초기 fetch와 loadMore)에서 반복됩니다. 헬퍼 함수로 추출하면 유지보수성이 향상됩니다.

다음과 같이 리팩토링할 수 있습니다:

+  const getRoomTypeFromSelected = (selected: '진행중' | '모집중' | '완료' | ''): RoomType => {
+    if (selected === '진행중') return 'playing';
+    if (selected === '모집중') return 'recruiting';
+    if (selected === '완료') return 'expired';
+    return 'playingAndRecruiting';
+  };
+
   useEffect(() => {
     const fetchRooms = async () => {
       try {
         setIsLoading(true);
         setError(null);
         setNextCursor(null);
         setIsLast(false);
 
-        const roomType: RoomType =
-          selected === '진행중'
-            ? 'playing'
-            : selected === '모집중'
-              ? 'recruiting'
-              : selected === '완료'
-                ? 'expired'
-                : 'playingAndRecruiting';
+        const roomType = getRoomTypeFromSelected(selected);
 
         const response = await getMyRooms(roomType, null);

그리고 loadMore 함수에서도 동일하게 적용:

   const loadMore = async () => {
     if (isFetchingRef.current || isLast || !nextCursor) return;
 
     isFetchingRef.current = true;
     setIsLoading(true);
     try {
-      const roomType: RoomType =
-        selected === '진행중'
-          ? 'playing'
-          : selected === '모집중'
-            ? 'recruiting'
-            : selected === '완료'
-              ? 'expired'
-              : 'playingAndRecruiting';
+      const roomType = getRoomTypeFromSelected(selected);
 
       const res = await getMyRooms(roomType, nextCursor);

Also applies to: 92-99


154-167: 네비게이션 로직 단순화 고려

네비게이션 로직이 중첩된 조건문으로 구성되어 있어 가독성이 다소 떨어집니다. 더 명확한 구조로 개선할 수 있습니다.

다음과 같이 단순화할 수 있습니다:

   const handleGroupCardClick = (group: Group) => {
-    if (selected === '완료') {
+    // 완료 또는 진행중인 모임방은 joined detail로 이동
+    if (selected === '완료' || selected === '진행중') {
       navigate(`/group/detail/joined/${group.id}`);
-    } else if (selected === '모집중') {
+    } else if (selected === '모집중') {
       navigate(`/group/detail/${group.id}`);
-    } else if (selected === '진행중') {
-      navigate(`/group/detail/joined/${group.id}`);
     } else {
+      // 전체 탭에서는 진행중 여부에 따라 분기
       if (group.isOnGoing) {
         navigate(`/group/detail/joined/${group.id}`);
       } else {
         navigate(`/group/detail/${group.id}`);
       }
     }
   };

207-224: 빈 상태 메시지 가독성 개선 고려

중첩된 삼항 연산자가 여러 번 사용되어 가독성이 떨어집니다. 헬퍼 함수나 객체 매핑을 통해 개선할 수 있습니다.

다음과 같이 리팩토링할 수 있습니다:

+  const getEmptyStateMessages = () => {
+    const messages = {
+      진행중: {
+        title: '진행중인 모임방이 없어요',
+        subText: '진행중인 모임방에 참여해보세요!',
+      },
+      모집중: {
+        title: '모집중인 모임방이 없어요',
+        subText: '모집중인 모임방에 참여해보세요!',
+      },
+      완료: {
+        title: '완료된 모임방이 없어요',
+        subText: '아직 완료된 모임방이 없습니다.',
+      },
+      '': {
+        title: '참여중인 모임방이 없어요',
+        subText: '첫 번째 모임방에 참여해보세요!',
+      },
+    };
+    return messages[selected];
+  };
+
+  const emptyMessages = getEmptyStateMessages();
+
   // ...
   
   {!isLoading && convertedGroups.length === 0 && (
     <EmptyState>
-      <EmptyTitle>
-        {selected === '진행중'
-          ? '진행중인 모임방이 없어요'
-          : selected === '모집중'
-            ? '모집중인 모임방이 없어요'
-            : selected === '완료'
-              ? '완료된 모임방이 없어요'
-              : '참여중인 모임방이 없어요'}
-      </EmptyTitle>
-      <EmptySubText>
-        {selected === '진행중'
-          ? '진행중인 모임방에 참여해보세요!'
-          : selected === '모집중'
-            ? '모집중인 모임방에 참여해보세요!'
-            : selected === '완료'
-              ? '아직 완료된 모임방이 없습니다.'
-              : '첫 번째 모임방에 참여해보세요!'}
-      </EmptySubText>
+      <EmptyTitle>{emptyMessages.title}</EmptyTitle>
+      <EmptySubText>{emptyMessages.subText}</EmptySubText>
     </EmptyState>
   )}
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 967390c and f4eb20b.

📒 Files selected for processing (1)
  • src/components/group/MyGroupModal.tsx (8 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
src/components/group/MyGroupModal.tsx (1)
src/pages/searchBook/SearchBook.styled.ts (2)
  • EmptyTitle (209-214)
  • EmptySubText (216-220)
🔇 Additional comments (2)
src/components/group/MyGroupModal.tsx (2)

142-143: exhaustive-deps 비활성화 사유 확인 필요

eslint-disable 주석이 설명 없이 사용되고 있습니다. loadMore 함수가 selected 상태에 의존하지만 dependency 배열에 포함되지 않았습니다. selected 변경 시 line 81의 effect가 데이터를 리셋하므로 의도적인 것으로 보이나, 향후 유지보수를 위해 주석으로 이유를 명시하는 것이 좋습니다.

다음과 같이 설명 주석을 추가하는 것을 권장합니다:

     tryFill();
-    // eslint-disable-next-line react-hooks/exhaustive-deps
+    // eslint-disable-next-line react-hooks/exhaustive-deps
+    // selected가 변경되면 line 81의 effect에서 데이터를 리셋하므로 dependency에 포함하지 않음
   }, [rooms, nextCursor, isLast]);

24-24: '완료' 탭 추가 구현 확인 완료

'완료' 상태가 타입, 탭 배열, GroupCard props에 일관되게 추가되어 PR 목표를 정확히 달성했습니다.

Also applies to: 178-178, 198-198

Copy link
Copy Markdown
Member

@ljh130334 ljh130334 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다~~~~ 👍🏻👍🏻👍🏻👍🏻

@ho0010 ho0010 merged commit cad5ced into develop Nov 3, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants