You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(afternote): 작성자 상세 로드 실패에 재시도 진입점이 없다 — 같은 컴포넌트를 쓰는 다른 3개 화면과 비대칭 #1510
작성자 애프터노트 상세가 로드에 실패하면 사용자가 복구할 방법이 없다. 에러 화면에 재시도 버튼이 없어 화면을 나갔다 다시 들어오는 것이 유일한 경로다.
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 스킵이 걸려 있어 버튼에 그대로 물릴 수 없다(눌러도 조용히 무시되는 경우가 생긴다).
LoadTrigger.UserRequested — 로딩을 띄우고(사용자가 기다림을 인지해야 한다), 실패는 에러 화면으로 말한다(사용자가 누른 동작이 무음으로 끝나면 안 된다).
fun retry() = loadDetail(afternoteIdFromNav, LoadTrigger.UserRequested)
AfternoteNavGraphDetail 의 DetailLoadErrorContent 에 onRetryClick = viewModel::retry 배선.
취소 처리가 함께 필요하다. 지금까지 이 VM 의 상세 조회는 «한 번에 하나» 였고 그 규칙을 refreshOnReturn 의 Job 가드가 지켰다. 재시도는 사용자가 누른 동작이라 «진행 중이면 무시» 가 답이 아니고 진행 중인 로드를 자르고 새로 시작해야 한다. 그러면 잘린 로드가 값을 들고 돌아와 새 화면을 덮는 창이 열리므로, 수신 상세와 같은 방식으로 막는다 — loadJob?.cancel() + 상태 쓰기 직전 ensureActive().
완료 조건
로드 실패 화면에서 재시도를 누르면 상세를 다시 조회하고, 성공하면 상세가 보인다.
재시도 실패는 다시 에러 화면으로 말한다(무음이 아니다).
재시도가 진행 중인 자동 갱신을 잘랐을 때, 잘린 쪽 응답이 새 화면을 덮지 않는다 — 테스트로 가둔다.
Activity
github-actions commentedon Aug 29, 2026
bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:
등록 후 24시간이 지나도 비어 있으면 자동으로 닫습니다. 닫힌 뒤에는 값을 지정하고 다시 열어 주세요.
github-actions commentedon Aug 29, 2026
이 이슈를 맡은 PR 은 #1511 다 (base
feat/1497-detail-name-cache).base 가 기본 브랜치(
develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에아무것도 표시하지 않는다. 본문에
Closes #N이 있어도 마찬가지다 — 그 링크는 기본 브랜치를target 하는 PR 에서만 만들어진다.
PR 이 닫히거나 머지되면 이 이슈의
pr-open라벨은 다음 리컨사일에서 떨어진다.