Feat/#66 search view#70
Conversation
|
Caution Review failedThe pull request is closed. 📝 WalkthroughWalkthrough이 PR은 주로 Kotlin Compose 컴포넌트의 형식 정리(후행 쉼표, 파라미터 재배치)와 두 개의 새로운 검색 뷰 UI 컴포넌트(FlintSearchInitView, FlintSearchEmptyView) 추가, 상수명 정규화(MaxOttShowingCount → MAX_OTT_SHOWING_COUNT)로 구성되며, 기능 동작 변화는 없습니다. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
📜 Recent review detailsConfiguration used: Organization UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In
@app/src/main/java/com/flint/core/designsystem/component/searchview/FlintSearchInitializeView.kt:
- Around line 26-31: The Icon in FlintSearchInitializeView.kt currently sets
contentDescription = null which breaks accessibility; update the Icon call in
the FlintSearchInitializeView composable to provide a meaningful
contentDescription (e.g., use stringResource(R.string.search_icon_description)
or a localized string) instead of null, and add the corresponding entry in
strings.xml to keep it localizable so screen readers can announce the icon
purpose.
- Around line 35-39: The Text composable in FlintSearchInitializeView (the UI
text "떠오르는 작품이 있나요?") is hardcoded; add a string resource named
search_initialize_prompt to res/values/strings.xml with that Korean text, then
replace the literal in the Text call with
stringResource(R.string.search_initialize_prompt) (ensure you import
androidx.compose.ui.res.stringResource) so the UI text is loaded from resources
for i18n and maintainability.
🧹 Nitpick comments (1)
app/src/main/java/com/flint/core/designsystem/component/searchview/FlintSearchInitializeView.kt (1)
20-25: Modifier 파라미터를 추가하여 Compose 표준 패턴을 따르세요.Compose 컴포넌트는 호출자가 레이아웃 동작(크기, 정렬, 패딩 등)을 커스터마이즈할 수 있도록
Modifier파라미터를 받는 것이 표준 패턴입니다.♻️ 수정 제안
@Composable -fun FlintSearchInitializeView() { +fun FlintSearchInitializeView( + modifier: Modifier = Modifier +) { Column( + modifier = modifier, verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ) {
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
app/src/main/java/com/flint/core/designsystem/component/searchview/FlintSearchInitializeView.kt
🧰 Additional context used
🧬 Code graph analysis (1)
app/src/main/java/com/flint/core/designsystem/component/searchview/FlintSearchInitializeView.kt (1)
app/src/main/java/com/flint/core/designsystem/theme/Theme.kt (1)
FlintTheme(8-16)
🔇 Additional comments (1)
app/src/main/java/com/flint/core/designsystem/component/searchview/FlintSearchInitializeView.kt (1)
43-49: LGTM!Preview 컴포저블이
FlintTheme으로 올바르게 래핑되어 있어 실제 런타임 환경과 일관된 미리보기를 제공합니다.
| Icon( | ||
| modifier = Modifier.size(120.dp), | ||
| painter = painterResource(R.drawable.ic_gradient_search), | ||
| contentDescription = null, | ||
| tint = Color.Unspecified, | ||
| ) |
There was a problem hiding this comment.
접근성을 위해 contentDescription을 추가하세요.
검색 아이콘은 의미를 전달하는 요소이므로, 스크린 리더 사용자를 위해 적절한 contentDescription을 제공해야 합니다.
♿ 수정 제안
Icon(
modifier = Modifier.size(120.dp),
painter = painterResource(R.drawable.ic_gradient_search),
- contentDescription = null,
+ contentDescription = stringResource(R.string.search_icon_description),
tint = Color.Unspecified,
)🤖 Prompt for AI Agents
In
@app/src/main/java/com/flint/core/designsystem/component/searchview/FlintSearchInitializeView.kt
around lines 26 - 31, The Icon in FlintSearchInitializeView.kt currently sets
contentDescription = null which breaks accessibility; update the Icon call in
the FlintSearchInitializeView composable to provide a meaningful
contentDescription (e.g., use stringResource(R.string.search_icon_description)
or a localized string) instead of null, and add the corresponding entry in
strings.xml to keep it localizable so screen readers can announce the icon
purpose.
| Text( | ||
| text = "떠오르는 작품이 있나요?", | ||
| color = FlintTheme.colors.white, | ||
| style = FlintTheme.typography.head3M18, | ||
| ) |
There was a problem hiding this comment.
하드코딩된 문자열을 string resource로 변경하세요.
국제화(i18n) 지원 및 유지보수성을 위해 UI 텍스트는 strings.xml에 정의하고 stringResource()를 사용해야 합니다.
🌐 수정 제안
res/values/strings.xml에 추가:
<string name="search_initialize_prompt">떠오르는 작품이 있나요?</string>코드 수정:
+import androidx.compose.ui.res.stringResource
+
// ...
Text(
- text = "떠오르는 작품이 있나요?",
+ text = stringResource(R.string.search_initialize_prompt),
color = FlintTheme.colors.white,
style = FlintTheme.typography.head3M18,
)🤖 Prompt for AI Agents
In
@app/src/main/java/com/flint/core/designsystem/component/searchview/FlintSearchInitializeView.kt
around lines 35 - 39, The Text composable in FlintSearchInitializeView (the UI
text "떠오르는 작품이 있나요?") is hardcoded; add a string resource named
search_initialize_prompt to res/values/strings.xml with that Korean text, then
replace the literal in the Text call with
stringResource(R.string.search_initialize_prompt) (ensure you import
androidx.compose.ui.res.stringResource) so the UI text is loaded from resources
for i18n and maintainability.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (5)
app/src/main/java/com/flint/core/designsystem/component/view/FlintSearchInitializeView.kt (3)
20-41:modifier파라미터 추가를 권장합니다.현재 컴포넌트에
modifier파라미터가 없어 부모 컴포저블에서 크기, 패딩, 배경 등을 커스터마이징할 수 없습니다. Compose 컴포넌트 설계 관례에 따라modifier파라미터를 추가하는 것이 좋습니다.♻️ 제안하는 수정
@Composable -fun FlintSearchInitializeView() { +fun FlintSearchInitializeView( + modifier: Modifier = Modifier, +) { Column( + modifier = modifier, verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ) {
35-39: 문자열 리소스 사용을 고려해 주세요.하드코딩된 한국어 문자열
"떠오르는 작품이 있나요?"를strings.xml리소스로 추출하면 향후 다국어 지원(i18n)에 유리합니다.
43-49: Preview에 배경색 추가를 권장합니다.
FlintTheme.colors.white텍스트가 기본 흰색 배경에서 보이지 않을 수 있습니다. Preview에서 실제 앱 배경색을 적용하면 UI 확인이 용이합니다.♻️ 제안하는 수정
@Preview @Composable private fun FlintSearchInitializeViewPreview() { FlintTheme { - FlintSearchInitializeView() + Box(modifier = Modifier.background(FlintTheme.colors.background)) { + FlintSearchInitializeView() + } } }app/src/main/java/com/flint/core/designsystem/component/view/FlintSearchEmptyView.kt (2)
20-41:FlintSearchInitializeView와 코드 중복이 있습니다.두 컴포넌트의 구조가 거의 동일하며, 아이콘과 텍스트만 다릅니다. 공통 베이스 컴포넌트로 추출하면 유지보수성이 향상됩니다. 또한
FlintSearchInitializeView와 동일하게modifier파라미터 추가를 권장합니다.♻️ 공통 컴포넌트 추출 제안
@Composable private fun FlintSearchStateView( @DrawableRes iconRes: Int, message: String, modifier: Modifier = Modifier, ) { Column( modifier = modifier, verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( modifier = Modifier.size(120.dp), painter = painterResource(iconRes), contentDescription = null, tint = Color.Unspecified, ) Spacer(modifier = Modifier.height(12.dp)) Text( text = message, color = FlintTheme.colors.white, style = FlintTheme.typography.head3M18, ) } } @Composable fun FlintSearchInitializeView(modifier: Modifier = Modifier) { FlintSearchStateView( iconRes = R.drawable.ic_gradient_search, message = "떠오르는 작품이 있나요?", modifier = modifier, ) } @Composable fun FlintSearchEmptyView(modifier: Modifier = Modifier) { FlintSearchStateView( iconRes = R.drawable.ic_gradient_none, message = "작품을 찾을 수 없어요", modifier = modifier, ) }
35-39: 문자열 리소스 사용을 고려해 주세요.
FlintSearchInitializeView와 마찬가지로 하드코딩된 문자열을strings.xml로 추출하면 i18n 지원에 유리합니다.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
app/src/main/java/com/flint/core/designsystem/component/image/EditProfileImage.ktapp/src/main/java/com/flint/core/designsystem/component/image/SelectedFilmItem.ktapp/src/main/java/com/flint/core/designsystem/component/view/FlintSearchEmptyView.ktapp/src/main/java/com/flint/core/designsystem/component/view/FlintSearchInitializeView.ktapp/src/main/java/com/flint/presentation/collectioncreate/component/CollectionAddFilmBottomSheet.ktapp/src/main/java/com/flint/presentation/collectioncreate/component/CollectionCreateFilmDeleteModal.kt
✅ Files skipped from review due to trivial changes (1)
- app/src/main/java/com/flint/core/designsystem/component/image/EditProfileImage.kt
🧰 Additional context used
🧬 Code graph analysis (3)
app/src/main/java/com/flint/core/designsystem/component/view/FlintSearchInitializeView.kt (2)
app/src/main/java/com/flint/core/designsystem/theme/Theme.kt (1)
FlintTheme(8-16)app/src/main/java/com/flint/presentation/MainActivity.kt (1)
onCreate(12-26)
app/src/main/java/com/flint/core/designsystem/component/view/FlintSearchEmptyView.kt (1)
app/src/main/java/com/flint/core/designsystem/theme/Theme.kt (1)
FlintTheme(8-16)
app/src/main/java/com/flint/core/designsystem/component/image/SelectedFilmItem.kt (1)
app/src/main/java/com/flint/core/designsystem/component/image/NetworkImage.kt (1)
NetworkImage(22-46)
⏰ 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: PR Lint Check
- GitHub Check: PR Build Check
🔇 Additional comments (3)
app/src/main/java/com/flint/presentation/collectioncreate/component/CollectionCreateFilmDeleteModal.kt (1)
10-35: LGTM!포맷팅 변경(trailing comma 추가)이 적절합니다. Kotlin 스타일 가이드에 부합하며, git diff 가독성을 향상시킵니다.
app/src/main/java/com/flint/core/designsystem/component/image/SelectedFilmItem.kt (1)
20-66: LGTM!modifier를 named argument로 변경하고 trailing comma를 추가한 포맷팅 개선이 적절합니다. 코드 가독성이 향상되었습니다.
app/src/main/java/com/flint/presentation/collectioncreate/component/CollectionAddFilmBottomSheet.kt (1)
11-51: LGTM!Trailing comma 추가 및 multi-line 포맷팅 변경이 적절합니다. 코드 가독성과 git diff 품질이 향상되었습니다.
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (4)
app/src/main/java/com/flint/presentation/collectioncreate/component/CollectionCreateFilmSelect.kt (1)
80-80: Preview에서 URL 단축 서비스 사용 고려사항
buly.kr같은 URL 단축 서비스는 만료되거나 대상이 변경될 수 있어 Preview가 향후 깨질 수 있습니다. 가능하다면 원본 이미지 URL을 사용하거나, 로컬 drawable 리소스를 활용하는 것이 더 안정적입니다.다만 Preview 전용이므로 실제 동작에는 영향이 없습니다.
app/src/main/java/com/flint/core/designsystem/component/view/FlintSearchEmptyView.kt (2)
20-41: Modifier 파라미터 추가를 고려해주세요.이 컴포저블은
modifier파라미터가 없어서 부모 컴포저블에서 크기나 패딩 등을 조절하기 어렵습니다. Compose 컴포넌트 설계 관례에 따라Modifier = Modifier기본 파라미터를 추가하는 것이 좋습니다.또한
FlintSearchInitializeView와 구조가 거의 동일합니다 (Column, Icon 120.dp, Spacer 12.dp, Text). 공통 레이아웃을 추출하여 재사용성을 높이는 것을 고려해보세요.♻️ Modifier 파라미터 추가 예시
@Composable -fun FlintSearchEmptyView() { +fun FlintSearchEmptyView(modifier: Modifier = Modifier) { Column( + modifier = modifier, verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ) {
35-39: 하드코딩된 문자열을 string resource로 추출하세요.
"작품을 찾을 수 없어요"문자열이 하드코딩되어 있습니다. 국제화(i18n) 지원과 일관된 문자열 관리를 위해strings.xml로 추출하는 것이 좋습니다.♻️ 제안된 수정
res/values/strings.xml에 추가:<string name="search_empty_message">작품을 찾을 수 없어요</string>코드 수정:
Text( - text = "작품을 찾을 수 없어요", + text = stringResource(R.string.search_empty_message), color = FlintTheme.colors.white, style = FlintTheme.typography.head3M18, )app/src/main/java/com/flint/core/designsystem/component/view/FlintSearchInitializeView.kt (1)
20-41: FlintSearchEmptyView와 동일한 개선사항을 적용해주세요.
FlintSearchEmptyView와 마찬가지로:
modifier: Modifier = Modifier파라미터 추가"떠오르는 작품이 있나요?"문자열을strings.xml로 추출두 컴포넌트의 구조가 동일하므로, 공통 베이스 컴포넌트를 만들어 아이콘과 텍스트만 파라미터로 받는 방식으로 리팩토링하면 중복을 줄일 수 있습니다.
♻️ 공통 컴포넌트 추출 예시
@Composable private fun FlintSearchStateView( @DrawableRes iconRes: Int, message: String, modifier: Modifier = Modifier, ) { Column( modifier = modifier, verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ) { Icon( modifier = Modifier.size(120.dp), painter = painterResource(iconRes), contentDescription = null, tint = Color.Unspecified, ) Spacer(modifier = Modifier.height(12.dp)) Text( text = message, color = FlintTheme.colors.white, style = FlintTheme.typography.head3M18, ) } }
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (10)
app/src/main/java/com/flint/core/designsystem/component/image/EditProfileImage.ktapp/src/main/java/com/flint/core/designsystem/component/image/SelectedFilmItem.ktapp/src/main/java/com/flint/core/designsystem/component/listView/OttHorizontalList.ktapp/src/main/java/com/flint/core/designsystem/component/view/FlintSearchEmptyView.ktapp/src/main/java/com/flint/core/designsystem/component/view/FlintSearchInitializeView.ktapp/src/main/java/com/flint/data/local/TokenStore.ktapp/src/main/java/com/flint/presentation/collectioncreate/component/CollectionAddFilmBottomSheet.ktapp/src/main/java/com/flint/presentation/collectioncreate/component/CollectionCreateFilmDeleteModal.ktapp/src/main/java/com/flint/presentation/collectioncreate/component/CollectionCreateFilmSection.ktapp/src/main/java/com/flint/presentation/collectioncreate/component/CollectionCreateFilmSelect.kt
✅ Files skipped from review due to trivial changes (1)
- app/src/main/java/com/flint/presentation/collectioncreate/component/CollectionAddFilmBottomSheet.kt
🧰 Additional context used
🧬 Code graph analysis (4)
app/src/main/java/com/flint/core/designsystem/component/view/FlintSearchInitializeView.kt (1)
app/src/main/java/com/flint/core/designsystem/theme/Theme.kt (1)
FlintTheme(8-16)
app/src/main/java/com/flint/core/designsystem/component/image/SelectedFilmItem.kt (1)
app/src/main/java/com/flint/core/designsystem/component/image/NetworkImage.kt (1)
NetworkImage(22-46)
app/src/main/java/com/flint/core/designsystem/component/view/FlintSearchEmptyView.kt (1)
app/src/main/java/com/flint/core/designsystem/theme/Theme.kt (1)
FlintTheme(8-16)
app/src/main/java/com/flint/core/designsystem/component/image/EditProfileImage.kt (1)
app/src/main/java/com/flint/core/designsystem/component/image/ProfileImage.kt (1)
ProfileImage(11-29)
🔇 Additional comments (8)
app/src/main/java/com/flint/core/designsystem/component/listView/OttHorizontalList.kt (2)
23-23: LGTM!상수명이 Kotlin 컨벤션(SCREAMING_SNAKE_CASE)에 맞게 올바르게 변경되었습니다.
42-43: LGTM!새 상수명
MAX_OTT_SHOWING_COUNT사용이 일관되게 적용되었습니다.app/src/main/java/com/flint/data/local/TokenStore.kt (1)
1-3: 빈 클래스가 의도적으로 추가된 것인지 확인 필요
TokenStore클래스가 멤버 없이 빈 상태로 추가되었습니다. 이 PR의 목적(FlintSearchInitializeView, FlintSearchEmptyView 구현)과 관련이 없어 보이며, 향후 구현을 위한 placeholder인지 실수로 포함된 것인지 확인이 필요합니다.만약 향후 구현 예정이라면 TODO 주석을 추가하거나, 별도 PR로 분리하는 것을 권장합니다.
app/src/main/java/com/flint/presentation/collectioncreate/component/CollectionCreateFilmSection.kt (1)
105-105: LGTM (이전 파일과 동일한 URL 단축 서비스 사용에 대한 참고사항 적용)Preview URL이 업데이트되었습니다.
CollectionCreateFilmSelect.kt에서 언급한 URL 단축 서비스 관련 고려사항이 동일하게 적용됩니다.app/src/main/java/com/flint/core/designsystem/component/image/SelectedFilmItem.kt (2)
24-47: LGTM!ktlint 스타일 가이드에 맞게 trailing comma와 named parameter 형식이 적용되었습니다. 코드 가독성과 향후 diff 가독성이 개선됩니다.
51-65: LGTM!Preview 함수도 동일한 포맷팅 스타일이 일관되게 적용되었습니다.
app/src/main/java/com/flint/presentation/collectioncreate/component/CollectionCreateFilmDeleteModal.kt (1)
10-24: LGTM!ktlint 스타일에 맞춰 trailing comma가 추가되었습니다. 코드 동작에는 변경이 없으며 프로젝트 전반의 포매팅 일관성을 유지합니다.
app/src/main/java/com/flint/core/designsystem/component/image/EditProfileImage.kt (1)
21-52: LGTM!modifier 체인에 대한 named parameter 스타일과 trailing comma가 일관되게 적용되었습니다. 가독성이 향상되었고 코드 동작에는 영향이 없습니다.
| import com.flint.core.designsystem.theme.FlintTheme | ||
|
|
||
| @Composable | ||
| fun FlintSearchInitializeView() { |
There was a problem hiding this comment.
p2
이거 이름 너무 긴 것 같은ㅎㅎ..
FlintSearchInitView 느낌은 어떨까요?
|
역시 우리 찬미 쵝오다 |
언니 😢 보고싶어요오오오 |
📮 관련 이슈
📌 작업 내용
📸 스크린샷
| 스크린샷 |


😅 미구현
🫛 To. 리뷰어
Summary by CodeRabbit
릴리스 노트
새로운 기능
스타일
리팩토링
✏️ Tip: You can customize this high-level summary in your review settings.