Skip to content

[Feat] 1차 QA 수정사항 반영 - #217

Open
ckals413 wants to merge 3 commits into
developfrom
FLT-25-1차-qa

Hidden character warning

The head ref may contain hidden characters: "FLT-25-1\ucc28-qa"
Open

[Feat] 1차 QA 수정사항 반영#217
ckals413 wants to merge 3 commits into
developfrom
FLT-25-1차-qa

Conversation

@ckals413

@ckals413 ckals413 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

📮 관련 이슈

  • closed #이슈번호

📌 작업 내용

  • 온보딩 콘텐츠 검색 화면 로딩 인디케이터 추가 (초기 진입 및 장르 칩 선택 시)
  • 컬렉션 리스트 아이템 제목/설명 한글 줄바꿈 개선 (zero-width space 삽입)
  • 온보딩 콘텐츠 아이템 제목 한글 줄바꿈 개선
  • 취향 키워드 업데이트 기준 텍스트 수정 (10개 → 20개)

😅 미구현ㅂ- [ ] 온보딩 done 회원 정보 저장

🫛 To. 리뷰어

  • 온보딩 done 회원 정보 저장은 추가 논의가 필요해 남겨뒀습니다

Summary by CodeRabbit

  • New Features

    • 한글 제목/설명과 영화 제목에서 줄바꿈이 더 자연스럽게 보이도록 텍스트 표시가 개선되었습니다.
    • 온보딩 콘텐츠 목록의 로딩 상태에 전체 폭 로딩 인디케이터가 표시됩니다.
  • Bug Fixes

    • 긴 한글 문구가 화면에서 더 잘 끊겨 보이도록 줄바꿈 처리가 강화되었습니다.
    • 프로필 안내 문구의 업데이트 가능 조건이 최신 기준으로 반영되었습니다.

@ckals413 ckals413 self-assigned this Jun 29, 2026
@coderabbitai

coderabbitai Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

CollectionFileItemOnboardingContentItem에 한글 음절 뒤에 zero-width space를 삽입하는 addKoreanLineBreaks() 확장 함수를 각각 추가하여 title/description 텍스트에 적용합니다. OnboardingContentScreen의 로딩 상태에 FlintLoadingIndicator를 추가하고, ProfileKeywordSection의 업데이트 허용 기준 작품 수를 20개로 변경합니다.

Changes

한글 줄바꿈, 로딩 UI 및 문구 수정

Layer / File(s) Summary
addKoreanLineBreaks() 구현 및 적용
app/.../collectionlist/component/CollectionFileItem.kt, app/.../onboarding/component/OnboardingContentItem.kt
각 파일에 private fun String.addKoreanLineBreaks()를 추가하여 한글 음절(0xAC00..0xD7A3) 뒤에 U+200B를 삽입하고, title/description Text에 변환된 문자열을 전달합니다.
온보딩 로딩 인디케이터 추가
app/.../onboarding/OnboardingContentScreen.kt
UiState.Loading 분기에서 그리드 3칸을 span하는 컨테이너 안에 FlintLoadingIndicator를 렌더링하도록 변경합니다.
프로필 키워드 기준 문구 수정
app/.../profile/component/ProfileKeywordSection.kt
InfoModalTrigger의 텍스트에서 저장 작품 업데이트 허용 기준을 "10개 이상"에서 "20개 이상"으로 변경합니다.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • imflint/Flint-Android#111: CollectionFileItem.kt에서 텍스트 레이아웃 관련 수정을 함께 다루는 PR으로, 이번 PR의 addKoreanLineBreaks() 적용과 동일한 컴포넌트를 변경합니다.

Suggested labels

📱 UI, Style 🎨

Suggested reviewers

  • nahy-512
  • kimjw2003
  • giovannijunseokim

Poem

🐰 토끼가 글자를 톡톡 두드려요,
한글 음절 사이에 숨결을 불어넣죠.
제로폭 요정이 줄바꿈 길 열어주고,
로딩 빙글빙글 이제 예쁘게 돌아가요.
스무 개의 작품, 새 기준이 되었네요! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 11.11% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR의 핵심인 QA 수정사항 반영을 잘 나타내며, 변경 내용과 직접 관련된 간결한 제목입니다.
Description check ✅ Passed 필수 섹션을 대부분 포함하고 있으며 작업 내용과 미구현, 리뷰어 메모가 있어 템플릿 요구사항을 대체로 충족합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch FLT-25-1차-qa

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
app/src/main/java/com/flint/presentation/onboarding/component/OnboardingContentItem.kt (1)

120-125: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

중복된 줄바꿈 헬퍼는 공용 유틸로 합쳐주세요.

