Skip to content

refactor(home): MVI 전환 — HomeTabViewModel #1808

Open

Description

@OnlyReadOneBook

작업 유형

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

주 담당 모듈

home — 홈

개요

home 의 HomeTabViewModel 1개를 MviViewModel 로 전환한다.

현황 (develop 실측)

항목 수치
ViewModel 1개
Screen / on* 콜백 1개 / 1개
presentation @Test 16개

전환 대상 중 가장 작다. 파일럿(onboarding)에서 확정된 관용구를 그대로 적용하면 된다.

완료 조건

  • HomeTabViewModel 이 MviViewModel 상속이고 onIntent 단일 진입점이다
  • 상태 전이가 reduce 안에만 있다
  • Screen 이 Screen/Content 2단이다
  • @Test 16개가 초록이다
  • konsist allowlist 에서 HomeTabViewModel 이 빠진다

자식 이슈

No response

참고

홈 탭은 다른 모듈의 콘텐츠를 모아 그리는 화면이라 전환 순서상 각 모듈 전환 이후가 안전하다.

네비게이션은 이 전환 범위 밖이다.

Activity

  1. added
    refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업
    on Sep 3, 2026
  2. Sadturtleman commented on Sep 11, 2026

    @Sadturtleman
    Collaborator

    착수 전 실측 — 이 전환은 지금 착수하면 재진입 갱신 가드(#701)를 조용히 잃는다. 선행이 하나 더 있다.

    • HomeTabViewModel.refreshOnReturn() 은 RefreshOnReturnWiringKonsistTest 의 대상이다. 그 가드는 「refreshOnReturn 을 선언한 클래스가 있으면, Lifecycle.Event.ON_RESUME 과 refreshOnReturn( 를 함께 갖고 그 클래스를 참조하는 main 파일이 있어야 한다」 이고, 홈 탭은 app/.../AppNavigation.kt 의 viewModel.refreshOnReturn() 한 줄이 그 짝이다.
    • MVI 로 옮기면 결선이 viewModel.onIntent(HomeTabIntent.RefreshOnReturn) 이 되어 refreshOnReturn( 텍스트가 사라진다. 그대로 두면 가드가 빨개지고, 피하려고 private 함수 이름을 바꾸면 홈 탭이 가드 대상에서 빠진 채 초록이 된다 — 상세·수신 흐름 6개 화면이 재진입 시 미갱신 — 수정 후 복귀해도 옛 값 표시 #701 이 두 번 재현한 「결선만 사라져도 아무 신호가 없는」 상태로 되돌아간다.
    • 설정 모듈이 같은 전환을 먼저 했고(PR fix(setting): 설정 하위 화면 4종의 재진입 갱신 (#1920) #1930), 거기서 가드를 Intent 형태까지 넓히는 변경이 RefreshOnReturnWiringKonsistTest 에 이미 들어가 있다. private fun refreshOnReturn() 은 남기고 onIntent(XIntent.RefreshOnReturn) 결선을 인정하는 방식이다.
    • 그래서 이 이슈가 같은 파일을 또 고치면 fix(setting): 설정 하위 화면 4종의 재진입 갱신 (#1920) #1930 과 형제 충돌이 난다. fix(setting): 설정 하위 화면 4종의 재진입 갱신 (#1920) #1930 머지 뒤에 착수하는 편이 맞다 — 그때는 private fun refreshOnReturn() 을 남기는 설정 모듈의 관용구를 그대로 쓰면 가드가 홈 탭도 계속 덮는다.

    그 외 착수 조건은 갖춰져 있다.

    • core:ui 의 MVI 베이스·마커·ObserveSignal 과 docs/convention/mvi.md 는 develop 에 있다.
    • 열린 PR 27개 중 HomeTabViewModel.kt·HomeTabScreen.kt 를 건드리는 것은 없다(2026-09-11 실측). 파일 충돌은 이 konsist 한 건뿐이다.
    • 전환 범위도 확인했다 — HomeTabActions 의 11개 중 네비게이션 10개는 규약상 전환 범위 밖이고, 실제로 접히는 것은 onRetryLoad 와 refreshOnReturn 둘이다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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