Repository navigation
refactor(receiver): 수신자 홈 담당 이관 — 도려낸 재료 2건 반영 (#1374·#1332 분리분) #1452
Description
작업 유형
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
참고
- 모듈을
home으로 단 이유 — 이 레포의 담당 지도는.github/scripts/reconcile-issue-metadata.mjs의ASSIGNEE_BY_MODULE에 박혀 있고(receiver → 1hyok,home → Sadturtleman), 이슈 폼의 «주 담당 모듈» 선택이 어사인을 강제합니다.receiver로 두면 가드가 어사인을 되돌립니다(실제로 2회 되돌아갔습니다). 수신자 홈을 담당자 큐에 올리려면home이 맞는 칸입니다. - 도려낸 커밋: PR fix(afternote): 상세·수신자 화면이 재진입 시 데이터를 다시 조회한다 (#701) #1374
f01529dc1, PR fix(receiver): 카테고리 실패를 항목 단위로 격리 (#1010) #13325277bf391 - 이미 develop 에 들어간 홈 변경은 되돌리지 않았다 — PR refactor: 담당 area 의 main 소스셋 @Preview 148건 전량 삭제 (#1434) #1435(main
@Preview삭제, 홈 3파일)는 이 정리 이전에 머지됐고, 스택 PR refactor(receiver): 도달 불가한 summary 패키지 8파일 제거 — home 이 대체한 옛 수신자 홈 (#1424) #1430·refactor(receiver): 수신자 홈 내려받기 실패 Toast 를 Snackbar 로 전환 (#1391) #1412·refactor(receiver): ReceiverHomeActions no-op 콜백 디폴트 4건 제거 (#1388) #1414 는 승인·머지 가능 상태였으므로 머지로 끝냈다. - 관련: 상세·수신 흐름 6개 화면이 재진입 시 미갱신 — 수정 후 복귀해도 옛 값 표시 #701 카테고리 실패의 폭을 항목 단위로 좁힌다 — 와이어 관용·도메인 엄격, 매퍼가 기각·보고 #1010 수신자 홈 헤더 액션이 맥락 불일치 — 프로필 아이콘 무동작·설정에 '로그아웃' 만 노출 #613
Activity