Skip to content

refactor(afternote): 편집기 외 ViewModel 8개 MVI 전환 (#1968) - #2021

Merged
OnlyReadOneBook merged 13 commits into
developfrom
refactor/1968-afternote-mvi
Oct 6, 2026
Merged

OnlyReadOneBook merged 13 commits into
developfrom
refactor/1968-afternote-mvi

Conversation

@OnlyReadOneBook

@OnlyReadOneBook OnlyReadOneBook commented Sep 13, 2026 •

Copy link
Copy Markdown
Collaborator

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": []
  }
}

@github-actions github-actions Bot added sibling-conflict 열린 형제 PR 과 같은 파일에서 충돌 — 나중에 머지되는 쪽이 base 를 병합해야 한다. 해소되면 자동으로 떨어진다 android-test PR head에서 Android Managed Device 계측 테스트 실행 labels Sep 13, 2026
@github-actions

github-actions Bot commented Sep 13, 2026 •

Copy link
Copy Markdown
Contributor

열린 PR 중 이 PR 과 같은 파일을 서로 다르게 고친 것이 있다. 어느 쪽이 먼저 머지되든 나중 쪽은 base 를 병합해야 통과한다 (#1750).

머지 자체는 GitHub 이 막는다 — 한쪽이 들어가면 다른 쪽은 CONFLICTING 이 되어 merge queue 에 못 들어간다.
이 라벨은 그 전에 순서를 정하라는 신호다. 먼저 갈 쪽을 정하고, 나중 쪽은 그 머지 뒤에 base 를 병합한다.
상대 PR 에도 같은 안내가 달린다.

이 코멘트는 리컨사일러가 매 실행 현재 상태로 고쳐 쓴다. 해소되면 sibling-conflict 라벨은 자동으로 떨어진다.

@github-actions github-actions Bot added the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Sep 20, 2026
@github-actions

Copy link
Copy Markdown
Contributor

이 PR 은 refactor/1804-editor-mvi 와 충돌 상태이고, 그래서 CI 가 돌지 않는다.

pull_request 워크플로는 base 와 head 를 합친 가상 머지 커밋(refs/pull/<N>/merge)에서
실행되는데, 충돌이면 GitHub 이 그 ref 를 만들지 못해 워크플로가 트리거조차 되지 않는다.
체크가 실패하는 것이 아니라 아예 생성되지 않으므로, 새 커밋을 올려도 no checks reported
인 채 최신 커밋이 한 번도 검증되지 않은 상태로 남는다 (#1028).

refactor/1804-editor-mvi 를 병합해 충돌을 풀면 검증이 다시 돈다. 해소되면 이 라벨은 자동으로 떨어진다.

# Conflicts:
#	feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/navigation/AfternoteNavHost.kt
#	konsist/src/test/kotlin/com/afternote/konsist/ProductionVisibilityKonsistTest.kt
@github-actions github-actions Bot removed the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Sep 20, 2026
@github-actions github-actions Bot removed the sibling-conflict 열린 형제 PR 과 같은 파일에서 충돌 — 나중에 머지되는 쪽이 base 를 병합해야 한다. 해소되면 자동으로 떨어진다 label Sep 27, 2026
@github-actions github-actions Bot added the sibling-conflict 열린 형제 PR 과 같은 파일에서 충돌 — 나중에 머지되는 쪽이 base 를 병합해야 한다. 해소되면 자동으로 떨어진다 label Sep 28, 2026

@Sadturtleman Sadturtleman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

새 커밋은 부모 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
Base automatically changed from refactor/1804-editor-mvi to develop October 6, 2026 04:54
@github-actions github-actions Bot removed the conflict base 와 충돌 — CI 가 트리거되지 않는다. base 를 병합하면 자동으로 떨어진다 label Oct 6, 2026
@OnlyReadOneBook
OnlyReadOneBook added this pull request to the merge queue Oct 6, 2026
Merged via the queue into develop with commit b1c1e21 Oct 6, 2026
22 checks passed
@OnlyReadOneBook
OnlyReadOneBook deleted the refactor/1968-afternote-mvi branch October 6, 2026 05:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

android-test PR head에서 Android Managed Device 계측 테스트 실행 sibling-conflict 열린 형제 PR 과 같은 파일에서 충돌 — 나중에 머지되는 쪽이 base 를 병합해야 한다. 해소되면 자동으로 떨어진다

Projects

None yet

2 participants