Skip to content

Conversation

@seoyoon513
Copy link
Contributor

@seoyoon513 seoyoon513 commented Jul 10, 2025

🔗 관련 이슈

📙 작업 설명

  • 설정 화면 UI 구현
  • screens 모듈을 통한 네비게이션 적용

📸 스크린샷 또는 시연 영상

Reed_.mp4

💬 추가 설명 or 리뷰 포인트

  • 내서재 화면 우측 상단에 임시로 설정 아이콘을 배치했습니다. 해당 아이콘을 누르면 설정 화면으로 이동합니다.
  • 로그아웃 기능 이전은 다음 스프린트에서 회원탈퇴와 함께 진행하겠습니다.
  • 기존에는 메모리 누수 이슈로 ViewModel에서 Context 참조가 권장되지 않아 버전 정보 로직을 Screen쪽에서 구현했었는데요. Circuit의 Presenter의 경우 Screen 생명주기를 따르기 때문에 Context 관련 작업을 Presenter에서 진행했습니다.
  • Screen에는 UI 관련 컴포저블 함수만 남기고 그 외 로직은 Presenter로 분리한건데, Presenter에서 State에 포함시키지 않고 UI에서 참조하는 방식을 모르겠더라구요 ㅠ 그래서 일단 state로 넣어뒀는데 앱 버전같은 static 정보를 상태로 관리하는게 맞는지는 의문이네요🤔 여기에 대한 의견 주십쇼!!
  • 추가로 바텀네비가 있는 화면에서 설정화면으로 이동할 때 바텀네비영역이 시간차로 없어지면서 화면이 들썩?거리는 현상 있습니다

Summary by CodeRabbit

  • 신규 기능

    • 라이브러리 화면 우측 상단에 설정 아이콘 버튼이 추가되어 설정 화면으로 이동할 수 있습니다.
    • 설정 화면이 새롭게 도입되어 개인정보 처리방침, 이용약관, 오픈소스 라이선스, 앱 버전 확인, 로그아웃, 회원 탈퇴 기능을 제공합니다.
    • 로그아웃 및 회원 탈퇴 시 확인용 바텀시트가 표시되어 안전하게 진행할 수 있습니다.
  • 디자인 시스템

    • 새로운 구분선 UI 컴포넌트가 추가되었습니다.
  • 문서 및 리소스

    • 설정 화면 관련 한글 문자열 리소스가 추가되었습니다.
  • 기타

    • 설정 기능 모듈이 앱 빌드 구성에 통합되었습니다.

@coderabbitai
Copy link

coderabbitai bot commented Jul 10, 2025

"""

Walkthrough

새로운 "설정" 기능 모듈이 추가되어 프로젝트에 통합되었습니다. 라이브러리 화면에서 설정 아이콘 버튼을 통해 설정 화면으로 이동할 수 있게 되었으며, 설정 화면 UI, 상태 관리, 이벤트 처리, 다이얼로그 등이 구현되었습니다. 관련 네비게이션, 의존성, 문자열 리소스, 빌드 설정도 반영되었습니다.

Changes

파일/경로 요약 변경 요약
app/build.gradle.kts, settings.gradle.kts settings 기능 모듈 의존성 및 프로젝트에 모듈 포함
core/designsystem/.../ReedDivider.kt ReedDivider 컴포저블 및 프리뷰 추가
feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/* 설정 아이콘 버튼 추가, OnSettingsClick 이벤트 처리, 네비게이션 연결
feature/settings/.gitignore, build.gradle.kts settings 모듈 빌드 설정, .gitignore 추가
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/* SettingsPresenter, SettingsScreen, SettingsUiState 등 전체 UI/로직
feature/settings/src/main/res/values/strings.xml 설정 화면용 한글 문자열 14개 추가
screens/src/main/kotlin/com/ninecraft/booket/screens/Screens.kt SettingsScreen 데이터 객체 추가

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant LibraryScreen
    participant LibraryPresenter
    participant Navigator
    participant SettingsScreen
    participant SettingsPresenter

    User->>LibraryScreen: 설정 아이콘 클릭
    LibraryScreen->>LibraryPresenter: OnSettingsClick 이벤트 발생
    LibraryPresenter->>Navigator: SettingsScreen으로 이동 요청
    Navigator->>SettingsScreen: SettingsScreen 표시
    SettingsScreen->>SettingsPresenter: UI 상태 및 이벤트 처리
    User->>SettingsScreen: 각종 설정 항목 클릭/다이얼로그 상호작용
    SettingsScreen->>SettingsPresenter: SettingsUiEvent 전달
    SettingsPresenter->>SettingsScreen: 상태 갱신
Loading

Assessment against linked issues

Objective Addressed Explanation
설정 화면 UI 구현 (#34)
개인정보 처리 방침, 이용약관 등 웹 페이지 연결 (#34) 웹 페이지 연결 로직이 구현되어 있지 않음
로그아웃 기능 이전 (내서재 -> 설정) (#34) 로그아웃 UI/이벤트는 있으나 실제 로그아웃 동작 없음

Assessment against linked issues: Out-of-scope changes

Code Change (file_path) Explanation
ReedDivider 컴포넌트 추가 (core/designsystem/component/divider/ReedDivider.kt) 설정 화면과 직접적 연관이 없으며, 디자인 시스템 확장으로 보이나 명시적 요구사항에 포함되지 않음

Suggested reviewers

  • easyhooon

Poem

🐰
새로 열린 설정의 문,
토끼는 기뻐 깡총 뛰네!
로그아웃, 탈퇴도 척척,
다이얼로그로 확인까지 똑똑!
버튼 하나로 이동하는 길,
코드 속에 숨겨진 토끼의 꿈길~
🛠️✨
"""

✨ 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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need 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)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@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: 5

🧹 Nitpick comments (4)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/divider/ReedDivider.kt (1)

14-14: 매개변수 목록에서 불필요한 쉼표 제거

매개변수 목록 끝에 불필요한 쉼표가 있습니다.

-fun ReedDivider(modifier: Modifier = Modifier,) {
+fun ReedDivider(modifier: Modifier = Modifier) {
feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryScreen.kt (1)

66-77: 설정 아이콘 버튼 구현 개선 제안

설정 아이콘 버튼이 적절하게 구현되었지만, 테마 일관성을 위해 색상 설정을 개선할 수 있습니다.

                Icon(
                    imageVector = ImageVector.vectorResource(id = com.ninecraft.booket.core.designsystem.R.drawable.ic_settings),
                    contentDescription = "Settings Icon",
-                    tint = Color.Unspecified,
+                    tint = ReedTheme.colors.onSurface,
                )

이렇게 하면 테마 색상을 사용하여 다크 모드 등에서도 일관된 색상을 유지할 수 있습니다.

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsPresenter.kt (2)

39-40: TODO 항목들에 대한 구현이 필요합니다.

웹뷰 화면 이동, 로그아웃, 회원탈퇴 기능이 아직 구현되지 않았습니다. 이러한 기능들의 구현을 추적하기 위한 이슈를 생성하시겠습니까?

Also applies to: 61-62, 65-66


84-92: printStackTrace() 대신 로깅 프레임워크 사용을 권장합니다.

프로덕션 환경에서는 printStackTrace()보다 적절한 로깅 메커니즘을 사용하는 것이 좋습니다.

 private fun getAppVersion(context: Context): String {
     return try {
         val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
         packageInfo.versionName ?: ""
     } catch (e: PackageManager.NameNotFoundException) {
-        e.printStackTrace()
+        // 로깅 프레임워크 사용 예시: Log.e(TAG, "Failed to get app version", e)
         ""
     }
 }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3b868b8 and b5278b3.

📒 Files selected for processing (13)
  • app/build.gradle.kts (1 hunks)
  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/divider/ReedDivider.kt (1 hunks)
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryPresenter.kt (2 hunks)
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryScreen.kt (2 hunks)
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryUiState.kt (1 hunks)
  • feature/settings/.gitignore (1 hunks)
  • feature/settings/build.gradle.kts (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsPresenter.kt (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsUiState.kt (1 hunks)
  • feature/settings/src/main/res/values/strings.xml (1 hunks)
  • screens/src/main/kotlin/com/ninecraft/booket/screens/Screens.kt (1 hunks)
  • settings.gradle.kts (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
screens/src/main/kotlin/com/ninecraft/booket/screens/Screens.kt (1)
Learnt from: seoyoon513
PR: YAPP-Github/Reed-Android#35
File: feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/TermsAgreementScreen.kt:127-127
Timestamp: 2025-07-09T01:14:29.836Z
Learning: In the Reed-Android project's TermsAgreementScreen.kt, the OnTermDetailClick event is intentionally passed an empty string for the URL parameter because the actual URLs for terms detail pages haven't been decided yet. This is a temporary implementation that will be updated once the URLs are finalized.
feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryPresenter.kt (1)
Learnt from: seoyoon513
PR: YAPP-Github/Reed-Android#35
File: feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/TermsAgreementScreen.kt:127-127
Timestamp: 2025-07-09T01:14:29.836Z
Learning: In the Reed-Android project's TermsAgreementScreen.kt, the OnTermDetailClick event is intentionally passed an empty string for the URL parameter because the actual URLs for terms detail pages haven't been decided yet. This is a temporary implementation that will be updated once the URLs are finalized.
🧬 Code Graph Analysis (2)
feature/settings/build.gradle.kts (1)
build-logic/src/main/kotlin/com/ninecraft/booket/convention/Dependencies.kt (1)
  • ksp (14-16)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/divider/ReedDivider.kt (1)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/theme/Theme.kt (1)
  • ReedTheme (14-21)
⏰ 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). (1)
  • GitHub Check: ci-build
🔇 Additional comments (16)
feature/settings/.gitignore (1)

1-1: 표준 Android 모듈 .gitignore 파일이 올바르게 구성되었습니다.

빌드 아티팩트를 제외하는 표준 패턴을 따르고 있습니다.

settings.gradle.kts (1)

42-42: 새로운 설정 기능 모듈이 올바르게 포함되었습니다.

다른 기능 모듈들과 일관된 네이밍 패턴을 따르고 있습니다.

screens/src/main/kotlin/com/ninecraft/booket/screens/Screens.kt (1)

25-26: 설정 화면 객체가 기존 패턴과 일관되게 구현되었습니다.

다른 화면 객체들과 동일한 구조를 따르고 있으며, @parcelize 애노테이션과 ReedScreen 상속이 올바르게 적용되었습니다.

feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryUiState.kt (1)

20-20: 설정 클릭 이벤트가 기존 UI 이벤트 패턴과 일관되게 추가되었습니다.

다른 UI 이벤트들과 동일한 data object 패턴을 사용하고 있습니다.

app/build.gradle.kts (1)

55-55: 설정 기능 모듈 종속성이 올바르게 추가되었습니다.

다른 기능 모듈들과 일관된 패턴을 따르고 있으며, 앱 모듈에서 설정 기능을 사용할 수 있도록 적절히 구성되었습니다.

feature/settings/build.gradle.kts (1)

1-21: 빌드 구성이 올바르게 설정되었습니다.

새로운 settings 기능 모듈을 위한 빌드 구성이 적절하게 설정되어 있습니다. 필요한 플러그인들과 의존성이 올바르게 구성되어 있습니다.

feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryPresenter.kt (2)

13-13: 적절한 import 추가

SettingsScreen import가 올바르게 추가되었습니다.


80-82: 설정 화면 네비게이션 구현이 올바릅니다.

OnSettingsClick 이벤트 처리가 기존 패턴을 따라 정확히 구현되었습니다. navigator.goTo를 사용한 네비게이션 방식이 적절합니다.

core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/divider/ReedDivider.kt (2)

15-21: 디바이더 컴포넌트 구현이 적절합니다.

Box를 사용한 구현과 테마 색상 사용이 올바르게 되어 있습니다.


23-29: 프리뷰 함수가 올바르게 구현되었습니다.

ReedTheme으로 감싸진 프리뷰 함수가 적절하게 구성되어 있습니다.

feature/settings/src/main/res/values/strings.xml (1)

3-6: 문자열 리소스가 적절하게 구성되었습니다.

설정 화면에 필요한 한국어 문자열 리소스들이 잘 정의되어 있습니다.

Also applies to: 8-10, 12-15

feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryScreen.kt (1)

12-13: 적절한 import 추가

IconButton과 벡터 리소스 사용을 위한 import가 올바르게 추가되었습니다.

Also applies to: 18-21

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsPresenter.kt (1)

20-23: Context 처리가 적절하게 구현되었습니다.

메모리 누수를 방지하기 위해 ApplicationContext를 사용한 것이 좋습니다.

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsUiState.kt (1)

1-23: 상태 및 이벤트 정의가 잘 구성되었습니다.

Circuit 아키텍처 패턴을 잘 따르고 있으며, 단방향 데이터 흐름을 위한 구조가 명확합니다.

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt (2)

262-349: 회원탈퇴 확인 바텀시트가 잘 구현되었습니다.

체크박스를 통한 확인 절차와 버튼 활성화 로직이 적절하게 구현되었습니다.


71-71: OnTermDetailClick 이벤트의 title 파라미터를 적절히 사용해야 합니다.

각 설정 항목에 대한 적절한 title을 전달하거나, 파라미터가 필요없다면 이벤트 구조를 재검토하는 것이 좋습니다.

-                state.eventSink(SettingsUiEvent.OnTermDetailClick(""))
+                state.eventSink(SettingsUiEvent.OnTermDetailClick(stringResource(R.string.settings_privacy_policy)))

다른 항목들도 유사하게 수정하시기 바랍니다.

Also applies to: 84-84, 97-97

⛔ Skipped due to learnings
Learnt from: seoyoon513
PR: YAPP-Github/Reed-Android#35
File: feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/TermsAgreementScreen.kt:127-127
Timestamp: 2025-07-09T01:14:29.836Z
Learning: In the Reed-Android project's TermsAgreementScreen.kt, the OnTermDetailClick event is intentionally passed an empty string for the URL parameter because the actual URLs for terms detail pages haven't been decided yet. This is a temporary implementation that will be updated once the URLs are finalized.

@easyhooon
Copy link
Contributor

easyhooon commented Jul 10, 2025

앱 버전같은 static 정보를 상태로 관리하는게 맞는지는 의문이네요🤔

상태로 관리할 필요없으면 UI에 두는게? remember 로 감싸서 recomposition 될때마다 version 가져오지 않도록만 막아주면 될 것 같음!
다만 gerVersion 함수이거 어디에 위치시킬지, core:common에 두기엔 사용하는 곳이 feature:settings 밖에 없긴한데 고민좀 해봐야할듯함

UI에 구현하면 Presenter에 context 주입해둔것도 필요 없으니 제거해도 될 것 같음

@easyhooon
Copy link
Contributor

easyhooon commented Jul 10, 2025

추가로 바텀네비가 있는 화면에서 설정화면으로 이동할 때 바텀네비영역이 시간차로 없어지면서 화면이 들썩?거리는 현상 있습니다

이거는 Known Issue라서, 제가 만든 Bottom NavigationBar 때매 발생한 문제일거라 수정이 필요할듯함다. 이번 PR에서는 넘어가고 이후 bug fix PR을 통해 고쳐볼게요
해당 Circuit Sample 에서는 들썩거리는 문제 안생기는거 같아서 Circuit Navigation 자체의 문제는 아닌듯합니다.

@easyhooon
Copy link
Contributor

easyhooon commented Jul 10, 2025

오픈소스 라이브러리 화면의 경우,
https://developers.google.com/android/guides/opensource?hl=ko 이거 붙히면 될듯하네여, 크게 UI가 중요한 화면은 아니니

내용 추가)
찾아보니 https://github.com/mikepenz/AboutLibraries 이런 라이브러리도 있군요

@easyhooon
Copy link
Contributor

easyhooon commented Jul 10, 2025

로그아웃 기능 이전은 다음 스프린트에서 회원탈퇴와 함께 진행하겠습니다.

다음 스프린트에 가능하면 Webview 쪽 작업도 임의의 Url(https://m.naver.com) 넣어서 load 하는 방식으로 구현해놔도 좋을거 같아요
예상엔 별도의 추가 작업없이, 노션 Url을 띄울듯한데(개인정보처리방침/이용약관 둘다 마찬가지)

다만, 고려해야할 점은 약관동의 화면에서도 개인정보처리방침/이용약관 웹뷰로 이동시켜야 하니까,
별도의 feature:webview 모듈을 빼서 Url을 이전 화면으로부터 전달받아서 load 라는 식으로 구현하면 좋을듯합니다.

@seoyoon513
Copy link
Contributor Author

앱 버전같은 static 정보를 상태로 관리하는게 맞는지는 의문이네요🤔

상태로 관리할 필요없으면 UI에 두는게? remember 로 감싸서 recomposition 될때마다 version 가져오지 않도록만 막아주면 될 것 같음! 다만 gerVersion 함수이거 어디에 위치시킬지, core:common에 두기엔 사용하는 곳이 feature:settings 밖에 없긴한데 고민좀 해봐야할듯함

UI에 구현하면 Presenter에 context 주입해둔것도 필요 없으니 제거해도 될 것 같음

✔️ 상남자식 방법으로 해결 완 ba3de34

Copy link

@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: 0

🧹 Nitpick comments (3)
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/WithdrawConfirmationBottomSheet.kt (3)

41-43: 불필요한 람다 래핑을 제거하세요.

onDismissRequest 콜백을 불필요하게 람다로 래핑하고 있습니다.

-        onDismissRequest = {
-            onDismissRequest()
-        },
+        onDismissRequest = onDismissRequest,

92-92: 스페이싱 일관성을 위해 디자인 시스템 사용

하드코딩된 16.dp 대신 ReedTheme.spacing을 사용하여 일관성을 유지하세요.

-                    .padding(vertical = 16.dp),
+                    .padding(vertical = ReedTheme.spacing.spacing4),

74-86: 접근성 개선을 위한 의미 있는 텍스트 추가

체크박스와 관련 텍스트에 접근성을 위한 추가 설명을 고려해보세요.

                SquareCheckBox(
                    checked = isCheckBoxChecked,
                    onCheckedChange = {
                        onCheckBoxCheckedChange()
                    },
+                    modifier = Modifier.semantics { contentDescription = "회원탈퇴 동의" }
                )
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d529b1c and dd1a421.

📒 Files selected for processing (3)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/LogoutConfirmationBottomSheet.kt (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/WithdrawConfirmationBottomSheet.kt (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/LogoutConfirmationBottomSheet.kt
🚧 Files skipped from review as they are similar to previous changes (1)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt
🧰 Additional context used
🧬 Code Graph Analysis (1)
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/WithdrawConfirmationBottomSheet.kt (4)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/bottomsheet/ReedBottomSheet.kt (1)
  • ReedBottomSheet (21-40)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/checkbox/SquareCheckBox.kt (1)
  • SquareCheckBox (26-54)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/button/ReedButton.kt (1)
  • ReedButton (32-98)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/theme/Theme.kt (1)
  • ReedTheme (14-21)
⏰ 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). (1)
  • GitHub Check: ci-build
🔇 Additional comments (3)
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/WithdrawConfirmationBottomSheet.kt (3)

1-28: imports 구조가 깔끔하게 정리되어 있습니다.

패키지 구조와 필요한 컴포넌트들의 import가 잘 정리되어 있습니다.


74-79: 체크박스 콜백 처리 방식 확인

SquareCheckBoxonCheckedChange 콜백이 새로운 boolean 값을 전달하지만, 상위 컴포넌트의 onCheckBoxCheckedChange 콜백은 매개변수가 없습니다. 상태 관리가 외부에서 이루어지고 있다면 현재 방식이 적절하지만, 일관성을 위해 확인해보시기 바랍니다.


120-140: 프리뷰 함수가 잘 구현되어 있습니다.

SheetState 설정과 매개변수 제공이 적절하여 개발 시 컴포넌트 확인에 유용합니다.

skipPartiallyExpanded = true,
initialValue = SheetValue.Expanded,
positionalThreshold = { 0f },
velocityThreshold = { 0f },
Copy link
Contributor

Choose a reason for hiding this comment

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

오 이런 속성들이 있는지 몰랐네여 ㄷ

Copy link
Contributor

@easyhooon easyhooon left a comment

Choose a reason for hiding this comment

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

LGTM!

@seoyoon513 seoyoon513 merged commit 6ddb589 into develop Jul 10, 2025
2 checks passed
@seoyoon513 seoyoon513 deleted the BOOK-113-feature/#34 branch July 10, 2025 16:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BOOK-113/feat] 설정 화면 UI 구현

3 participants