Skip to content

fix(afternote): 작성자 상세 로드 실패에 재시도 진입점이 없다 — 같은 컴포넌트를 쓰는 다른 3개 화면과 비대칭 #1510

Description

@OnlyReadOneBook

작업 유형

bug — 버그·오동작

주 담당 모듈

afternote — 애프터노트

개요

작성자 애프터노트 상세가 로드에 실패하면 사용자가 복구할 방법이 없다. 에러 화면에 재시도 버튼이 없어 화면을 나갔다 다시 들어오는 것이 유일한 경로다.

DetailLoadErrorContent 는 onRetryClick 을 받도록 만들어져 있고(null 이면 버튼 미표시), 같은 컴포넌트를 쓰는 다른 화면들은 전부 넘긴다. 작성자 상세만 안 넘긴다.

실측 기준 리비전: 5d062d73b (origin/develop)

화면 onRetryClick 물려 있는 것
수신 애프터노트 상세 (ReceivedAfternoteDetailRoute:55) O viewModel::retry
수신 추억 플레이리스트 (ReceivedAfternoteNavGraph:64) O playlistViewModel::retry
수신자 선택 (AfternoteNavGraphSelectReceiver:29) O viewModel::refresh
작성자 상세 (AfternoteNavGraphDetail:255) X —

왜 그렇게 됐나

버튼을 안 그린 게 아니라 물릴 것이 없다. AfternoteDetailViewModel 에는 공개 재조회 진입점이 없다 — refreshOnReturn() 뿐인데 그건 첫 resume 스킵·진행 중 Job 스킵이 걸려 있어 버튼에 그대로 물릴 수 없다(눌러도 조용히 무시되는 경우가 생긴다).

작업 범위

#1374 가 도입한 LoadTrigger 에 계기를 하나 더한다.

  • LoadTrigger.UserRequested — 로딩을 띄우고(사용자가 기다림을 인지해야 한다), 실패는 에러 화면으로 말한다(사용자가 누른 동작이 무음으로 끝나면 안 된다).
  • fun retry() = loadDetail(afternoteIdFromNav, LoadTrigger.UserRequested)
  • AfternoteNavGraphDetail 의 DetailLoadErrorContent 에 onRetryClick = viewModel::retry 배선.

취소 처리가 함께 필요하다. 지금까지 이 VM 의 상세 조회는 «한 번에 하나» 였고 그 규칙을 refreshOnReturn 의 Job 가드가 지켰다. 재시도는 사용자가 누른 동작이라 «진행 중이면 무시» 가 답이 아니고 진행 중인 로드를 자르고 새로 시작해야 한다. 그러면 잘린 로드가 값을 들고 돌아와 새 화면을 덮는 창이 열리므로, 수신 상세와 같은 방식으로 막는다 — loadJob?.cancel() + 상태 쓰기 직전 ensureActive().

완료 조건

  • 로드 실패 화면에서 재시도를 누르면 상세를 다시 조회하고, 성공하면 상세가 보인다.
  • 재시도 실패는 다시 에러 화면으로 말한다(무음이 아니다).
  • 재시도가 진행 중인 자동 갱신을 잘랐을 때, 잘린 쪽 응답이 새 화면을 덮지 않는다 — 테스트로 가둔다.

자식 이슈

No response

참고

Activity

  1. github-actions commented on Aug 29, 2026

    @github-actions
    Contributor

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

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

    등록 후 24시간이 지나도 비어 있으면 자동으로 닫습니다. 닫힌 뒤에는 값을 지정하고 다시 열어 주세요.

  2. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Aug 29, 2026
  3. github-actions commented on Aug 29, 2026

    @github-actions
    Contributor

    이 이슈를 맡은 PR 은 #1511 다 (base feat/1497-detail-name-cache).

    base 가 기본 브랜치(develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에
    아무것도 표시하지 않는다. 본문에 Closes #N 이 있어도 마찬가지다 — 그 링크는 기본 브랜치를
    target 하는 PR 에서만 만들어진다.

    PR 이 닫히거나 머지되면 이 이슈의 pr-open 라벨은 다음 리컨사일에서 떨어진다.

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

Metadata

Metadata

Labels

area:afternote애프터노트 기능 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions