You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
refactor(home): ReceiverHomeViewModel과 수신자 홈 화면을 MVI로 전환 #2037
#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를 실제 프로덕션 호출 범위로 정하고 테스트·스크린샷 때문에 넓히지 않는다.
Activity