Conversation
* **refactor: `PrezelDialog`의 설명(description) 매개변수 Nullable 처리**
* `description` 타입을 `String`에서 `String?`로 변경하고 기본값을 `null`로 지정하여, 설명 문구가 없는 다이얼로그도 구성할 수 있도록 개선했습니다.
* `DialogContent` 내부에서 `description`이 존재할 때만 `Text` 컴포넌트가 렌더링되도록 로직을 수정했습니다.
* **refactor: `PrezelButtonArea` 인터페이스 및 내부 로직 변경**
* 기존의 `ButtonAreaScope`를 통한 DSL 방식의 버튼 배치 로직을 제거했습니다.
* 버튼 구성을 명시적인 `mainButton` 및 `subButton` Composable 람다 매개변수 방식으로 변경하여 제어권을 강화했습니다.
* `DefaultButtonAreaScope` 등 내부 유효성 검사 로직을 제거하여 컴포넌트 구조를 단순화했습니다.
* **refactor: 각 Feature 모듈 내 버튼 영역 구현부 업데이트**
* `TermsScreen`, `ProfileScreen`, `LoginScreen`, `PrezelDatePicker` 등 프로젝트 전반에서 변경된 `PrezelButtonArea` 형식을 적용했습니다.
* 기존의 `MainButton`, `SubButton`, `CustomButton` 호출 방식을 `PrezelButton` 직접 주입 방식으로 전환했습니다.
* 버튼 생성 시 `ButtonType.FILLED`, `ButtonHierarchy.PRIMARY` 등 명시적인 스타일 설정을 적용하여 디자인 시스템 일관성을 높였습니다.
* **style: 불필요한 지역 변수 및 리소스 참조 정리**
* `ProfileScreen` 및 `PrezelDatePicker` 등에서 버튼 라벨을 위해 사용하던 불필요한 지역 변수를 제거하고 `stringResource`를 직접 사용하도록 수정했습니다.
* **feat: `Modifier.noRippleClickable` 확장 함수 추가**
* 클릭 시 리플(Ripple) 효과가 발생하지 않는 `noRippleClickable` 유틸리티를 `core.ui.util` 패키지에 추가했습니다.
* `indication = null`과 `MutableInteractionSource`를 사용하여 시각적 피드백 없이 클릭 이벤트만 처리할 수 있도록 구현했습니다.
* **refactor: `TermsNavKey` 구조 개선 및 상세 화면 경로 추가**
* `TermsNavKey`를 `data object`에서 `sealed interface`로 변경하고, 약관 목록(`List`)과 상세 화면(`Detail`)으로 구분했습니다.
* 상세 화면 이동 시 약관 타입을 전달하기 위한 `TermsDocumentType` Enum을 정의했습니다.
* **refactor: 내비게이션 엔트리 구성 및 상세 모달 분리**
* `TermsEntryBuilder`에서 `TermsNavKey.Detail`에 대한 엔트리를 추가하여 `TermsDetailModal`을 독립적인 내비게이션 목적지로 처리하도록 변경했습니다.
* `TermsDocumentType`에 따라 `BuildConfig`에 정의된 URL을 매핑하는 로직을 추가했습니다.
* **refactor: `TermsScreen` 내 상세 표시 로직 제거**
* `TermsScreen` 내부에서 `activeDetailUrl` 상태로 관리하던 모달 표시 로직을 제거했습니다.
* 상세 화면 이동을 위한 콜백(`navigateToTermsOfServiceDetail`, `navigateToPrivacyPolicyDetail`)을 추가하여 내비게이션 처리를 위임했습니다.
* **fix: 외부 모듈의 약관 화면 참조 수정**
* `login` 및 `splash` 기능 모듈에서 기존 `TermsNavKey` 참조를 `TermsNavKey.List`로 업데이트했습니다.
* **feat: Setting feature 모듈(`api`, `impl`) 추가**
* 설정 기능을 위한 `:feature:setting:api` 및 `:feature:setting:impl` 모듈을 신규 생성하고 프로젝트 구성(`settings.gradle.kts`)에 추가했습니다.
* `app` 모듈의 의존성에 설정 관련 모듈을 포함했습니다.
* `feature:setting:impl` 모듈에 `coreAuth`, `coreDomain`, `coreModel` 및 관련 feature api 의존성을 설정했습니다.
* **feat: 설정 관련 Navigation Key 정의**
* 설정 메인 화면 이동을 위한 `SettingNavKey`를 추가했습니다.
* 회원 탈퇴 화면 이동을 위한 `DeleteAccountNavKey`를 추가했습니다.
* **feat: My feature 모듈 내 설정 화면 이동 연결**
* `MyEntryBuilder`에서 주석 처리되어 있던 `navigateToSetting` 로직을 `SettingNavKey`를 사용하여 실제 네비게이션이 동작하도록 구현했습니다.
* `feature:my:impl` 모듈에서 `SettingNavKey` 참조를 위해 `feature:setting:api` 의존성을 추가했습니다.
* **refactor: `MyTopAppBar`의 아이콘 버튼 구현 방식 변경**
* 디자인 시스템의 커스텀 컴포넌트인 `PrezelIconButton` 대신 Compose Material 3의 표준 `IconButton` 및 `Icon`을 사용하도록 수정했습니다.
* `ButtonType.GHOST`, `ButtonHierarchy.SECONDARY` 등 기존의 커스텀 속성 설정을 제거하고 표준 접근 방식으로 단순화했습니다.
* 불필요해진 디자인 시스템 버튼 관련 import 문을 정리했습니다.
* **feat: 설정(Setting) 화면 및 기능 구현**
* 사용자 정보(닉네임, 이메일, 프로필 이미지) 조회 및 표시 기능을 구현했습니다.
* 로그아웃 기능을 구현하고 확인 다이얼로그를 추가했습니다.
* 이용약관 및 개인정보 처리방침 화면으로의 네비게이션 경로를 연결했습니다.
* **feat: 회원 탈퇴(Delete Account) 프로세스 구현**
* 유의사항 확인(`NOTICE`)과 탈퇴 사유 선택(`REASON`)으로 구성된 2단계 탈퇴 플로우를 구현했습니다.
* `WithdrawUseCase`를 연동하여 사유별 탈퇴 처리 로직을 구현했습니다.
* 기타 사유 선택 시 직접 입력할 수 있는 텍스트 필드를 제공합니다.
* 탈퇴 전 최종 확인을 위한 다이얼로그를 추가했습니다.
* **feat: MVI 기반 아키텍처 및 네비게이션 설정**
* `SettingViewModel` 및 `DeleteAccountViewModel`을 추가하고 `UiState`, `UiIntent`, `UiEffect`를 정의했습니다.
* `SettingEntryBuilder`를 통해 `SettingNavKey`와 `DeleteAccountNavKey`에 대한 네비게이션 그래프를 구성했습니다.
* Hilt를 사용하여 UseCase 및 ViewModel 의존성을 주입했습니다.
* **style: UI 컴포넌트 및 리소스 정의**
* 설정 및 탈퇴 화면에서 공통으로 사용하는 `TopAppBar`, `ActionSection`, `BodySection` 등 커스텀 컴포넌트를 구현했습니다.
* 기능 구현에 필요한 다국어 문자열 리소스를 `strings.xml`에 추가했습니다.
* **refactor: 회원 탈퇴 화면 구성 요소 정리 및 통합**
* `DeleteAccountContentSection.kt` 파일을 삭제하고, 해당 로직을 `DeleteAccountScreen.kt` 내의 `DeleteAccountContent` 프라이빗 컴포저블로 통합하여 구조를 단순화했습니다.
* `DeleteAccountActionSection`, `DeleteAccountNoticeStep`, `DeleteAccountReasonStep` 등 여러 컴포넌트 파일에 분산되어 있던 중복 Preview 코드를 삭제했습니다.
* **refactor: `DeleteAccountUiState` 모델 개선**
* `isNextEnabled`, `isWithdrawEnabled`, `isPrimaryActionEnabled` 프로퍼티를 커스텀 게터(`get()`) 방식에서 일반 프로퍼티(`val`) 초기화 방식으로 변경했습니다.
* 사용하지 않는 `isOtherReasonSelected` 프로퍼티를 제거했습니다.
* **refactor: 설정(Setting) UI 컴포넌트 및 코드 정체성 개선**
* `SettingBodySection.kt` 내의 `AccountSectionPreview`, `PolicySectionPreview` 등을 삭제하고 `SettingBodySectionPreview` 하나로 통합하여 관리하도록 수정했습니다.
* `Alignment` 관련 불필요한 전체 패키지 경로 참조를 import 문으로 대체했습니다.
* **style: 코드 가독성 및 import 최적화**
* `DeleteAccountViewModel`에서 `DeleteAccountStep` 참조 시 사용된 불필요한 전체 패키지 경로를 정리했습니다.
* `DeleteAccountScreen` 내 레이아웃 배치를 위해 `fillMaxWidth` 및 `weight` 수식어를 조정했습니다.
* **refactor: 파편화된 스트링 리소스를 태그 포함 단일 스트링으로 통합**
* `strings.xml` 내 여러 개로 쪼개져 있던 안내 문구들을 `<highlight>`, `<bold>` 등 커스텀 태그를 포함한 하나의 스트링 리소스로 병합했습니다.
* 줄바꿈(`\n`) 및 태그를 활용하여 번역 및 문구 수정 시의 유연성을 높였습니다.
* **feat: `AnnotatedString` 내 커스텀 태그 해석 로직 구현**
* `<highlight>`, `<bold>` 태그를 분석하여 각각 `feedbackBadRegular` 색상 및 `body2Bold` 스타일을 적용하는 `appendTaggedText` 함수를 추가했습니다.
* `TagState`를 통해 태그 중첩(Bold + Highlight) 및 유효성 검사를 처리하도록 개선했습니다.
* **refactor: `DeleteAccountNoticeStep` UI 구조 및 컴포넌트 리팩터링**
* 기존에 코드로 조합하던 `AnnotatedString` 생성 로직을 `appendTaggedText`를 사용하는 방식으로 단순화했습니다.
* `DeleteAccountNoticeHeader`, `DeletionAgreement`, `DeleteAccountNoticeDetailBox` 등 하위 컴포넌트를 분리하여 가독성을 높였습니다.
* `Arrangement.spacedBy` 대신 `Spacer`를 사용하여 컴포넌트 간 간격 조절 방식을 명확하게 수정했습니다.
* `PrezelCheckbox`의 터치 영역 및 간격 설정을 `Spacer`와 `PaddingValues`를 활용하도록 조정했습니다.
* **refactor: `WithdrawReason` 카테고리 매핑 방식 변경 및 코드 정리**
* 기존 reflection과 `toSnakeCase()`를 사용하여 클래스명을 변환하던 방식을 명시적인 `toReasonCategory()` 매핑 함수로 변경하여 로직의 안정성을 높였습니다.
* 더 이상 사용되지 않는 `String.toSnakeCase()` 확장 함수를 삭제했습니다.
* **feat: 유저 정보 조회 실패 관련 스트링 리소스 추가 및 적용**
* `SettingScreen`에서 유저 정보 조회 실패 시 표시할 구체적인 에러 메시지(`feature_setting_impl_fetch_user_info_failed`)를 추가했습니다.
* 기존에 유저 정보 조회 실패 시 잘못 참조하고 있던 공통 타이틀 리소스를 새로 추가된 스트링 리소스로 수정했습니다.
* **refactor: `showPrezelSnackbar` 매개변수 및 위치 계산 방식 변경**
* 기존의 구체적인 수치(`offsetY: Dp`)를 직접 받던 매개변수를 `useRaisedPosition: Boolean`으로 변경하여 인터페이스를 단순화했습니다.
* `useRaisedPosition` 값에 따라 스낵바 오프셋을 기본 위치(`0.dp`) 또는 위로 플로팅된 위치(`-98.dp`)로 자동 결정하도록 로직을 수정했습니다.
* **feat: 로그아웃 및 회원 탈퇴 성공 시 스낵바 알림 추가**
* 로그아웃 처리가 완료되어 스플래시 화면으로 이동할 때 "로그아웃되었어요." 메시지를 출력하도록 수정했습니다.
* 회원 탈퇴 처리가 완료되어 스플래시 화면으로 이동할 때 "회원탈퇴가 완료되었어요." 메시지를 출력하도록 수정했습니다.
* 이에 필요한 문자열 리소스(`feature_setting_impl_logout_success`, `feature_setting_impl_delete_account_withdraw_success`)를 추가했습니다.
* **refactor: UI 메시지 리소스 매핑 로직 개선**
* `SettingScreen` 및 `DeleteAccountScreen`에서 `UiMessage`를 리소스 ID로 변환하는 로직을 `toMessageRes()` 확장 함수로 추출하여 `LaunchedEffect` 내부의 가독성을 높였습니다.
* **cleanup: `coreAuth` 의존성 삭제**
* `setting` 기능 구현 모듈(`feature:setting:impl`)의 `build.gradle.kts`에서 사용하지 않는 `coreAuth` 모듈 의존성을 제거했습니다.
* **refactor: `DoubleBackToExitHandler` 내 스낵바 위치 조정**
* 앱 종료 확인을 위한 스낵바 호출 시 `useRaisedPosition` 파라미터를 `false`로 설정하여 UI 표시 위치를 조정했습니다.
Closed
Contributor
|
Caution Review failedFailed to post review comments 📝 WalkthroughWalkthrough설정 기능을 새로 구현하며, 계정 탈퇴 플로우를 추가하고, 디자인 시스템 컴포넌트(SnackbarHost, PrezelButtonArea, PrezelDialog)를 리팩토링하고, WithdrawReason 모델 및 TermsNavKey 네비게이션을 업데이트합니다. ChangesSetting 기능 구현 및 디자인 시스템 통합
Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 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. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
📌 작업 내용
feature:setting모듈을 추가하고 마이 화면에서 설정 화면으로 이동할 수 있도록 네비게이션을 연동했습니다.SnackbarHost,PrezelDialog,PrezelButtonArea,noRippleClickable등 공통 UI 요소를 보완했습니다.🧩 관련 이슈
📸 스크린샷
Screen_recording_20260507_020048.mp4
📢 논의하고 싶은 내용
Summary by CodeRabbit
릴리스 노트
새로운 기능
개선사항