Skip to content

refactor(home): ReceiverHomeViewModel과 수신자 홈 화면을 MVI로 전환 #2037

Open

Description

@OnlyReadOneBook

작업 유형

refactor — 동작 변경 없는 구조·책임·경계 개선

주 담당 모듈

home — 홈

개요

#1803의 과거 receiver 대상 목록에서 현재 feature/home/presentation/receiver가 소유하는 ReceiverHomeViewModel 1개와 수신자 홈 화면 1개를 분리한다. #1808은 HomeTabViewModel만 다루므로 이 이슈와 구현 대상을 중복하지 않는다.

현재 ReceiverHomeViewModel은 onEvent(ReceiverHomeEvent) 외에 refreshOnReturn() 진입점이 있고, 비동기 작업에서 _uiState.value·update로 상태를 갱신한다. 이 진입점과 상태 전이를 onIntent·순수 reducer로 모은다. ReceiverHomeEntry가 이미 상태 수집과 주입을, ReceiverHomeScreen이 렌더를 담당하는 현재 경계를 먼저 대조하여 불필요하게 재작성하지 않는다.

기존 초기 로드·복귀 갱신·부분 실패·다운로드 확인/재시도/소비 동작을 보존한다. 복귀 갱신 실패가 보고 있던 성공 상태를 덮지 않는 규칙과 갱신 도중 다운로드 상태를 잃지 않는 규칙을 유지한다. 일회성 결과를 UiState에 흡수하는 #228 규약과 신호 자체는 없애지 않으며 소비를 Intent.ConsumeXxx로 통일한다.

완료 조건

  • ReceiverHomeViewModel이 MviViewModel을 상속하고 현재 onEvent·복귀 갱신을 onIntent로 모은다.
  • 직접 상태 홀더 갱신이 없어지고 모든 전이는 dispatch → 순수 reduce로 처리된다.
  • 기존 Entry/Screen 경계를 대조해 상태 수집·수명·신호 소비와 stateless Content 렌더를 분리한다.
  • 기존 부분 실패·복귀 갱신·다운로드 확인/재시도/결과 소비 회귀 단언을 보존한다. 순수 전이는 코루틴 하네스 없이 검증한다.
  • konsist allowlist의 실제 com.afternote.feature.home.presentation.receiver.ReceiverHomeViewModel 예외를 제거한다.
  • 변경한 선언의 visibility를 실제 프로덕션 호출 범위로 정하고 테스트·스크린샷 때문에 넓히지 않는다.
  • 수신자 홈 실기·실서버 QA 결과를 기록한다. refactor(receiver): MVI 전환 — receiver 소유 ViewModel 7개·Screen 8개 #1803 분리 시점에 이 QA는 미실행이다.

자식 이슈

없음.

참고

Metadata

Metadata

Assignees

Labels

area:home홈 기능 영역refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions