-
Notifications
You must be signed in to change notification settings - Fork 0
Feature/refactor group #105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 그룹 멤버의 프로필 이미지와 닉네임을 함께 보여주는 `GroupMemberProfile` 컴포저블을 구현하였습니다. - 내부적으로 `AikuClickableSurface`를 사용하여 클릭 가능한 아바타 형태로 렌더링되며, `CircleShape`, `aspectRatio(1f)`를 적용해 비율을 유지합니다. - `image`, `label`, `backgroundColor`, `contentDescription`, `onClick`, `imagePadding`, `modifier`를 파라미터로 받아 유연하게 재사용할 수 있도록 구성하였습니다. - 닉네임 텍스트는 `AikuText`를 사용하며, 한 줄로 제한하고 넘칠 경우 `Ellipsis` 처리합니다. - 스타일 확인을 위한 프리뷰(`GroupMemberProfilePreview`)를 함께 추가하였습니다.
- `GroupMemberPreviewParameterProvider` 클래스를 추가하여 `@Preview`에서 `List<GroupMember>` 타입의 샘플 데이터를 사용할 수 있도록 지원합니다. - 다양한 프로필 아바타와 배경색 조합을 포함한 `groupMembers` mock 데이터를 `PreviewParameterData.kt`에 정의하였습니다. - 멤버 프로필 UI(`GroupMemberProfile`, `GroupMemberTab`)를 실제 환경과 유사하게 테스트할 수 있도록 Preview 구성 기반을 마련하였습니다.
- 그룹 멤버 목록 UI인 `GroupMemberTab` 컴포저블을 구현하였습니다. - 멤버가 없는 경우에는 `EmptyPlaceholder`를 통해 "멤버가 없습니다" 메시지와 초대 버튼을 표시합니다. - 멤버가 있는 경우에는 `LazyVerticalGrid`를 사용하여 3열 그리드로 멤버 목록을 렌더링하며, 첫 번째 셀은 "멤버 초대하기" 버튼으로 고정되어 있습니다. - 각 멤버 항목은 `GroupMemberItem` 컴포저블을 통해 표시되며, 내부적으로 `GroupMemberProfile`을 사용합니다. - 텍스트 스타일은 `CompositionLocalProvider`를 통해 `body2SemiBold`를 일괄 적용하였습니다. - `GroupDetailScreen` 내 기존의 멤버 탭 콘텐츠를 `GroupMemberTab`으로 교체하여 실제 UI에 반영하였습니다. - 문자열 리소스 키를 역할에 맞게 정리하였습니다: - `group_detail_member_section_*` → `group_detail_member_tab_*`
…stPreviewParameterProvider - `GroupMemberPreviewParameterProvider`의 이름을 `GroupMemberListPreviewParameterProvider`로 변경하여, 여러 상태의 그룹 멤버 리스트(mock)를 제공하는 역할을 명확히 표현하였습니다. - `GroupMemberTabPreview`와 `GroupMemberTabEmptyPreview`를 통합하고, `@PreviewParameter`를 활용하여 빈 목록과 멤버가 있는 목록 모두를 단일 Preview에서 확인할 수 있도록 개선하였습니다.
- `upcomingSchedules` 리스트를 `List(4)`를 사용한 반복 생성 방식으로 변경 하였습니다. - 모든 일정은 동일한 그룹과 위치 정보를 공유하며, `memberSize` 및 `scheduleTime`은 고정값을 사용합니다.
- `UpcomingScheduleCard`와 `UpcomingSchedulePlaceholder`에 고정 높이(132.dp)를 적용하여 일정 카드의 레이아웃 일관성을 확보했습니다. - `UpcomingScheduleContent` 내부의 `LazyPagingRow`에도 고정 높이를 설정하여 콘텐츠가 없을 때에도 레이아웃이 무너지지 않도록 수정했습니다. - `UpcomingSchedulePlaceholder`의 점선 테두리 스타일을 단순화하고 디자인을 개선했습니다. - `LazyPagingRow`, `LazyPagingColumn`의 `empty`, `error`, `loading` 파라미터에 `BoxScope`를 추가하여 정렬 등의 내부 구현 편의성을 높였습니다. - 프리뷰 파라미터에 빈 목록 케이스를 추가하여 다양한 UI 상태를 쉽게 확인할 수 있도록 개선했습니다.
- `core:ui` 모듈의 기존 `ScheduleCard` 컴포넌트를 제거하였습니다 - `GroupScheduleTab` 컴포넌트를 추가하여 그룹 상세 화면의 일정 탭 UI를 구현했습니다. - 그룹 일정 데이터를 Paging 기반으로 불러오고, `LazyPagingColumn`으로 렌더링합니다. - 로딩, 빈 목록, 에러 상태를 구분하여 UI를 구성합니다. - 일정 클릭 시 상세 화면으로 이동하고, 일정 생성 버튼도 제공합니다. - 프리뷰 작성을 위한 `GroupSchedulePreviewParameterProvider`를 `core:ui` 모듈에 추가했습니다. - 일정 상태(예: 진행 중, 완료 등) 텍스트 출력을 위한 문자열 리소스를 `core:ui`의 `strings.xml`에 정의했습니다.
…tail - `GroupDetailViewModel`에 `selectedTab` StateFlow를 추가하여 현재 선택된 탭(멤버, 약속) 상태를 관리합니다. - `updateSelectedTab` 함수를 통해 탭 선택 상태를 변경할 수 있도록 합니다. - `GroupDetailUiState.Error` 상태가 `String` 타입의 에러 메시지를 갖도록 수정하여, UI에서 보다 명확한 오류 정보를 표시할 수 있도록 개선했습니다. 기존 `Throwable` 대신 메시지를 직접 전달합니다. - `GroupDetailTab` enum 클래스를 추가하여 탭 종류를 정의하고 각 탭의 라벨을 관리합니다.
- 기존 GroupDetailScreen에서 Composable 내부에 존재하던 `selectedTab` 상태를 제거하고, ViewModel로부터 전달받은 `StateFlow<GroupDetailTab>` 기반으로 화면을 구성하도록 변경했습니다. - `onTabSelected` 콜백의 타입을 `(Int) -> Unit`에서 `(GroupDetailTab) -> Unit`으로 변경하였습니다. - `ScheduleTabContent` 컴포저블을 제거하고, `GroupScheduleTab`으로 직접 연결되도록 변경하여 중복된 계층을 축소했습니다. - 불필요한 Preview 코드 및 `ScheduleTabContent`의 로컬 상태 관련 주석 코드도 함께 정리하였습니다. - 이에 따라 화면 구성 책임이 ViewModel ↔ UI로 명확히 분리되고, 컴포저블의 역할이 단순화되어 유지보수성과 가독성이 개선되었습니다.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PULL REQUEST
Description
그룹 멤버 UI
GroupMemberProfile컴포저블 구현Ellipsis처리GroupMemberProfilePreview) 추가GroupMemberListPreviewParameterProvider추가@Preview에서List<GroupMember>샘플 데이터를 제공GroupMemberTab구현EmptyPlaceholder와 초대 버튼 표시LazyVerticalGrid렌더링, 첫 셀은 "멤버 초대하기" 버튼GroupMemberProfile사용그룹 일정 UI
ScheduleCard제거,GroupScheduleCard기반의GroupScheduleTab구현LazyPagingColumn)GroupSchedulePreviewParameterProvider추가GroupDetail 화면 구조 개선
selectedTab: StateFlow<GroupDetailTab>추가 및updateSelectedTab()제공GroupScheduleTab연결GroupDetailUiState.Error가String타입 메시지를 포함하도록 변경하여 명확한 오류 표시 가능기타
UpcomingScheduleCard및UpcomingSchedulePlaceholder에 고정 높이 적용LazyPagingRow/LazyPagingColumn에BoxScope기반 상태 UI 슬롯 적용