Skip to content

Conversation

@seoyoon513
Copy link
Contributor

@seoyoon513 seoyoon513 commented Jul 16, 2025

🔗 관련 이슈

📙 작업 설명

  • 로그아웃에 사용하기 위해 공통 컴포넌트 ReedDialog 구현
  • 설정 화면으로 로그아웃 기능 이동
  • 내서재 화면 로그아웃 관련 코드 제거

📸 스크린샷 또는 시연 영상

ReedDialog

image
  • 사용 방법은 Preview 참고 부탁드립니다

설정 > 로그아웃

Reed_.mp4

💬 추가 설명 or 리뷰 포인트

  • 지금 로그아웃 확인이 Dialog로 처리되고 있는데 BottomSheet로 구현된 회원탈퇴 확인도 Dialog로 바뀌는지 논의 필요합니다

Summary by CodeRabbit

  • 신규 기능

    • 커스터마이즈 가능한 제목, 서브텍스트, 확인/취소 버튼을 포함한 다이얼로그 컴포넌트가 추가되었습니다.
    • 설정 화면에서 로그아웃 시 확인 다이얼로그가 표시됩니다.
    • 로그아웃 처리 중 전체 화면 로딩 인디케이터가 표시됩니다.
  • 버그 수정

    • 로그아웃 시 오류 발생 시 토스트 메시지로 안내가 제공됩니다.
  • 기능 개선

    • 라이브러리 화면에서 로그아웃 버튼 및 관련 기능이 제거되었습니다.
    • 설정 화면의 로그아웃 확인 UI가 하단 시트에서 다이얼로그로 변경되었습니다.
  • 리팩터링

    • 로그아웃 관련 상태 및 이벤트 관리 구조가 개선되었습니다.
  • 문서화

    • 미리보기 컴포저블이 추가되어 다이얼로그 UI를 사전 확인할 수 있습니다.

@coderabbitai
Copy link

coderabbitai bot commented Jul 16, 2025

"""

Walkthrough

로그아웃 기능이 내서재 화면에서 제거되고, 설정 화면으로 이동되었습니다. 설정 화면에서는 새로운 ReedDialog를 활용한 로그아웃 확인 다이얼로그와 비동기 로그아웃 처리, 토스트 사이드 이펙트, 로딩 상태 관리가 추가되었습니다. 기존의 로그아웃 관련 바텀시트 컴포넌트와 내서재 화면의 로그아웃 UI 및 이벤트는 모두 삭제되었습니다.

Changes

파일/경로 요약 변경 요약
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/ReedDialog.kt ReedDialog 컴포저블 및 프리뷰 추가
feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryPresenter.kt authRepository 및 로그아웃 이벤트 처리 로직 제거
feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryScreen.kt ReedButton(로그아웃 버튼) 및 관련 import 제거
feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryUiState.kt OnLogoutButtonClick 이벤트 제거
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsPresenter.kt 비동기 로그아웃 처리, 로딩/다이얼로그/사이드이펙트 상태 추가 및 이벤트 처리 로직 추가
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt ReedDialog를 이용한 로그아웃 확인, 로딩 인디케이터, 사이드이펙트 핸들러 추가 및 관련 상태 변경
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsSideEffect.kt HandleSettingsSideEffects 컴포저블 추가
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsUiState.kt 로그아웃 바텀시트 상태 제거, 로딩/다이얼로그/사이드이펙트 상태 및 이벤트 추가
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/LogoutConfirmationBottomSheet.kt 로그아웃 바텀시트 컴포저블 전체 삭제

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant SettingsScreen
    participant SettingsPresenter
    participant AuthRepository
    participant Navigation

    User->>SettingsScreen: 로그아웃 버튼 클릭
    SettingsScreen->>SettingsPresenter: Logout 이벤트 전송
    SettingsPresenter->>SettingsScreen: isLogoutDialogVisible = true
    User->>SettingsScreen: 다이얼로그에서 '로그아웃' 클릭
    SettingsScreen->>SettingsPresenter: Logout 이벤트 전송
    SettingsPresenter->>AuthRepository: logout() 호출
    AuthRepository-->>SettingsPresenter: 로그아웃 결과 반환
    alt 성공
        SettingsPresenter->>Navigation: 로그인 화면으로 이동
    else 실패
        SettingsPresenter->>SettingsScreen: sideEffect = ShowToast(에러 메시지)
    end
    SettingsPresenter->>SettingsScreen: isLoading = false, isLogoutDialogVisible = false
Loading

Assessment against linked issues

Objective Addressed Explanation
ReedDialog 추가 (디자인 정책 반영) (#51)
설정화면에서 확인 다이얼로그를 통해 로그아웃 실행 (#51)
내서재에서 로그아웃 기능 제거 및 설정 화면으로 이동 (#51)

Assessment against linked issues: Out-of-scope changes

해당 변경사항에서 요구사항과 관련 없는 기능적 코드 변경은 발견되지 않았습니다.

Possibly related PRs

  • feat: 설정 화면 UI 구현 #42: 기존 설정 화면에 로그아웃 바텀시트 컴포넌트를 도입한 PR로, 이번 PR에서 해당 바텀시트가 ReedDialog로 대체되어 직접적으로 연관됩니다.

Suggested labels

🔨 refactor

Suggested reviewers

  • easyhooon

Poem

로그아웃 토끼가 깡총깡총
ReedDialog로 인사해요,
내서재는 깔끔하게 정리,
설정에서만 살짝쿵,
로딩 돌고 토스트 뿅!
새로운 흐름, 귀여운 변화,
코드밭에 당근 하나 추가! 🥕
"""


