[UI] 모임방 페이지 QA#54
Conversation
Walkthrough이 PR은 모임방 및 검색 관련 UI 컴포넌트의 레이아웃, 색상, 텍스트 스타일, 패키지 및 함수명 리팩토링, 프리뷰 추가, 문자열 리소스 개선 등 전반적인 QA 및 디자인 피드백을 반영하여 다수의 화면과 컴포넌트에 걸쳐 세부적인 UI/UX 품질을 향상시키는 변경을 포함합니다. 비즈니스 로직 변경은 없으며, 주로 시각적 요소와 코드 구조 정리에 집중되어 있습니다. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant GroupBookSearchBottomSheet
participant BookList
User->>GroupBookSearchBottomSheet: 검색어 입력
GroupBookSearchBottomSheet->>BookList: 실시간 필터링 (제목/저자)
alt 결과 있음
GroupBookSearchBottomSheet-->>User: 필터링된 리스트 표시
else 결과 없음
GroupBookSearchBottomSheet-->>User: "검색 결과 없음" 안내 표시
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20분 Possibly related PRs
Suggested labels
Poem
Note ⚡️ Unit Test Generation is now available in beta!Learn more here, or try it out under "Finishing Touches" below. ✨ Finishing Touches
🧪 Generate unit tests
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Pull Request Overview
This PR implements QA fixes for the meeting room page, meeting room creation page, and search page. The changes focus on improving UI consistency through padding adjustments, text style updates, and component reorganization.
- Refactored search-related components from
booksearchtosearchpackage structure - Updated UI spacing, typography styles, and component layouts across group room screens
- Enhanced text field icons and improved visual consistency in cards and form components
Reviewed Changes
Copilot reviewed 41 out of 41 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| strings.xml | Updated text content for group participation and book registration messages |
| ic_x_circle_grey02.xml | Added new grey circle X icon drawable resource |
| SearchBookScreen.kt | Renamed from BookSearchScreen and updated component references |
| SearchBookGroupScreen.kt | Renamed from BookRecruitingScreen with layout padding improvements |
| SearchBookDetailScreen.kt | Renamed from BookDetailScreen with typography and spacing updates |
| GroupRoomScreen.kt | Improved layout spacing and conditional rendering of recommendations |
| GroupMakeRoomScreen.kt | Updated component references and text field configurations |
| WarningTextField.kt | Simplified trailing icon logic and updated icon resource |
| Various component files | Added preview functions, updated spacing, and improved layout consistency |
| BookData("토마토 컬러면", R.drawable.bookcover_sample, "최정화"), | ||
| BookData("사슴", R.drawable.bookcover_sample, "최정화") | ||
| ) | ||
| val dummyGroupBooks = listOf( |
There was a problem hiding this comment.
The dummyGroupBooks list is missing author parameters while dummySavedBooks was updated to include them. This inconsistency could cause issues if the BookData constructor requires author parameters.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (7)
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupRoomDurationPicker.kt (1)
39-41: LocalDate 를 rememberSaveable로 직렬화할 때 Bundle 크기 주의
LocalDate는Serializable이므로rememberSaveable이 Bundler에 그대로 저장합니다. 화면 회전이 잦은 경우 큰 객체를 여러 번 직렬화/역직렬화하면서 성능·메모리 오버헤드가 생길 수 있습니다.epochDay(Long)로 저장/복원하는
Saver를 만들어 바이트 수를 최소화하거나, 구성 변경 시 복원이 굳이 필요 없다면remember { … }만 사용해도 됩니다.+private val LocalDateSaver = Saver<LocalDate, Long>( + save = { it.toEpochDay() }, + restore = { LocalDate.ofEpochDay(it) } +) -var startDate by rememberSaveable { mutableStateOf(today) } -var endDate by rememberSaveable { mutableStateOf(today.plusDays(1)) } +var startDate by rememberSaveable(stateSaver = LocalDateSaver) { mutableStateOf(today) } +var endDate by rememberSaveable(stateSaver = LocalDateSaver) { mutableStateOf(today.plusDays(1)) }app/src/main/java/com/texthip/thip/ui/group/makeroom/mock/GroupBookData.kt (1)
12-19: 목데이터의 다양성을 개선해보세요모든 책에 동일한 저자("최정화")를 사용하고 있습니다. UI 테스트와 필터링 기능을 더 효과적으로 검증하려면 다양한 저자명을 사용하는 것이 좋겠습니다.
val dummySavedBooks = listOf( - BookData("토마토 컬러면", R.drawable.bookcover_sample, "최정화"), - BookData("사슴", R.drawable.bookcover_sample, "최정화"), - BookData("토마토 컬러면", R.drawable.bookcover_sample, "최정화"), - BookData("사슴", R.drawable.bookcover_sample, "최정화"), + BookData("토마토 컬러면", R.drawable.bookcover_sample, "최정화"), + BookData("사슴", R.drawable.bookcover_sample, "김영하"), + BookData("토마토 컬러면", R.drawable.bookcover_sample, "최정화"), + BookData("사슴", R.drawable.bookcover_sample, "박민규"),app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoom.kt (1)
118-129: 2 dp 간격 제거 여부 재검토동일 PR에서
CardItemRoomSmall,GroupMainCard등에서는 2 dpSpacer를 제거하여 텍스트 간격을 더 조밀하게 맞춘 것으로 보입니다. 이 컴포넌트에는 여전히 남아 있어 디자인 일관성이 깨질 수 있습니다.- Spacer(modifier = Modifier.width(2.dp))app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupEmptyResult.kt (1)
3-6: 불필요한backgroundimport 제거해당 파일에서는
Modifier.background를 사용하지 않으므로import androidx.compose.foundation.background가 불필요합니다. 정리하면 경고를 줄일 수 있습니다.-import androidx.compose.foundation.backgroundAlso applies to: 13-14
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupMemberLimitPicker.kt (1)
73-73: 프리뷰 함수명을 일관성 있게 업데이트하세요.프리뷰 함수명이 여전히
MemberLimitPickerPreview로 되어 있어 새로운 컴포넌트명과 일치하지 않습니다.다음과 같이 수정하는 것을 권장합니다:
-fun MemberLimitPickerPreview() { +fun GroupMemberLimitPickerPreview() {app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookGroupScreen.kt (1)
144-144: 프리뷰 함수명을 새로운 컴포넌트명과 일치시키세요.프리뷰 함수명들이 여전히
GroupRecruiting접두사를 사용하고 있어 새로운 컴포넌트명SearchBookGroup과 일치하지 않습니다.다음과 같이 수정하는 것을 권장합니다:
-fun GroupRecruitingScreenPreview() { +fun SearchBookGroupScreenPreview() {-fun GroupRecruitingScreenEmptyPreview() { +fun SearchBookGroupScreenEmptyPreview() {Also applies to: 221-221
app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupRoomScreen.kt (1)
497-497: 장르 표시 일관성 개선프리뷰 데이터에서 장르를 "고전 문학"에서 "문학"으로 통일한 것이 좋습니다. 다만 562라인의 프리뷰에서는 여전히 "고전 문학"이 사용되고 있어 일관성을 확인해보세요.
// 562라인도 동일하게 통일 고려: genre = "문학", // "고전 문학" 대신Also applies to: 627-627
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (41)
app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoom.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt(3 hunks)app/src/main/java/com/texthip/thip/ui/common/cards/CardRoomBook.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/common/forms/SearchBookTextField.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/common/forms/WarningTextField.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupBookListWithScrollbar.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupBookSearchBottomSheet.kt(6 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupDatePicker.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupEmptyBookSheetContent.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupMemberLimitPicker.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupRoomDurationPicker.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupSelectBook.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupWheelPicker.kt(6 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/mock/GroupBookData.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/makeroom/screen/GroupMakeRoomScreen.kt(4 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupDeadlineRoomSection.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupEmptyResult.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupFilteredSearchResult.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupLiveSearchResult.kt(3 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMainCard.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMyRoomFilterRow.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupRecentSearch.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupSearchTextField.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/component/SimplePagerIndicator.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupMyScreen.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupRoomScreen.kt(8 hunks)app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupRoomSecretScreen.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/screen/GroupDoneScreen.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt(4 hunks)app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/search/component/SearchActiveField.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/search/component/SearchBookFilteredResult.kt(4 hunks)app/src/main/java/com/texthip/thip/ui/search/component/SearchEmptyResult.kt(2 hunks)app/src/main/java/com/texthip/thip/ui/search/component/SearchRecentBook.kt(7 hunks)app/src/main/java/com/texthip/thip/ui/search/mock/BookData.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/search/mock/DetailBookData.kt(1 hunks)app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookDetailScreen.kt(5 hunks)app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookGroupScreen.kt(5 hunks)app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookScreen.kt(6 hunks)app/src/main/res/drawable/ic_x_circle_grey02.xml(1 hunks)app/src/main/res/values/strings.xml(2 hunks)
🧰 Additional context used
🧠 Learnings (19)
📓 Common learnings
Learnt from: rbqks529
PR: THIP-TextHip/THIP-Android#30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/common/forms/SearchBookTextField.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupRoomSecretScreen.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookGroupScreen.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/makeroom/screen/GroupMakeRoomScreen.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupMemberLimitPicker.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/common/forms/WarningTextField.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMyRoomFilterRow.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupSearchTextField.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/search/component/SearchActiveField.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupSelectBook.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupEmptyBookSheetContent.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMainCard.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookScreen.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookDetailScreen.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupRoomScreen.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/java/com/texthip/thip/ui/search/component/SearchRecentBook.kt (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
app/src/main/res/values/strings.xml (1)
Learnt from: rbqks529
PR: #30
File: app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt:108-112
Timestamp: 2025-07-01T07:19:10.981Z
Learning: The user rbqks529 prefers to extract hardcoded UI strings to StringResource files (strings.xml) rather than keeping them inline in Compose components, which is a good practice for maintainability and localization in Android development.
🧬 Code Graph Analysis (10)
app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt (1)
app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookScreen.kt (1)
SearchBookScreen(36-160)
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupBookListWithScrollbar.kt (1)
app/src/main/java/com/texthip/thip/ui/common/cards/CardBookSearch.kt (1)
CardBookSearch(28-76)
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupEmptyResult.kt (1)
app/src/main/java/com/texthip/thip/ui/theme/Theme.kt (1)
ThipTheme(41-69)
app/src/main/java/com/texthip/thip/ui/group/makeroom/screen/GroupMakeRoomScreen.kt (1)
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupMemberLimitPicker.kt (1)
GroupMemberLimitPicker(25-69)
app/src/main/java/com/texthip/thip/ui/group/myroom/component/SimplePagerIndicator.kt (1)
app/src/main/java/com/texthip/thip/ui/theme/Theme.kt (1)
ThipTheme(41-69)
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMyRoomFilterRow.kt (1)
app/src/main/java/com/texthip/thip/ui/theme/Theme.kt (1)
ThipTheme(41-69)
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupLiveSearchResult.kt (1)
app/src/main/java/com/texthip/thip/ui/theme/Theme.kt (1)
ThipTheme(41-69)
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupWheelPicker.kt (1)
app/src/main/java/com/texthip/thip/ui/group/makeroom/util/WheelPickerDisplayUtils.kt (2)
offsetToIndex(18-29)normalizeOffset(11-16)
app/src/main/java/com/texthip/thip/ui/search/component/SearchBookFilteredResult.kt (1)
app/src/main/java/com/texthip/thip/ui/search/component/SearchEmptyResult.kt (1)
SearchEmptyResult(21-55)
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupBookSearchBottomSheet.kt (2)
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupEmptyBookSheetContent.kt (1)
EmptyBookSheetContent(24-57)app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupBookListWithScrollbar.kt (1)
GroupBookListWithScrollbar(24-62)
🔇 Additional comments (90)
app/src/main/java/com/texthip/thip/ui/group/screen/GroupDoneScreen.kt (1)
52-58: LazyColumn 상단 여백은contentPadding으로 통일하는 편이 더 일관됩니다
contentPadding = PaddingValues(bottom = 20.dp)와 달리 상단 여백은Modifier.padding(top = 16.dp)로 주어져 있어 여백 정의 위치가 섞여 있습니다.
같은 속성(contentPadding)으로 모두 지정하면 코드 가독성과 유지보수가 조금 더 쉬워집니다.- contentPadding = PaddingValues(bottom = 20.dp), + contentPadding = PaddingValues(top = 16.dp, bottom = 20.dp), modifier = Modifier .fillMaxSize() - .padding(top = 16.dp) + // 상단 패딩을 contentPadding 으로 이동했으므로 제거[ suggest_optional_refactor ]
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupDeadlineRoomSection.kt (1)
5-16: import 구문 개선이 잘 되었습니다.와일드카드 import에서 명시적 import로 변경한 것은 코드 가독성과 유지보수성을 향상시키는 좋은 개선입니다. 의존성이 더 명확해지고 네이밍 충돌 위험도 줄어듭니다.
Also applies to: 21-25, 38-38
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupRoomDurationPicker.kt (2)
4-15: 명시적 import 전환 👍와일드카드 대신 필요한 클래스만 명시적으로 import 하여 가독성과 의존성 추적성이 모두 향상되었습니다. 스타일 가이드를 잘 준수하셨습니다.
63-91: LaunchedEffect 블록 분산 → 단일 검증 로직으로 단순화 가능
startDate와endDate의 유효성 검사를 두 개의LaunchedEffect로 나누면 재조정 로직이 분산되고, 서로를 연쇄적으로 트리거할 위험이 있습니다.
DerivedState+ 단일LaunchedEffect또는snapshotFlow로 합쳐 사이드이펙트를 한 곳에서 처리하면 코드 양과 재계산 횟수를 모두 줄일 수 있습니다.val adjustedRange by remember(startDate, endDate) { derivedStateOf { val newStart = startDate.coerceIn(today, maxDate) val newEnd = endDate.coerceIn(newStart.plusDays(1), maxDate) newStart to newEnd } } LaunchedEffect(adjustedRange) { startDate = adjustedRange.first endDate = adjustedRange.second onDateRangeSelected(startDate, endDate) }[ suggest_optional_refactor ]
app/src/main/java/com/texthip/thip/ui/common/cards/CardRoomBook.kt (1)
139-139: 좋은 레이아웃 최적화입니다!Spacer를 제거하고 Text 컴포넌트에 직접 padding을 적용한 것은 좋은 개선사항입니다. 이렇게 하면 컴포즈 트리의 노드 수가 줄어들어 성능상 이점이 있고, 스페이싱 의도가 더 명확해집니다.
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMainCard.kt (1)
131-139: 진행률 표시의 시각적 계층구조가 개선되었습니다숫자와 퍼센트 기호를 분리하여 서로 다른 타이포그래피를 적용한 것은 좋은 개선사항입니다. 시각적 계층구조가 더 명확해졌습니다.
접근성을 고려해서 필요시 두 Text 컴포넌트를 의미적으로 그룹화하는 것도 검토해보시기 바랍니다.
app/src/main/java/com/texthip/thip/ui/search/mock/BookData.kt (1)
1-1: 패키지 리팩토링이 적절합니다
booksearch에서search로 패키지명을 변경한 것은 좋은 개선사항입니다. 더 일반적이고 간결한 네이밍으로 코드 구조가 개선되었습니다.app/src/main/java/com/texthip/thip/ui/search/mock/DetailBookData.kt (1)
1-1: 일관된 패키지 리팩토링입니다BookData.kt와 동일하게 패키지명을
search로 변경한 것이 일관성을 유지하는 좋은 접근입니다.app/src/main/java/com/texthip/thip/ui/common/forms/SearchBookTextField.kt (1)
92-92: 아이콘 리소스 업데이트 승인텍스트 클리어 버튼의 아이콘을 새로운 버전으로 업데이트한 것이 적절합니다. UI QA 개선의 일환으로 시각적 일관성을 높이는 변경사항입니다.
app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupRoomSecretScreen.kt (1)
92-92: 레이아웃 개선 승인Spacer 컴포넌트를 제거하고 Text에 직접 padding을 적용한 것이 좋은 리팩토링입니다. 코드가 더 간결해지고 성능상 이점도 있습니다.
app/src/main/java/com/texthip/thip/ui/navigator/MainNavHost.kt (2)
7-7: 패키지 리팩토링 승인booksearch 패키지에서 search 패키지로의 이름 변경이 일관되게 적용되었습니다. 더 간결하고 명확한 패키지명으로 개선되었습니다.
17-17: 네비게이션 컴포저블 업데이트 승인SearchBookScreen으로의 네비게이션 업데이트가 올바르게 적용되었습니다. 기존 인터페이스가 유지되어 네비게이션 기능에 영향이 없습니다.
app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupMyScreen.kt (2)
78-78: 간격 조정 승인필터 행 이후의 간격을 20.dp로 증가시켜 시각적 분리를 개선한 것이 적절합니다.
83-83: LazyColumn 패딩 조정 승인상단 패딩을 제거하고 상위 Spacer로 간격을 통일한 것이 레이아웃 일관성을 높입니다.
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupBookListWithScrollbar.kt (1)
42-58: 목록 UI 개선 승인forEachIndexed를 사용하여 마지막 아이템 뒤의 불필요한 구분선과 간격을 제거한 것이 좋은 개선사항입니다. 조건부 로직(
index < books.size - 1)이 올바르게 구현되어 깔끔한 목록 UI를 제공합니다.app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoom.kt (1)
64-65: DarkGrey 사용으로 카드-배경 대비 확인 필요
DarkGrey50에서DarkGrey로 변경되면서 카드가 배경(특히colors.Black)과 시각적으로 거의 붙어 보일 수 있습니다. 실제 기기(light/dark 모드 포함)에서 카드 윤곽이 충분히 구분되는지 한번 더 확인해 주세요.app/src/main/java/com/texthip/thip/ui/common/cards/CardItemRoomSmall.kt (3)
55-56: 배경색 통일 👍와이드가 아닌 카드의 배경색을
DarkGrey로 맞춰 일관성이 높아졌습니다.
104-106: 텍스트 상단 여백 직접 부여 👍
Spacer제거 후Modifier.padding(top = 4.dp)로 대체해 코드 가독성이 좋아졌습니다.
146-147: 7 dp 여백이 의도된 수치인지 확인기존 4 dp에서 7 dp로 늘어나면서 상-하 높이 합계가 홀수 dp가 됩니다. 디자인 시스템에서 짝수 dp 단위를 권장한다면 다시 한번 값이 맞는지 검토 부탁드립니다.
app/src/main/java/com/texthip/thip/ui/search/component/SearchEmptyResult.kt (1)
1-2: 레거시 참조 없음 확인
BookEmptyResult 및 ui.booksearch.component에 대한 전역 검색 결과, 남아있는 호출부가 없습니다.app/src/main/java/com/texthip/thip/ui/group/myroom/component/SimplePagerIndicator.kt (1)
43-56: 프리뷰 추가 👍
ThipTheme로 감싼 프리뷰 덕분에 스튜디오에서 상태를 쉽게 확인할 수 있게 되었습니다. 코드에도 영향이 없으므로 그대로 머지해도 좋습니다.app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupEmptyResult.kt (1)
43-57: 프리뷰 추가 👍디자인 확인을 위한 프리뷰가 추가되었습니다. 실제 UI에 영향이 없으며 가독성도 좋습니다.
app/src/main/res/drawable/ic_x_circle_grey02.xml (1)
1-16: 새로운 아이콘 리소스가 올바르게 구현되었습니다.벡터 드로어블이 안드로이드 표준을 잘 따르고 있으며, 크기와 색상 설정이 적절합니다. 텍스트 필드의 클리어 버튼용도로 사용하기에 적합한 디자인입니다.
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupMemberLimitPicker.kt (1)
26-26: 컴포넌트 이름 변경이 적절합니다.
GroupMemberLimitPicker로의 이름 변경이 그룹 패키지의 네이밍 컨벤션과 잘 맞습니다.app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupSearchTextField.kt (2)
4-18: import 문 명시적 선언이 좋습니다.와일드카드 임포트 대신 명시적 임포트를 사용하여 코드 가독성과 유지보수성이 향상되었습니다.
45-45: 배경색 변경이 UI 일관성을 향상시킵니다.
DarkGrey50에서DarkGrey로의 변경이 다른 UI 컴포넌트들과의 시각적 일관성을 높입니다.app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupDatePicker.kt (2)
42-49: 상태 캐싱 개선이 성능을 향상시킵니다.
remember를 사용하여 날짜 범위 계산 결과를 캐싱하고 적절한 의존성을 설정한 것이 훌륭합니다. 이는 불필요한 재계산을 방지하고 컴포지션 성능을 개선합니다.
112-112: 날짜 유효성 검증 로직이 안정성을 높입니다.
coerceAtMost를 사용하여 월 변경 시 유효하지 않은 날짜 선택을 방지하는 것이 좋은 접근입니다. 이는 사용자 경험을 개선하고 잠재적인 크래시를 방지합니다.app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookGroupScreen.kt (3)
1-1: 패키지 구조 개선이 코드 조직화를 향상시킵니다.
booksearch.screen에서search.screen으로의 패키지 변경이 검색 기능의 통합적인 구조 개선에 적합합니다.
36-36: 함수명 변경이 목적을 명확히 합니다.
BookRecruitingScreen에서SearchBookGroupScreen으로의 변경이 컴포넌트의 실제 기능을 더 명확하게 표현합니다.
57-57: 상단 패딩 추가가 UI 간격을 개선합니다.16dp의 상단 패딩 추가가 레이아웃의 시각적 균형을 향상시킵니다.
app/src/main/java/com/texthip/thip/ui/group/makeroom/screen/GroupMakeRoomScreen.kt (4)
3-19: Import 구문 개선이 적절합니다.wildcard import에서 explicit import로 변경하여 코드 가독성과 의존성 추적이 개선되었습니다.
36-36: 컴포넌트 이름 변경이 일관성 있게 적용되었습니다.
MemberLimitPicker에서GroupMemberLimitPicker로 변경하여 네이밍 컨벤션이 일관되게 적용되었습니다.
158-158: 컴포넌트 사용법이 올바르게 업데이트되었습니다.Import 변경에 맞춰
GroupMemberLimitPicker사용이 적절히 적용되었습니다.
197-200: WarningTextField의 새로운 매개변수들이 적절히 설정되었습니다.비밀방 비밀번호 입력 필드에 추가된 매개변수들이 UI 개선에 적합합니다:
showIcon = true: 비밀번호 필드임을 명확히 표시showLimit = false: 글자 수 제한 표시 비활성화containerColor = colors.DarkGrey02: 적절한 배경색 적용app/src/main/java/com/texthip/thip/ui/search/component/SearchActiveField.kt (3)
1-1: 패키지 리팩토링이 적절합니다.
booksearch에서search로 패키지명 변경이 더 간결하고 명확한 구조를 제공합니다.
14-14: Import 경로가 새 패키지 구조에 맞게 올바르게 업데이트되었습니다.
BookData의 import 경로가 새로운 패키지 구조와 일치합니다.
19-19: 함수명 변경이 더 명확한 의미를 제공합니다.
BookLiveSearchResult에서SearchActiveField로 변경하여 컴포넌트의 역할이 더 명확해졌습니다.app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupLiveSearchResult.kt (4)
5-21: 새로운 import들이 적절히 추가되었습니다.Preview 기능과 UI 개선을 위한 필요한 import들이 올바르게 추가되었습니다.
26-26: LazyColumn 스페이싱 방식 개선이 적절합니다.
verticalArrangement = Arrangement.spacedBy(16.dp)제거하고 명시적 padding 사용으로 더 세밀한 제어가 가능해졌습니다.
40-40: 아이템 간 간격 설정이 일관성 있게 적용되었습니다.12dp의 top/bottom padding으로 아이템 간 간격을 명시적으로 설정하여 UI 일관성이 향상되었습니다.
50-94: Preview 함수가 잘 구현되었습니다.다양한 상태의 샘플 데이터(일반 모임, 비공개 모임, 모집완료 등)를 포함하여 개발 시 컴포넌트 확인이 용이해졌습니다. ThipTheme 적용도 적절합니다.
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupEmptyBookSheetContent.kt (2)
22-22: Typography import 추가가 적절합니다.새로운 타이포그래피 스타일 사용을 위한 필요한 import입니다.
34-44: 텍스트 기반 UI 개선이 효과적입니다.아이콘을 제거하고 두 줄의 명확한 텍스트 메시지로 교체한 것이 사용자 경험을 향상시킵니다:
- 문자열 리소스 사용으로 지역화 지원
typography.copy_m500_s14_h20스타일로 일관된 디자인colors.Grey로 적절한 색상 적용이전 학습에서 확인된 바와 같이 문자열 리소스 추출을 선호하는 개발 스타일과 일치합니다.
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupSelectBook.kt (2)
8-15: Import 구문 개선이 적절합니다.wildcard import에서 explicit import로 변경하여 코드 가독성과 유지보수성이 향상되었습니다. 사용되지 않는 Button, OutlinedButton import도 적절히 제거되었습니다.
121-121: OptionChipButton의 isSelected 값 변경이 논리적으로 적절합니다."변경" 버튼이 선택된 상태(
true)로 표시되는 것보다 일반 상태(false)로 표시하는 것이 UX 관점에서 더 자연스럽고 직관적입니다.app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMyRoomFilterRow.kt (2)
6-11: 프리뷰를 위한 import 추가가 적절합니다.디자인 타임 시각화를 위해 필요한 상태 관리 및 프리뷰 관련 import들이 올바르게 추가되었습니다.
Also applies to: 15-15
38-53: 인터랙티브 프리뷰 구현이 우수합니다.프리뷰 함수가 다음과 같이 잘 구현되었습니다:
- ThipTheme으로 적절한 테마 래핑
- 로컬 상태 관리를 통한 인터랙티브 동작 구현
- 실제 컴포넌트와 동일한 파라미터 구조 유지
이는 디자인 타임에서 컴포넌트의 동작을 확인할 수 있게 해주는 좋은 구현입니다.
app/src/main/java/com/texthip/thip/ui/common/forms/WarningTextField.kt (2)
85-91: 아이콘 로직 단순화가 UX를 개선합니다.트레일링 아이콘 로직이 다음과 같이 개선되었습니다:
- 텍스트 유무에 관계없이 일관된 클리어 아이콘 표시
- 항상 클릭 가능한 상태로 사용자 경험 향상
- 일관된 회색 아이콘 사용으로 시각적 통일성 확보
이 변경으로 사용자는 언제든지 텍스트를 쉽게 지울 수 있게 되었습니다.
156-156: 프리뷰 함수의 포맷팅이 정리되었습니다.불필요한 공백이 제거되고 람다 파라미터 주변의 간격이 일관되게 조정되었습니다.
app/src/main/java/com/texthip/thip/ui/search/component/SearchBookFilteredResult.kt (3)
1-1: 패키지 구조 개선이 적절합니다.
booksearch에서search로의 패키지 재구성이 더 명확한 구조를 제공합니다.
4-10: Import 구문이 명시적으로 개선되었습니다.레이아웃 관련 컴포넌트들의 import가 명시적으로 선언되어 코드 가독성과 의존성 파악이 용이해졌습니다.
21-21: 함수 및 컴포넌트 이름 변경이 일관성 있게 적용되었습니다.
BookFilteredSearchResult→SearchBookFilteredResultBookEmptyResult→SearchEmptyResultBookDataimport 경로 업데이트- 프리뷰 함수에서도 새로운 이름 사용
패키지 재구성과 일치하는 체계적인 리네이밍입니다.
Also applies to: 28-28, 52-52, 87-87
app/src/main/java/com/texthip/thip/ui/group/screen/GroupScreen.kt (4)
10-10: 패딩 관련 import 추가가 적절합니다.레이아웃 간격 조정을 위한 padding import가 올바르게 추가되었습니다.
66-66: 간격 제어 방식 개선이 코드 품질을 향상시킵니다.별도의 Spacer 대신 컴포넌트에 직접 padding modifier를 적용하여:
- 코드 구조가 더 명확해짐
- 간격 관리가 컴포넌트 단위로 통합됨
- 유지보수성 향상
동일한 시각적 결과를 더 깔끔한 방식으로 달성했습니다.
86-86: 구분선 간격 조정이 일관성 있게 적용되었습니다.수평 구분선에 bottom padding을 적용하여 상하 Spacer를 대체한 것이 다른 컴포넌트들과 일관된 패턴입니다.
108-108: 프리뷰 어노테이션 정리가 코드를 간결하게 만듭니다.불필요한 빈 괄호를 제거하여 코드가 더 간결해졌습니다.
app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookScreen.kt (3)
1-1: 검색 기능 패키지 통합이 완료되었습니다.
booksearch에서search로의 패키지 이전이 완료되어 검색 관련 기능들이 하나의 명확한 패키지로 통합되었습니다.
27-31: 컴포넌트 import 경로가 체계적으로 업데이트되었습니다.모든 검색 관련 컴포넌트들의 import 경로가 새로운 패키지 구조에 맞게 일관성 있게 변경되었습니다:
SearchEmptyResultSearchBookFilteredResultSearchActiveFieldSearchRecentBookBookData
37-37: 함수명 변경과 컴포넌트 호출이 일관성 있게 적용되었습니다.
- 메인 스크린:
BookSearchScreen→SearchBookScreen- 모든 하위 컴포넌트 호출이 새로운 이름으로 정확히 업데이트됨
- 프리뷰 함수들도 새로운 스크린 이름 사용
패키지 재구성에 따른 체계적이고 완전한 업데이트입니다.
Also applies to: 119-119, 138-138, 144-144, 151-151, 167-167, 192-192
app/src/main/java/com/texthip/thip/ui/search/component/SearchRecentBook.kt (5)
1-1: 패키지 구조 개선이 잘 반영되었습니다.
booksearch에서search로의 패키지 리팩토링이 일관성 있게 적용되어 코드 구조가 더 명확해졌습니다.
31-31: 함수명 변경과 타이포그래피 스타일 업데이트가 적절합니다.
BookRecentSearch에서SearchRecentBook로의 함수명 변경과menu_r400_s14_h24에서smalltitle_sb600_s18_h24로의 타이포그래피 변경이 일관성 있게 적용되었습니다. 더 굵은 폰트 웨이트(600)로 변경하여 가독성이 향상될 것으로 보입니다.Also applies to: 43-43, 79-79
69-72: 레이아웃 최적화가 효과적입니다.독립적인
Spacer대신Row에 직접padding(top = 32.dp)를 적용하여 더 간결하고 효율적인 레이아웃 구조로 개선되었습니다.
91-91: Box modifier 단순화가 좋습니다.
weight(1f, fill = true)에서weight(1f)로 단순화하여 코드가 더 깔끔해졌습니다. 기본값이fill = true이므로 동일한 동작을 합니다.
145-145: 프리뷰 함수들의 일관된 업데이트.프리뷰 함수들에서 새로운 함수명
SearchRecentBook을 사용하도록 적절히 업데이트되었으며, 불필요한 마침표도 제거되어 더 깔끔해졌습니다.Also applies to: 179-179, 182-182
app/src/main/java/com/texthip/thip/ui/search/screen/SearchBookDetailScreen.kt (4)
1-1: 패키지 리팩토링과 함수명 변경이 일관되게 적용되었습니다.
booksearch에서search로의 패키지 변경과BookDetailScreen에서SearchBookDetailScreen으로의 함수명 변경이 체계적으로 이루어져 코드 구조가 개선되었습니다.Also applies to: 40-40, 52-52
163-163: 타이포그래피 스타일 업데이트가 적절합니다.출판사 정보와 코멘트 제목에서 각각
menu_sb600_s12_h20와menu_sb600_s14_h24로 타이포그래피를 변경하여 UI 일관성이 향상되었습니다.Also applies to: 175-175
168-168: 레이아웃 간격 조정이 세밀하게 이루어졌습니다.
padding(top = 33.dp)와Spacer(height = 5.dp)조정으로 시각적 계층구조가 더 명확해졌습니다.Also applies to: 177-177
328-328: 프리뷰 함수 업데이트가 일관됩니다.프리뷰 함수에서 새로운 함수명을 사용하도록 적절히 업데이트되었습니다.
app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupBookSearchBottomSheet.kt (4)
9-9: 실시간 검색 필터링 구현이 효율적입니다.
derivedStateOf를 사용하여 검색어와 현재 책 목록을 기반으로 필터링된 결과를 계산하는 방식이 적절합니다. 불필요한 리컴포지션을 방지하면서 실시간 검색 기능을 구현했습니다.Also applies to: 47-58
52-55: 검색 로직이 사용자 친화적입니다.제목과 작가명 모두에서 대소문자를 구분하지 않는 검색을 지원하여 사용자 경험이 향상되었습니다.
ignoreCase = true옵션을 적절히 활용했습니다.
97-113: UI 상태 분기가 명확하고 포괄적입니다.
when표현식을 사용하여 다음 세 가지 상태를 명확히 구분했습니다:
- 현재 탭에 책이 없는 경우
- 검색어는 있지만 필터링된 결과가 없는 경우
- 필터링된 책을 표시하는 경우
이는 사용자에게 적절한 피드백을 제공합니다.
129-137: SearchEmptyContent 구현이 실용적입니다.현재는 기존
EmptyBookSheetContent에 위임하는 방식으로 구현되어 있어 일관된 UI를 유지하면서도 향후 검색 전용 빈 상태 UI로 확장할 수 있는 구조입니다.app/src/main/java/com/texthip/thip/ui/group/makeroom/component/GroupWheelPicker.kt (4)
60-60: 메모이제이션을 통한 성능 최적화가 잘 구현되었습니다.
remember를 사용하여selectedIndex, 픽셀 변환 값들(itemHeightPx,spacingPx), 그리고 유틸리티 함수들을 메모이제이션하여 불필요한 재계산을 방지했습니다. 특히 밀도 변환과 같은 비용이 큰 연산을 캐싱한 것이 효과적입니다.Also applies to: 67-81
94-103: 드래그 완료 시점의 선택 업데이트 로직이 안전합니다.드래그 중이 아닐 때만 선택 아이템을 업데이트하고,
newSelectedIndex in items.indices체크를 통해 배열 범위를 검증한 후 콜백을 호출하는 방식이 안전하고 효율적입니다.
195-207: 계산된 상태 값들의 derivedStateOf 사용이 적절합니다.
currOffset과centerIndex를derivedStateOf로 구현하여 의존하는 값들이 변경될 때만 재계산되도록 최적화했습니다. 이는 불필요한 리컴포지션을 방지하는 좋은 패턴입니다.
105-107: UI 상수와 스타일의 메모이제이션이 효과적입니다.
containerHeight,visibleRange,textStyle등의 UI 관련 상수들을 메모이제이션하여 렌더링 성능을 향상시켰습니다.Also applies to: 123-124, 229-229
app/src/main/res/values/strings.xml (2)
178-179: 모임방 참여 취소 관련 메시지가 더 사용자 친화적으로 개선되었습니다.팝업 메시지와 설명 텍스트가 사용자에게 더 명확한 정보를 제공하도록 개선되었습니다. "지금 취소해도, 활동 시작 전에 다시 참여 가능해요"라는 안내는 사용자의 우려를 덜어주는 좋은 문구입니다.
202-204: 책 신청 관련 문자열이 모듈화되고 명확해졌습니다."책 등록하기"에서 "책 신청하기"로 변경하여 사용자 관점에서 더 자연스러운 표현이 되었고, 코멘트를 두 개의 별도 문자열로 분리하여 재사용성과 유지보수성이 향상되었습니다. 이는 학습된 선호사항인 하드코딩된 문자열을 리소스로 추출하는 모범 사례와도 일치합니다.
app/src/main/java/com/texthip/thip/ui/group/myroom/screen/GroupRoomScreen.kt (5)
116-116: 패딩 개선이 깔끔하게 적용되었습니다.메인 컬럼에 bottom 패딩을 추가하여 화면 하단 여백을 일관되게 관리하는 것이 좋은 개선입니다.
144-144: 텍스트 간격 조정이 적절합니다.설명 레이블의 top 패딩을 40dp로 설정하여 상단 타이틀과의 적절한 시각적 분리를 제공합니다.
180-182: 날짜와 참여자 정보의 패딩 일관성이 향상되었습니다.모집 기간(182라인)과 참여 인원(214라인) 정보에 동일한 12dp top 패딩을 적용하여 시각적 일관성을 확보했습니다.
Also applies to: 214-214
239-241: 태그 섹션의 레이아웃 개선이 효과적입니다.fillMaxWidth()와 적절한 수직 패딩(22dp top, 30dp bottom)을 통해 태그 영역의 시각적 공간 활용이 개선되었습니다.
297-324: 추천 섹션의 조건부 렌더링이 우수합니다.추천 모임방이 있을 때만 섹션을 표시하는 로직이 UI/UX 관점에서 매우 적절합니다. 빈 추천 리스트로 인한 불필요한 공백을 방지하고 사용자 경험을 개선합니다.
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupRecentSearch.kt (3)
33-62: 컴포넌트 구조 개선이 훌륭합니다.Column으로 래핑하여 레이아웃이 더 명확해졌고, 조건부 렌더링 로직도 직관적으로 개선되었습니다. FlowRow 사용으로 검색 키워드들이 적절히 배치되며, 최대 9개 제한과 2줄 제한도 적절합니다.
35-38: 텍스트 스타일 업그레이드가 적절합니다.
typography.menu_r400_s14_h24에서typography.smalltitle_sb600_s18_h24로 변경하여 제목의 시각적 위계가 더 명확해졌습니다.
64-105: 프리뷰 컴포저블 추가가 개발 생산성에 도움됩니다.빈 상태와 데이터 있는 상태 모두에 대한 프리뷰를 제공하여 다양한 시나리오를 쉽게 확인할 수 있습니다. 상호작용 로직(제거 기능)도 시뮬레이션되어 있어 유용합니다.
app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupFilteredSearchResult.kt (3)
42-98: 레이아웃 구조 개선이 효과적입니다.Column으로 래핑하여 컴포넌트의 수직 레이아웃이 더 명확해졌습니다. 기존 로직은 그대로 유지하면서 구조만 개선한 것이 좋은 접근입니다.
60-66: 구분선 패딩 추가로 시각적 개선구분선에 수직 패딩을 추가하여 요소들 간의 시각적 분리가 더 자연스러워졌습니다. 일관된 패딩 값(4dp, 8dp, 12dp)을 사용한 것도 좋습니다.
Also applies to: 86-93
100-162: 포괄적인 프리뷰 구성이 우수합니다.데이터가 있는 상태와 빈 상태 모두에 대한 프리뷰를 제공하여 다양한 시나리오를 쉽게 확인할 수 있습니다. 장르 선택 상태도 시뮬레이션되어 있어 실제 사용 환경과 유사한 테스트가 가능합니다.
| import androidx.compose.ui.graphics.Color | ||
| import androidx.compose.ui.res.painterResource | ||
| import androidx.compose.ui.res.stringResource | ||
| import androidx.compose.ui.text.font.FontWeight |
There was a problem hiding this comment.
💡 Verification agent
🧩 Analysis chain
사용되지 않는 import문을 확인해주세요
FontWeight와 sp import가 추가되었지만 코드에서 직접 사용되지 않는 것 같습니다. typography 테마 스타일을 통해 폰트 스타일링이 이루어지고 있어 이 import들이 불필요할 수 있습니다.
사용되지 않는 import문이 있는지 확인해보겠습니다:
Also applies to: 33-33
🏁 Script executed:
#!/bin/bash
# Description: Check if FontWeight and sp imports are actually used in the file
# Search for FontWeight usage
echo "=== FontWeight usage ==="
rg "FontWeight\." app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMainCard.kt
# Search for sp usage
echo "=== sp usage ==="
rg "\.sp" app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMainCard.kt
echo "=== Current typography styles ==="
rg "typography\." app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMainCard.ktLength of output: 897
사용되지 않는 import 제거하기
GroupMainCard.kt 파일에서 아래 두 import는 코드 내에서 직접 사용되지 않으므로 제거를 권장합니다.
• app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMainCard.kt
– 30행: import androidx.compose.ui.text.font.FontWeight
– 33행: import androidx.compose.ui.unit.sp
🤖 Prompt for AI Agents
In app/src/main/java/com/texthip/thip/ui/group/myroom/component/GroupMainCard.kt
at lines 30 and 33, remove the unused imports 'import
androidx.compose.ui.text.font.FontWeight' and 'import
androidx.compose.ui.unit.sp' since they are not directly used in the code.
➕ 이슈 링크
🔎 작업 내용
📸 스크린샷
😢 해결하지 못한 과제
[] TASK
📢 리뷰어들에게
Summary by CodeRabbit
신규 기능
ic_x_circle_grey02)이 추가되었습니다.버그 수정
리팩터링 및 스타일
booksearch에서search로 통합되어 검색 관련 화면 및 컴포넌트가 정리되었습니다.문서 및 문자열