Repository navigation
refactor(afternote): 편집기 외 ViewModel 8개 MVI 전환 (#1968) - #2021
Conversation
|
열린 PR 중 이 PR 과 같은 파일을 서로 다르게 고친 것이 있다. 어느 쪽이 먼저 머지되든 나중 쪽은 base 를 병합해야 통과한다 (#1750).
머지 자체는 GitHub 이 막는다 — 한쪽이 들어가면 다른 쪽은 CONFLICTING 이 되어 merge queue 에 못 들어간다. 이 코멘트는 리컨사일러가 매 실행 현재 상태로 고쳐 쓴다. 해소되면 |
|
이 PR 은
|
# Conflicts: # feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/navigation/AfternoteNavHost.kt # konsist/src/test/kotlin/com/afternote/konsist/ProductionVisibilityKonsistTest.kt
Sadturtleman
left a comment
There was a problem hiding this comment.
새 커밋은 부모 MVI 병합과 KDoc 정리뿐입니다. Review dependency changes 실패는 base 브랜치 스냅샷이 없어 의존성 1003건 전체가 신규로 잡힌 것(settings.gradle.kts 의 빌드 도구 freemarker)이라 이 PR 의 testFixtures 추가와 무관합니다. 승인합니다.
…efactor/1968-afternote-mvi # Conflicts: # feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/detail/AfternoteDetailViewModel.kt # feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/receiver/SelectReceiverViewModel.kt # konsist/src/test/kotlin/com/afternote/konsist/MviContractKonsistTest.kt
Closes #1968
Closes #1673
편집기 외 기존 ViewModel 8개를 공통
MviViewModel·Intent·UiState·순수 reducer 계약으로 전환합니다. 대상은 Host, Home, Detail, SelectReceiver, AddSong, ReceivedAfternoteDetail, ReceiverAfternoteHome, ReceiverMemorialPlaylist입니다.직접 base는 #1972의
refactor/1804-editor-mvi입니다. Paging 세대·첫 복귀 갱신 생략·자동 갱신 실패 시 기존 내용 유지·삭제 결과 소비·선택 복원·프로필 구독 유예와 늦은 노래 검색 결과 무시를 유지합니다. 직접 화면은 상태 수집과 렌더링 책임을 나눕니다.상세 삭제 오버레이는 private로 제한하고 실제 상세 화면의 삭제 진행·입력 차단을 검증합니다. 앱 계측은 presentation testFixtures로 실제 화면과 ViewModel을 사용하며 production 공개 범위를 넓히지 않습니다. 전환한 8개를 migration 목록에서 제거하고 복귀 갱신 검사를 Intent 연결에 맞춥니다. 현재 없는 임시저장 목록 ViewModel의 구현 예약은 포함하지 않습니다.
검증
JVM 검증 리비전
851d882b2d180d560c13927c93b2e25e3e022aa9에서 presentation 348개, Konsist 55개 테스트가 통과했습니다(실패·오류·건너뜀 0). presentation ktlint, 실제 base 대비 전체 diff의 모듈 소유권 검사와git diff --check를 통과했습니다. 앱 main/unit Kotlin, 계측 APK(Hilt javac 포함), presentation screenshot 소스 컴파일도 통과했습니다.현재 HEAD
d326c83f8c798a5a70f7122340506203775a65c0는 검증 리비전에서 수신자 복귀 KDoc만 최종 Intent 이름으로 정정했습니다. 프로덕션 코드와 테스트 코드는 동일하며 KDoc 링크 검사(끊김 0)와 ktlint를 통과했습니다.🧪 CI Test Plan
{ "androidTest": { "mode": "full", "reason": "8개 화면의 상태·lifecycle·신호 소비와 실제 화면 testFixtures 연결을 변경하며 app/build.gradle.kts도 바뀌므로 전체 기기 시나리오를 검증합니다.", "tests": [] } }