feat(afternote): 수신자 지정·검증·상세 화면 개선 및 공통 라우트 정리#111
Merged
Conversation
'소셜' 및 '추모 플레이리스트' 유형의 애프터노트를 생성할 때 수신자 목록을 함께 전달하도록 API 요청 및 관련 로직을 수정했습니다. 이로써 모든 카테고리에서 수신자를 지정할 수 있게 되었습니다.
- **API 요청 DTO 수정**: `AfternoteCreateSocialRequestDto`와 `AfternoteCreatePlaylistRequestDto`에 수신자 ID 목록을 담는 `receivers` 필드를 추가했습니다.
- **ViewModel 및 UseCase 수정**: 애프터노트 등록 로직(`AfternoteEditViewModel`, `CreateSocialAfternoteUseCase`, `CreatePlaylistAfternoteUseCase`)에서 수신자 ID 목록(`receiverIds`)을 Repository까지 전달하도록 파라미터를 추가하고 관련 로직을 수정했습니다.
- **유효성 검사 강화**:
- 모든 카테고리에서 애프터노트 저장 시 최소 1명 이상의 수신자가 등록되었는지 확인하는 유효성 검사를 추가했습니다. (`RECEIVERS_REQUIRED`)
- 서버로부터 수신자 미등록으로 인한 오류(HTTP 400, code 475) 응답을 받을 경우, 이를 파싱하여 동일한 유효성 검사 오류로 처리하도록 구현했습니다.
- **상세 화면 UI 개선**: 애프터노트 상세 화면에서 수정일(`updatedAt`)이 없을 경우 생성일(`createdAt`)을 최종 작성일로 표시하도록 수정하여, 새로 생성된 항목의 날짜 정보가 비어 보이는 문제를 해결했습니다.
- **문자열 리소스 추가**: 수신자 최소 1명 필요에 대한 공통 유효성 검사 메시지(`afternote_validation_receivers_required`)를 추가했습니다.
- **테스트 코드 업데이트**: 변경된 Repository 및 UseCase의 인터페이스에 맞게 테스트 코드를 수정했습니다.
- **수신자 지정 방식 통일:** 기존에 '갤러리 및 파일' 카테고리에서 지원하던 '추가 수신자에게 정보 전달' 옵션을 제거했습니다. 이제 모든 애프터노트 카테고리(소셜, 갤러리, 추모 가이드라인)는 '설정 > 수신자 목록'에 등록된 수신자만 지정할 수 있습니다.
- **UI 컴포넌트 리팩토링:**
- 상세 화면의 수신자 정보 표시 로직을 공용 `ReceiversCard` 컴포저블로 추출하여 재사용성을 높였습니다.
- 소셜 네트워크 및 추모 가이드라인 상세 화면에도 `ReceiversCard`를 적용하여 수신자 정보를 표시하도록 개선했습니다.
- **ViewModel 로직 간소화:**
- 수신자 지정 방식이 단일화됨에 따라, `AfternoteEditViewModel`에서 '추가 수신자'와 '기본 수신자'를 분기 처리하던 복잡한 로직을 제거하고 단순화했습니다.
- 수신자 관련 유효성 검사 로직을 간소화하고, 관련 에러 메시지를 명확하게 수정했습니다.
- **불필요한 코드 및 리소스 제거:**
- '추가 수신자' 관련 enum(`InformationProcessingMethod.TRANSFER_TO_ADDITIONAL_AFTERNOTE_EDIT_RECEIVER`), UI 컴포넌트(`AfternoteEditReceiverDetailItem`), 더미 데이터 등을 삭제했습니다.
- 애프터노트 작성 및 수정 화면의 '수신자' 항목에 '추가' 버튼을 추가하여, 수신자 목록 화면으로 이동하고 수신자를 선택하여 추가할 수 있도록 기능을 구현했습니다. - 기존에는 설정에 등록된 모든 수신자가 자동으로 포함되었으나, 이제 사용자가 직접 애프터노트별로 수신자를 선택해야 합니다. 이로 인해 수신자를 한 명 이상 선택하지 않으면 저장이 되지 않도록 유효성 검사 로직을 수정했습니다. - 여러 화면(애프터노트, 타임레터)에서 공통으로 사용할 수 있는 `ReceiverRoute`를 새로 정의하여, 기존 타임레터의 수신자 선택 로직을 이 공통 라우트로 통합하고 중복 코드를 제거했습니다. - 수신자 선택 후 이전 화면으로 돌아왔을 때, 선택한 수신자 정보(ID, 이름, 관계)를 받아와 화면에 반영하는 로직을 추가했습니다.
- `PostDeliveryConditionViewModel.kt` 파일에서 `when` 표현식 끝에 의도치 않게 추가된 'g' 문자를 삭제했습니다.
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.
목적 / 배경
변경 사항 요약
주요 수정 파일
core/navigation/ReceiverRoute.kt(신규)AfternoteNavgraph.kt,AfternoteEditViewModel.kt,AfternoteEditScreen.ktTimeLetterRoute.kt,TimeLetterNavGraph.kt,NavGraph.ktAfternoteSaveState.kt,strings.xml테스트/검증
Made with Cursor