Skip to content

fix(receiver): 발신자 상세 VM 이 Nav3 entry 에서 senderId 를 toRoute 로 읽어 진입 시 크래시 #2168

Closed

Description

@OnlyReadOneBook

작업 유형

bug — 버그·오동작

주 담당 모듈

receiver — 수신자 관리

개요

문제. 받은 기록함에서 발신자 카드를 누르면 발신자 상세 화면의 ViewModel 을 만드는 순간 앱이 죽는 것으로 보인다. 지금은 정적 확인 단계이고 재현은 이 이슈에서 한다.

원인. SenderDetailViewModel.kt:47 이 savedStateHandle.toRoute<ReceiverRoute.SenderDetailRoute>() 로 senderId 를 읽는다. 이 화면은 #1698 (PR #1824) 에서 ReceiverNavHost 의 Navigation 3 entry 로 옮겨졌다.

lifecycle-viewmodel-navigation3 2.11.0 의 ViewModelStoreNavEntryDecorator 는 entry 마다 ViewModelStoreOwner 를 만들 때 defaultArgs 를 빈 값으로 두고 부모 owner 의 creation extras 만 물려준다. NavKey 의 필드는 SavedStateHandle 에 들어가지 않는다. 부모는 앱 루트 Nav2 의 composable<Route.Receiver> 이고 Route.Receiver 는 인자 없는 data object 라서 senderId 가 없다. 그러면 toRoute 가 필수 필드 누락으로 예외를 던진다.

같은 이관에서 DeliveryVerificationFlowViewModel·ReceivedAfternoteDetailViewModel 은 route 를 assisted 주입으로 받게 바꿨는데 이 VM 만 빠졌다. SenderDetailViewModelTest·SenderDetailApprovedAtTest 는 SavedStateHandle 을 손으로 채워 VM 을 만들어서 이 결함이 드러나지 않는다.

완료 조건.

  • 에뮬레이터에서 받은 기록함, 발신자 등록, 카드 탭 순서로 크래시를 재현하고 스택트레이스를 남긴다.
  • 실제 Hilt 경로(ReceiverNavHost entry 에서 hiltViewModel)를 타는 테스트가 고치기 전에는 실패하고 고친 뒤 통과한다.
  • SenderDetailViewModel 이 route 를 assisted 로 받고 entry 가 creationCallback 으로 key 를 넘긴다. SenderDetailScreen 의 viewModel 파라미터에서 hiltViewModel() 기본값을 없앤다.
  • afternote·onboarding·receiver 의 Nav3 entry 안 ViewModel 중 라우트 인자를 SavedStateHandle 로 읽는 곳이 더 있는지 전수 확인하고 결과를 PR 에 적는다.

자식 이슈

No response

참고

Activity

  1. github-actions commented on Sep 26, 2026

    @github-actions
    Contributor

    bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:

    • Urgent: 치명 — 크래시·데이터 소실·보안 무력화·핵심 경로 차단·가짜 성공
    • High: 심각 — 실패·틀린 값의 정상 위장, 핵심 기능 무동작
    • Medium: 불편 — 우회로가 있는 오동작·틀린 표시, 핵심 흐름은 유지
    • Low: 경미 — 문구·정렬·마감 품질 흠, 기능 영향 없음

    값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.

  2. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 26, 2026
  3. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:receiver수신자 관리 기능 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions