Skip to content

Conversation

@casper-jr
Copy link
Member

@casper-jr casper-jr commented Sep 28, 2025

🚀 이슈번호

✏️ 변경사항

  • 동아리/학과 목록 컴포넌트 구현
  • MyPageScreen 패딩 값 수정
  • 하단 버튼 위치 고정

📷 스크린샷

Screen_Recording_20250928_224633_WhosInClient.mp4

✍️ 사용법

🎸 기타

Summary by CodeRabbit

  • New Features
    • 마이페이지에 ‘내 동아리/학과 목록’ UI 컴포넌트 추가: 클럽 목록 표시, 항목 삭제 동작 및 ‘추가하기’로 이동 기능 제공.
  • Style
    • 전체 레이아웃 간격·정렬 개선.
    • ‘내 정보 수정’ 버튼을 화면 하단 중앙에 고정 배치하여 접근성 향상.

@casper-jr casper-jr self-assigned this Sep 28, 2025
@casper-jr casper-jr added REFACTOR 기능을 건드리지 않는 리팩토링 UI UI 구현 작업 OK Merge 완료된 PR labels Sep 28, 2025
@coderabbitai
Copy link

coderabbitai bot commented Sep 28, 2025

Walkthrough

새 DTO MyClubResponseDto 추가(서버 응답 매핑). 마이페이지에 koinViewModel() 도입 및 레이아웃 재배치. 하드코딩된 동아리 리스트를 표시하는 MyClubComponentMyClubItem 컴포넌트 추가 및 프리뷰 업데이트; 삭제·추가 콜백 노출(삭제 로직은 TODO).

Changes

Cohort / File(s) Change Summary
DTO 모델 추가
composeApp/src/commonMain/kotlin/org/whosin/client/data/dto/response/MyClubResponseDto.kt
@Serializable DTO 3종 추가: MyClubResponseDto(success,status,message,data), UserClubs(userClubs), ClubData(clubId,clubName); 각 필드에 @SerialName 매핑.
마이페이지 화면 구성/연결
composeApp/src/commonMain/kotlin/.../presentation/mypage/MyPageScreen.kt
koinViewModel() 사용으로 ViewModel 주입, 레이아웃 재배치(Spacer/align/size), 하단 고정 수정 버튼, 하드코딩 myClubs 데이터 주입, MyClubComponent로 목록 표시 및 콜백 전달, Preview 시 서명/콜백 제공.
동아리 목록 UI 컴포넌트
composeApp/src/commonMain/kotlin/.../presentation/mypage/component/MyClubComponent.kt
MyClubComponentMyClubItem 추가: 헤더(“내 동아리/학과 목록” + “추가하기”), 경계선 있는 LazyColumn 목록, 삭제 아이콘(AsyncImage) 클릭 시 onDeleteClub(clubId) 호출, onNavigateToAddClub() 노출, 프리뷰 함수 추가.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant MyPageScreen
  participant ViewModel
  participant MyClubComponent as MyClubComponent (UI)
  participant Nav as Navigation

  Note over MyPageScreen,MyClubComponent: MyClubComponent 도입 및 콜백 연결

  User->>MyPageScreen: 마이페이지 진입
  MyPageScreen->>ViewModel: koinViewModel()로 ViewModel 주입
  MyPageScreen->>MyClubComponent: myClubs, onDeleteClub, onNavigateToAddClub 전달

  rect rgba(200,240,255,0.18)
    Note right of MyClubComponent: 목록 렌더링 (LazyColumn)
  end

  User->>MyClubComponent: "추가하기" 클릭
  MyClubComponent->>Nav: onNavigateToAddClub()
  Note over Nav: 추가 화면으로 네비게이션

  User->>MyClubComponent: 삭제 아이콘 클릭
  MyClubComponent-->>MyPageScreen: onDeleteClub(clubId)
  Note over MyPageScreen: 삭제 처리 로직 연결은 TODO
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

새 DTO 하나 담아 응답을 맞이하고,
Lazy로 펼쳐진 동아리들 줄지어,
추가는 길을 열고, 삭제는 손끝에, 🗑️
아래 버튼은 묵묵히 제자리 지키네,
마이페이지, 오늘도 깔끔히 빛난다. ✨

Pre-merge checks and finishing touches

❌ Failed checks (3 warnings)
Check name Status Explanation Resolution
Linked Issues Check ⚠️ Warning 이 PR은 클럽 목록을 LazyColumn으로 구현하여 이슈 #22의 첫 번째 요구사항을 충족하지만, 목록 최대 크기 처리에 대한 구현이 보이지 않아 두 번째 TODO를 완전히 만족하지 못한 것으로 판단됩니다. LazyColumn에 Modifier.heightIn(max = ...)와 같이 목록의 최대 높이를 제한하거나 표시할 항목 수를 제어하는 로직을 추가해 목록 크기 처리를 완성해 주세요.
Out of Scope Changes Check ⚠️ Warning PR에 MyPageScreen 패딩 수정 및 하단 버튼 위치 고정 같은 UI 변경이 포함되어 있는데, 이는 이슈 #22의 클럽 목록 컴포넌트 구현 범위를 벗어나는 작업으로 보입니다. 패딩 및 버튼 위치 조정 변경은 별도 PR로 분리하거나 해당 작업에 대응하는 이슈를 추가하고, 본 PR은 클럽 목록 컴포넌트 구현에만 집중해 주세요.
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 제목 “[UI] 동아리 목록 컴포넌트 구현”은 주요 변경 사항인 클럽 목록 UI 컴포넌트 구현을 간결하게 요약하고 있어 팀원이 변경 내역을 빠르게 이해할 수 있습니다.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between df3beb7 and 442ba72.

📒 Files selected for processing (1)
  • composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/MyPageScreen.kt (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/MyPageScreen.kt
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: ios-build
  • GitHub Check: android-build

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

@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: 1

🧹 Nitpick comments (1)
composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/component/MyClubComponent.kt (1)

97-104: MyClubItem의 modifier 파라미터가 쓰이지 않아요

전달받은 modifier를 무시하고 있어서 외부에서 레이아웃을 조정하기 어렵습니다. 전달값을 Row에 적용하도록 바꿔 주세요.

-    Row(
-        modifier = Modifier
-            .fillMaxWidth(),
+    Row(
+        modifier = modifier
+            .fillMaxWidth(),
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 726873a and df3beb7.

⛔ Files ignored due to path filters (1)
  • composeApp/src/commonMain/composeResources/files/ic_x.svg is excluded by !**/*.svg
📒 Files selected for processing (3)
  • composeApp/src/commonMain/kotlin/org/whosin/client/data/dto/response/MyClubResponseDto.kt (1 hunks)
  • composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/MyPageScreen.kt (4 hunks)
  • composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/component/MyClubComponent.kt (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/MyPageScreen.kt (3)
composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/component/MyPageTopAppBar.kt (1)
  • MyPageTopAppBar (19-29)
composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/component/MyClubComponent.kt (1)
  • MyClubComponent (33-89)
composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/component/MyPageButton.kt (1)
  • MyPageButton (18-39)
composeApp/src/commonMain/kotlin/org/whosin/client/presentation/mypage/component/MyClubComponent.kt (1)
composeApp/src/commonMain/kotlin/ui/theme/Type.kt (1)
  • pretendardFontFamily (14-38)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: android-build
  • GitHub Check: ios-build

@casper-jr casper-jr merged commit 973f69f into WhosInRoom:develop Sep 29, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OK Merge 완료된 PR REFACTOR 기능을 건드리지 않는 리팩토링 UI UI 구현 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UI] 마이페이지 동아리 목록 컴포넌트 구현

1 participant