Skip to content

[FEAT/#87] 챌린지 로딩 스크린 구현 #89

Merged
hyeminililo merged 8 commits intodevelopfrom
feat/#87-challenge-loading-view
Jan 19, 2026
Merged

[FEAT/#87] 챌린지 로딩 스크린 구현 #89
hyeminililo merged 8 commits intodevelopfrom
feat/#87-challenge-loading-view

Conversation

@hyeminililo
Copy link
Copy Markdown
Contributor

@hyeminililo hyeminililo commented Jan 18, 2026

Related issue 🛠

Work Description ✏️

  • 챌린지 로딩 스크린 구현

Screenshot 📸

image

Uncompleted Tasks 😅

  • N/A

To Reviewers 📢

이것은 로딩 클래스라 따로 State는 구현하지 않았습니다 ! 제가 구현한 챌린지 뷰들에 로딩스크린을 넣으면 되는거 맞나욥 ??

Summary by CodeRabbit

  • 새로운 기능
    • 챌린지 로딩 화면이 추가되었습니다. 좌측 닫기 버튼으로 화면을 닫을 수 있고, 중앙 정렬된 제목(다국어 표기 가능), 로딩 일러스트 및 복수의 상태 메시지로 진행 상황을 명확히 안내합니다. 시각적 안내를 통해 로딩 중 사용자 경험이 향상되었습니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@hyeminililo hyeminililo requested a review from a team as a code owner January 18, 2026 19:05
@hyeminililo hyeminililo self-assigned this Jan 18, 2026
@hyeminililo hyeminililo added FEAT✨ 새로운 기능 구현 혜민🍒 혜민 담당 labels Jan 18, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 18, 2026

Walkthrough

사용자 피부 컨디션 기반 TO-DO 미션 생성 중 표시되는 Jetpack Compose 로딩 화면 컴포넌트 ChallengeLoadingScreen(paddingValues: PaddingValues, modifier: Modifier = Modifier, onCloseClick: () -> Unit)를 새로 추가합니다(닫기 버튼, 제목, 로딩 일러스트, 상태 텍스트, Preview 포함).

Changes

Cohort / File(s) Summary
새로운 로딩 화면 컴포넌트
app/src/main/java/com/cherrish/android/presentation/challenge/ChallengeLoadingScreen.kt
공개 Composable ChallengeLoadingScreen(paddingValues: PaddingValues, modifier: Modifier = Modifier, onCloseClick: () -> Unit) 추가: 왼쪽 화살표 닫기 버튼(noRippleClickable으로 클릭 처리), 중앙 정렬 제목(AnnotatedString 사용), 내비게이션 바 패딩 적용, 로딩 일러스트 참조, 다수 상태 텍스트 및 @Preview 포함. 테마, 타이포그래피 및 색상 사용.

Sequence Diagram(s)

(생성 조건 미충족 — 단일 UI 컴포넌트 추가로 시퀀스 다이어그램 생략)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • nhyeonii
  • usuuhyn
  • sohee6989
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% 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의 주요 변경사항인 챌린지 로딩 스크린 구현을 명확하고 간결하게 설명합니다.
Description check ✅ Passed PR 설명이 템플릿을 따르며 관련 이슈, 작업 내용, 스크린샷, 미완료 작업, 리뷰어 의견을 모두 포함하고 있습니다.
Linked Issues check ✅ Passed PR의 코드 변경사항이 이슈 #87의 요구사항인 로딩 UI 구현 및 ktLint 실행을 충족합니다.
Out of Scope Changes check ✅ Passed 모든 변경사항이 이슈 #87의 로딩 UI 구현 요구사항과 직접 관련되어 있으며 범위를 벗어나지 않습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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
Copy Markdown

@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

🤖 Fix all issues with AI agents
In
`@app/src/main/java/com/cherrish/android/presentation/challenge/ChallengeLoadingScreen.kt`:
- Around line 39-46: The Icon in ChallengeLoadingScreen.kt is clickable
(noRippleClickable with onCloseClick) but has contentDescription = null; update
the Icon to provide an accessible label by setting contentDescription to a
localized string (use stringResource with a new string like R.string.cd_back or
reuse an existing "back" label) so screen readers announce the action; ensure
the string resource key and usage reference the Icon in ChallengeLoadingScreen
(and add the string to res/values/strings.xml).

Comment on lines +39 to +46
Icon(
modifier = Modifier
.noRippleClickable(onClick = onCloseClick)
.align(Alignment.Start),
imageVector = ImageVector.vectorResource(R.drawable.ic_arrow_left),
contentDescription = null,
tint = CherrishTheme.colors.gray1000
)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

접근성: 클릭 가능한 아이콘에 contentDescription 필요
현재 뒤로가기 아이콘이 클릭 가능하지만 contentDescription = null이라 스크린리더가 기능을 알 수 없습니다. 접근성상 차단 이슈이므로 라벨을 제공해 주세요.

🔧 제안 수정
-            contentDescription = null,
+            contentDescription = stringResource(R.string.challenge_loading_close),
🤖 Prompt for AI Agents
In
`@app/src/main/java/com/cherrish/android/presentation/challenge/ChallengeLoadingScreen.kt`
around lines 39 - 46, The Icon in ChallengeLoadingScreen.kt is clickable
(noRippleClickable with onCloseClick) but has contentDescription = null; update
the Icon to provide an accessible label by setting contentDescription to a
localized string (use stringResource with a new string like R.string.cd_back or
reuse an existing "back" label) so screen readers announce the action; ensure
the string resource key and usage reference the Icon in ChallengeLoadingScreen
(and add the string to res/values/strings.xml).

Comment on lines +52 to +60
withStyle(
style = SpanStyle(color = CherrishTheme.colors.red700)
) {
append("피부 컨디션 ")
}
withStyle(
style = SpanStyle(color = CherrishTheme.colors.gray800)
) {
append("관리 방향을 바탕으로")
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.

P1 : 여기 글자 사이에도 패딩이 있어요 ~~

image

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

앗 네에 ~~!!

Copy link
Copy Markdown
Contributor

@nhyeonii nhyeonii left a comment

Choose a reason for hiding this comment

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

패딩값 확인해주시와요

Copy link
Copy Markdown
Contributor

@nhyeonii nhyeonii left a comment

Choose a reason for hiding this comment

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

굿뜨굳ㅅ드~~

Copy link
Copy Markdown
Contributor

@sohee6989 sohee6989 left a comment

Choose a reason for hiding this comment

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

수고하셧습니다!
리뷰 확인 한 번 부탁드립니다!

.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally
) {
Spacer(modifier = Modifier.weight(44f))
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.

p1: 이거 44.dp로 주자요오!!
weight로 주면 헤더 위치가 화면마다 달라져서 ui 적으로 느낌이 달라질 것 같아요!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

했뚭니다 !

modifier = Modifier
.noRippleClickable(onClick = onCloseClick)
.align(Alignment.Start)
.padding(start = 10.dp),
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.

p1: 여기 start만 10.dp 패딩 주면 상단 헤더에 대해서 44.dp가 아닌 55.dp를 줘야 되지 않을까요?
개인적으로 영역을 패딩 10.dp로 줬으니 이 아이콘에 padding 10.dp를 주는게 터치 영역에 대해서 더 맞을 것 같아요!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

감사합니다 감 사드릴게요

)

Text(
text = "관리 방향을 바탕으로 ",
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.

p1: 뒤에 공백 없어주세요!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

없앴어요 !

)
}

Spacer(modifier = Modifier.weight(2f))
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.

p1: 여기도 weight가 아닌 dp로!
(관련해서 구두로 설명드리겠습니다!)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

알 거가타요 ~~ 또 설명해조요


Spacer(modifier = Modifier.weight(60f))

Image(
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.

p1: 이거 그냥 size 150.dp 지정해주느게 좋을 것 같아요!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

이미지요 ??

style = CherrishTheme.typography.title1SB18
)

Spacer(modifier = Modifier.weight(60f))
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.

p1: height(60.dp)로!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

그럼 로딩같은 정적인것은 이렇게 할까요 ??

contentDescription = null
)

Spacer(modifier = Modifier.weight(80f))
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.

p1: 여기도 height 80.dp로!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

넵 !!!

style = CherrishTheme.typography.body3M12
)

Spacer(modifier = Modifier.weight(30f))
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.

p1: 여기도 고정값으로!

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

완료 !!!!
image

Copy link
Copy Markdown
Contributor

@sohee6989 sohee6989 left a comment

Choose a reason for hiding this comment

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

수고햇쓰비낟~!!!!!!!!!!!!!!!!!!!!

@hyeminililo hyeminililo merged commit 784fffc into develop Jan 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

FEAT✨ 새로운 기능 구현 혜민🍒 혜민 담당

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 챌린지 로딩 UI 구현

3 participants