Skip to content

Conversation

@wjdrjs00
Copy link
Collaborator

@wjdrjs00 wjdrjs00 commented Jan 5, 2026

Related issue 🛠

Work Description ✏️

  • 시니어 로그아웃, 회원탈퇴 로직 흐름을 변경했습니다.
    • 기존 -> 즉시 로그아웃 및 회원탈퇴
    • 수정 -> 다이얼로그를 통한 "확인" 뎁스 추가

Screenshot 📸

  • N/A

Uncompleted Tasks 😅

  • N/A

Summary by CodeRabbit

릴리스 노트

  • 개선사항
    • 로그아웃 및 계정 탈퇴 프로세스 중 로딩 상태 표시 추가
    • 대화상자 상태 관리 개선으로 더 안정적인 사용자 경험 제공
    • 오류 처리 강화로 예외 상황에 대한 예외 처리 최적화

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

@wjdrjs00 wjdrjs00 self-assigned this Jan 5, 2026
@coderabbitai
Copy link

coderabbitai bot commented Jan 5, 2026

Walkthrough

로그아웃과 회원탈퇴 대화 상자 상태 관리를 Boolean 플래그에서 SettingDialogState enum(None, Confirm, Complete)으로 변경합니다. 확인 단계를 추가하고 로딩 상태를 추적하며, 메서드 가시성을 조정하고 에러 핸들링을 개선합니다.

Changes

Cohort / File(s) 변경 사항
Dialog State Model
feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/model/SettingDialogState.kt
새로운 sealed interface SettingDialogState 추가 (None, Confirm, Complete 상태로 대화 상자 상태 모델링)
UI State Management
feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/model/SeniorSettingUiState.kt
isLoading 필드 추가; showLogoutDialog, showWithdrawalDialog Boolean 제거 → logoutDialogState, withdrawalDialogState 필드로 대체
ViewModel Logic
feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/SeniorSettingViewModel.kt
Dialog 상태 관리를 Boolean 토글에서 enum 기반으로 변경; logOut()logout() 이름 변경; navigateToClear() 가시성을 private에서 public으로 변경; fetchUserProfile, logout(), withdrawal() 메서드에 로딩 상태 및 Timber 에러 로깅 추가
Screen Composable
feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/SeniorSettingScreen.kt
상태 기반 대화 상자 렌더링으로 변경 (Confirm 상태 → MaAlertDialog, Complete 상태 → MaConfirmDialog + 네비게이션); onConfirm/onDismiss 콜백을 ViewModel 메서드로 매핑

Estimated code review effort

🎯 3 (중간) | ⏱️ ~25분

Possibly related PRs

Poem

🐰 Boolean에서 상태로 변신한 대화들,
확인 단계를 거쳐 안전하게 내려가고,
로딩을 기다리며 에러를 기록하네.
패턴 다시 짜인 설정, 더욱 명확해졌네! ✨

Pre-merge checks and finishing touches

❌ 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%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목은 시니어 로그아웃 및 회원탈퇴 로직 흐름 변경이라는 주요 변경사항을 명확하게 설명하고 있습니다.
Description check ✅ Passed PR 설명은 템플릿의 주요 섹션(Related issue, Work Description, Screenshot, Uncompleted Tasks)을 모두 포함하고 있으며, 작업 내용이 구체적으로 설명되어 있습니다.
Linked Issues check ✅ Passed 코드 변경사항이 이슈 #69의 목표(로그아웃 및 회원탈퇴 흐름에 확인 다이얼로그 추가)를 완전히 충족합니다.
Out of Scope Changes check ✅ Passed 모든 코드 변경사항은 이슈 #69의 범위 내에서 로그아웃 및 회원탈퇴 흐름 개선에 집중하고 있습니다.
✨ 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

@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 (6)
feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/model/SettingDialogState.kt (1)

5-10: 코드 중복: guardian 모듈에 동일한 SettingDialogState가 존재합니다.

feature/guardian/src/main/kotlin/com/moa/app/feature/guardian/setting/model/SettingDialogState.kt에 동일한 인터페이스가 정의되어 있습니다. 공통 모듈(예: core/common 또는 core/ui)로 이동하여 중복을 제거하는 것을 권장합니다.

feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/SeniorSettingScreen.kt (3)

44-64: isLoading 상태 활용 고려

SeniorSettingUiStateisLoading이 추가되었지만, 로그아웃/회원탈퇴 진행 중 로딩 인디케이터 표시나 버튼 비활성화에 사용되지 않고 있습니다. 사용자 경험 향상을 위해 로딩 상태를 UI에 반영하는 것을 권장합니다.


56-63: 완료 다이얼로그 dismiss 동작 확인

onDialogDismissRequest = {}로 설정하여 사용자가 뒤로가기나 외부 터치로 다이얼로그를 닫을 수 없습니다. 의도된 동작이라면, 동일한 동작을 navigateToClear로 연결하거나 주석을 추가하여 의도를 명확히 하는 것을 권장합니다.

🔎 dismiss 시에도 동일하게 네비게이션 처리
         is SettingDialogState.Complete -> {
             MaConfirmDialog(
                 title = "로그아웃 완료되었습니다",
                 confirmButtonText = "확인",
                 onConfirm = viewModel::navigateToClear,
-                onDialogDismissRequest = {},
+                onDialogDismissRequest = viewModel::navigateToClear,
             )
         }

78-85: 회원탈퇴 완료 다이얼로그도 동일한 패턴 적용 권장

로그아웃 완료 다이얼로그와 동일하게 onDialogDismissRequest에 빈 람다 대신 navigateToClear를 연결하는 것을 권장합니다.

feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/SeniorSettingViewModel.kt (2)

83-88: 실패 시 사용자에게 에러 피드백 제공 권장

로그아웃 실패 시 다이얼로그가 조용히 닫히고 사용자는 왜 실패했는지 알 수 없습니다. 실패 원인을 사용자에게 알리는 토스트 메시지나 에러 다이얼로그를 표시하는 것을 권장합니다.


102-107: 회원탈퇴 실패 시에도 동일하게 사용자 피드백 필요

회원탈퇴 실패 시에도 사용자에게 에러 메시지를 표시하는 것을 권장합니다. 특히 회원탈퇴는 중요한 작업이므로 실패 원인을 명확히 전달해야 합니다.

📜 Review details

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 45c3e7e and 355371a.

📒 Files selected for processing (4)
  • feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/SeniorSettingScreen.kt
  • feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/SeniorSettingViewModel.kt
  • feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/model/SeniorSettingUiState.kt
  • feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/model/SettingDialogState.kt
🧰 Additional context used
🧬 Code graph analysis (2)
feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/SeniorSettingScreen.kt (2)
core/designsystem/src/main/kotlin/com/moa/app/designsystem/component/product/dialog/MaAlertDialog.kt (1)
  • MaAlertDialog (27-120)
core/designsystem/src/main/kotlin/com/moa/app/designsystem/component/product/dialog/MaConfirmDialog.kt (1)
  • MaConfirmDialog (24-69)
feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/model/SettingDialogState.kt (1)
feature/guardian/src/main/kotlin/com/moa/app/feature/guardian/setting/model/SettingDialogState.kt (1)
  • @Immutable (5-10)
⏰ 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: Run Unit Tests
🔇 Additional comments (2)
feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/model/SeniorSettingUiState.kt (1)

3-17: LGTM!

Boolean 플래그 대신 명시적인 SettingDialogState를 사용하여 다이얼로그 상태를 관리하는 것은 좋은 개선입니다. isLoading 추가로 로딩 상태 추적도 가능해졌습니다.

feature/senior/src/main/kotlin/com/moa/app/feature/senior/setting/SeniorSettingViewModel.kt (1)

118-127: LGTM!

navigateToClear()를 public으로 변경하여 Complete 다이얼로그에서 호출할 수 있게 한 것은 새로운 흐름에 적합합니다. 백스택 정리와 AuthLanding으로의 네비게이션 로직이 올바르게 구현되어 있습니다.

@wjdrjs00 wjdrjs00 merged commit 55049f5 into develop Jan 5, 2026
4 checks passed
@wjdrjs00 wjdrjs00 deleted the refactor/69-senior-setting-flow branch January 5, 2026 07:19
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.

[Refactor] 시니어 로그아웃, 회원탈퇴 흐름을 변경합니다.

2 participants