같은 addKoreanLineBreaks() 구현이 CollectionFileItem.kt에도 별도로 들어가 있어서, 이후 문자 범위나 zero-width space 처리 방식을 바꿀 때 두 파일이 쉽게 어긋납니다. presentation 공용 확장 함수로 올리고 두 컴포넌트가 같이 쓰도록 정리하는 편이 안전합니다.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@app/src/main/java/com/flint/presentation/onboarding/component/OnboardingContentItem.kt`
around lines 120 - 125, The addKoreanLineBreaks() logic is duplicated in
OnboardingContentItem and CollectionFileItem, so move this String extension into
a shared presentation-level utility/extension file and have both components use
the same implementation. Keep the symbol name addKoreanLineBreaks() recognizable
in the new shared location, then remove the local copies from each component so
the Hangul range and zero-width space behavior stay consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In
`@app/src/main/java/com/flint/presentation/onboarding/component/OnboardingContentItem.kt`:
- Around line 120-125: The addKoreanLineBreaks() logic is duplicated in
OnboardingContentItem and CollectionFileItem, so move this String extension into
a shared presentation-level utility/extension file and have both components use
the same implementation. Keep the symbol name addKoreanLineBreaks() recognizable
in the new shared location, then remove the local copies from each component so
the Hangul range and zero-width space behavior stay consistent.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 21cb3dfc-1225-470f-8a73-8597821f6d83

📥 Commits

Reviewing files that changed from the base of the PR and between 84a3f0a and d4ef4f9.

📒 Files selected for processing (4)
  • app/src/main/java/com/flint/presentation/collectionlist/component/CollectionFileItem.kt
  • app/src/main/java/com/flint/presentation/onboarding/OnboardingContentScreen.kt
  • app/src/main/java/com/flint/presentation/onboarding/component/OnboardingContentItem.kt
  • app/src/main/java/com/flint/presentation/profile/component/ProfileKeywordSection.kt

@kimjw2003 kimjw2003 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

QA 수정사항 잘 확인했습니다 👍
로딩 인디케이터는 searchContents()가 IME onSearch에만 물려 있어서 타이핑 중 깜빡임 없이 초기 진입 / 장르 칩 / 검색 실행 시점에만 뜨는 것 확인했습니다. 기존 Empty/Failure 브랜치와 GridItemSpan(3) + 300.dp도 맞춰져 있어서 좋네요.

한글 줄바꿈 관련해서 몇 가지만 남깁니다.


1. addKoreanLineBreaks() 중복 정의 → 공용 확장으로 빼주세요

CollectionFileItem.kt:211OnboardingContentItem.kt:120 에 완전히 동일한 함수가 각각 private으로 복사돼 있습니다. (설명 주석은 OnboardingContentItem 쪽에만 있고요.)

이미 com.flint.core.common.extension 패키지가 있으니 StringExt.kt 하나 만들어서 옮기는 게 좋을 것 같습니다. 특히 지금 고친 두 곳 말고도 한글 + maxLines + TextOverflow.Ellipsis 조합이 아래에도 똑같이 있어서, 공용화 안 하면 QA 돌 때마다 복붙이 늘어날 것 같아요.

  • savedcontent/SavedContentListItem.kt
  • home/component/RecommendCollectionCard.kt
  • collectiondetail/component/CollectionDetailThumbnail.kt
  • collectioncreate/component/CollectionCreateContentSection.kt
  • profile/component/CollectionCreateContentBookmark.kt

이번 PR에서 전부 적용할 필요는 없지만, 최소한 함수 위치는 공용으로 빼두면 좋겠습니다.

2. ZWSP를 raw 비가시 문자로 넣지 말고 '\u200B' 이스케이프로

if (char.code in 0xAC00..0xD7A3) append('')

od로 확인해보니 실제 U+200B 문자가 소스에 그대로 박혀 있습니다 (0xE2 0x80 0x8B). 동작은 하는데,

  • GitHub diff나 에디터에서 뭐가 들어갔는지 눈으로 확인이 안 됩니다 (지금 이 리뷰 쓰면서도 od 떠서 확인했어요)
  • 복붙 / 에디터 인코딩 설정에 따라 U+FEFF 같은 다른 비가시 문자로 바뀌어도 아무도 눈치 못 챕니다
private const val ZERO_WIDTH_SPACE = '\u200B'

이렇게 상수로 빼주시면 좋겠습니다. 매직 넘버 0xAC00..0xD7A3도 같이 이름 붙여주면 (HANGUL_SYLLABLE_RANGE) 더 읽기 좋을 것 같아요.

3. recomposition마다 문자열 재생성 → remember

OnboardingContentItem.kt:88, CollectionFileItem.kt:69,77 모두 composable body에서 매번 호출돼서, LazyVerticalGrid 스크롤 중 보이는 아이템마다 원본 길이의 최대 2배짜리 String을 새로 할당합니다.

val displayTitle = remember(title) { title.addKoreanLineBreaks() }

체감될 정도는 아닐 수 있지만 순수 함수라 캐싱 비용이 거의 없어서 넣어두면 좋을 것 같습니다.

4. import 순서 (ktlint)

OnboardingContentScreen.kt:52...component.indicator.FlintLoadingIndicator...component.topappbar.FlintBackTopAppbar 뒤에 들어가 있어서 ktlint import-ordering 위반입니다. CI에서 ktlintCheck가 주석 처리돼 있어 안 걸리긴 하는데, ./gradlew ktlintFormat 한 번 돌려주시면 좋겠습니다.


확인만 부탁드려요

  • 20개 텍스트: 클라에는 임계값 상수 없이 서버가 내려주는 isRecalculatable 플래그로 버튼이 게이팅되고 있어서 코드상 충돌은 없습니다. 서버 기준도 20으로 같이 바뀌었는지만 확인 부탁드립니다 🙏
  • 줄바꿈 단위: ZWSP를 모든 한글 음절 뒤에 넣으면 어절이 아니라 글자 단위로 끊깁니다 (저장한 작 / 품들에서). 한글 조판상 허용되는 방식이긴 한데, 디자이너분이 의도한 게 맞는지 한 번 봐주시면 좋을 것 같아요.
  • 문자열이 한글로 끝나면 맨 뒤에도 ZWSP가 하나 붙는데, 렌더링엔 영향 없지만 불필요하긴 합니다.

미구현으로 남기신 온보딩 done 회원 정보 저장은 별도 이슈로 트래킹하는 게 좋을 것 같습니다!

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