Skip to content

refactor(receiver): 수신자 홈 담당 이관 — 도려낸 재료 2건 반영 (#1374·#1332 분리분) #1452

Closed

Description

@OnlyReadOneBook

작업 유형

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

주 담당 모듈

home — 홈

개요

수신자 홈(feature/receiver/presentation/.../home/) 담당을 이관하면서, 내 열린 PR 에서 도려낸 홈 몫 2건을 넘긴다. 재료는 이미 브랜치·코드로 준비돼 있고 검증까지 끝나 있으니 그대로 PR 을 열면 된다.

왜 이관인가 — 수신자 홈은 그동안 두 사람 실적이 섞여 있었다(#952·#926 은 @Sadturtleman 어사인·구현, 열린 #613 도 같음). 경계를 «수신자 홈은 @Sadturtleman» 으로 정리하고, 내 PR 은 홈 파일 0줄로 맞췄다.

1. 재진입 시 재조회 (PR #1374 에서 도려낸 몫)

브랜치: handover/receiver-home-reentry-refresh (develop 기준, 커밋 1개)

수신자 홈이 백스택에 살아 있는 동안 옛 값을 그대로 보여 주는 문제(#701)의 홈 몫이다.

파일 내용
ReceiverHomeEntry.kt LifecycleEventEffect(ON_RESUME) → refreshOnReturn()
ReceiverHomeViewModel.kt 로딩 미방출 갱신 / 첫 ON_RESUME 스킵(isFirstResume) + 진행 중 Job 가드 / 부분 실패 시 완결된 기존 화면 유지 / 갱신이 Success 를 교체해도 내려받기 다이얼로그 상태 보존
ReceiverHomeViewModelTest.kt 재진입 갱신 테스트 5건 추가 (모듈 전체 9건 통과)

검증 — :feature:receiver:presentation:testDebugUnitTest BUILD SUCCESSFUL, ReceiverHomeViewModelTest 9건 failures=0.

리뷰에서 이미 나온 지적 하나가 남아 있다 — PR #1374 리뷰에서 「가드 테스트가 창을 재현하지 않는다」는 지적을 받았다. 지금 테스트는 refreshOnReturn() 을 직접 부르므로 「init 로드가 즉시 끝난 뒤 도착한 첫 ON_RESUME」이 재현되지 않는다. 즉시 끝나는 fake 로 창을 만들고 요청 1회를 단언하는 형태를 더하는 것이 리뷰어(본인)의 요청이었다.

2. AfterNoteListItem.type non-null 반영 (PR #1332 에서 도려낸 몫)

PR #1332 가 AfterNoteListItem.type 을 AfternoteType? → AfternoteType 으로 좁힌다. 홈의 소비처 1줄이 따라가야 정합이 맞는다 — mapNotNull 은 non-null 값에도 그대로 컴파일되므로(R? 가 R 을 받는다) 동작·컴파일 영향은 없고, 불필요해진 mapNotNull 정리만 남은 것이다.

ReceiverHomeViewModel.kt toAfternoteIcons():

 private fun List<AfterNoteListItem>.toAfternoteIcons(): List<AfternoteSourceIcon> =
     asSequence()
-        .mapNotNull { it.type }
+        .map { it.type }
         .distinct()

선행 조건 — PR #1332 가 머지된 뒤에 넣어야 한다(그 전에는 type 이 아직 nullable 이라 map 이 타입 불일치).

자식 이슈

No response

참고

Activity

  1. added
    refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업
    area:receiver수신자 관리 기능 영역
    on Aug 29, 2026
  2. added and removed
    area:receiver수신자 관리 기능 영역
    on Aug 29, 2026
  3. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Aug 31, 2026
  4. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 1, 2026
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