📜 Recent review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 323e142 and 8e82bc7.

📒 Files selected for processing (4)
  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/ReedDialog.kt (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt (4 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsSideEffect.kt (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsUiState.kt (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (4)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsSideEffect.kt
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsUiState.kt
  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/ReedDialog.kt
⏰ 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
✨ 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.

@github-actions github-actions bot requested a review from easyhooon July 16, 2025 05:55
@seoyoon513 seoyoon513 changed the title Book 147 feature/#51 feat: 내서재의 로그아웃 기능을 설정 화면으로 이동 Jul 16, 2025
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: 1

🧹 Nitpick comments (1)
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt (1)

159-161: 이벤트 이름의 일관성을 개선하세요.

로그아웃 확인 UI가 바텀시트에서 다이얼로그로 변경되었는데, dismiss 이벤트가 여전히 OnBottomSheetDismissed를 사용하고 있습니다. 더 일반적인 이름(예: OnDialogDismissed)으로 변경하는 것을 고려해보세요.

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 7b6f808 and e891a71.

📒 Files selected for processing (9)
  • core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/ReedDialog.kt (1 hunks)
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryPresenter.kt (0 hunks)
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryScreen.kt (0 hunks)
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryUiState.kt (0 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsPresenter.kt (5 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt (5 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsSideEffect.kt (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsUiState.kt (1 hunks)
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/LogoutConfirmationBottomSheet.kt (0 hunks)
💤 Files with no reviewable changes (4)
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryUiState.kt
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryScreen.kt
  • feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/LibraryPresenter.kt
  • feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/component/LogoutConfirmationBottomSheet.kt
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: seoyoon513
PR: YAPP-Github/Reed-Android#46
File: feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/component/InfiniteLazyColumn.kt:83-95
Timestamp: 2025-07-14T00:46:03.843Z
Learning: seoyoon513과 팀은 한국어 주석을 선호하며, 한국어 주석을 영어로 번역하라는 제안을 하지 않아야 함
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt (2)
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.
Learnt from: seoyoon513
PR: YAPP-Github/Reed-Android#45
File: core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/appbar/ReedTopAppBar.kt:65-65
Timestamp: 2025-07-12T01:33:57.101Z
Learning: Reed Android 프로젝트에서 타이포그래피 사용 규칙: 톱 앱바(Top App Bar)에서는 `headline2SemiBold`를 사용하고, 바텀시트(Bottom Sheet)에서는 `heading2SemiBold`를 사용한다. 이는 의도적인 디자인 시스템 차별화이다.
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/ReedDialog.kt (3)
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.
Learnt from: seoyoon513
PR: YAPP-Github/Reed-Android#45
File: core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/appbar/ReedTopAppBar.kt:65-65
Timestamp: 2025-07-12T01:33:57.101Z
Learning: Reed Android 프로젝트에서 타이포그래피 사용 규칙: 톱 앱바(Top App Bar)에서는 `headline2SemiBold`를 사용하고, 바텀시트(Bottom Sheet)에서는 `heading2SemiBold`를 사용한다. 이는 의도적인 디자인 시스템 차별화이다.
Learnt from: seoyoon513
PR: YAPP-Github/Reed-Android#32
File: core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/theme/Theme.kt:15-21
Timestamp: 2025-07-08T03:21:24.693Z
Learning: Reed Android 프로젝트에서는 다크모드/라이트모드 대응 계획이 없고 기본 테마 값만 사용할 예정이다.
🧬 Code Graph Analysis (2)
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt (2)
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsSideEffect.kt (1)
  • HandleSettingsSideEffects (8-27)
core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/ReedDialog.kt (1)
  • ReedDialog (24-98)
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsPresenter.kt (1)
core/common/src/main/kotlin/com/ninecraft/booket/core/common/utils/HandleException.kt (1)
  • handleException (9-36)
⏰ 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 (4)
feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsUiState.kt (1)

6-17: UI 상태 관리 개선이 잘 되었습니다.

로그아웃 확인 UI를 바텀시트에서 다이얼로그로 변경하고, 로딩 상태와 사이드 이펙트 처리를 추가한 것이 적절합니다.

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

47-50: 사이드 이펙트 처리가 잘 추가되었습니다.

토스트 메시지 표시와 같은 UI 피드백을 적절히 처리하고 있습니다.

core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/ReedDialog.kt (1)

24-98: 재사용 가능한 다이얼로그 컴포넌트가 잘 구현되었습니다.

적절한 파라미터와 콜백을 제공하고, 디자인 시스템을 잘 활용하고 있습니다.

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

74-102: 비동기 로그아웃 처리가 잘 구현되었습니다.

적절한 로딩 상태 관리, 에러 처리, 그리고 네비게이션 리셋이 구현되어 있습니다.

@easyhooon
Copy link
Contributor

지금 로그아웃 확인이 Dialog로 처리되고 있는데 BottomSheet로 구현된 회원탈퇴 확인도 Dialog로 바뀌는지 논의 필요합니다

예/아니오 의외에 사용자의 동의(체크박스)를 묻는 추가 컨텐츠가 있는 관계로 Dialog로 안바뀔거같아요!(예상)

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 75498b0 into develop Jul 16, 2025
4 checks passed
@seoyoon513 seoyoon513 deleted the BOOK-147-feature/#51 branch July 16, 2025 08:45
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-147/feat] 내서재의 로그아웃 기능을 설정 화면으로 이동

3 participants