Skip to content

feat(afternote): 추억 노트 상세 제목의 이름 표시 지연 제거 — 이미 있는 이름 캐시를 상세도 읽는다 #1497

Closed

Description

@OnlyReadOneBook

작업 유형

enhancement — 신규 기능·기존 기능 개선

주 담당 모듈

afternote — 애프터노트

개요

추억 노트 상세 제목의 이름 세그먼트가 네트워크 왕복이 끝나야 채워진다. 진입 직후에는 추억 노트에 대한 기록 으로 그려졌다가, GET /users/me 응답이 도착하면 추억 노트에 대한 OO님의 기록 으로 제목 한 줄이 눈앞에서 다시 쓰인다.

원인은 상세 VM 이 이름을 매번 원격으로만 구하기 때문이다 — AfternoteDetailViewModel.init 이 userRepository.getMyProfile() 를 화면 진입마다 발사하고, UserRepositoryImpl.getMyProfile() 에는 캐싱이 없다.

그런데 같은 값의 로컬 캐시가 이미 있다.

있는 것 위치 지금 쓰는 곳
UserProfileRepository.getCachedUserName() / saveUserName() core:domain → core:datastore HomeTabViewModel 하나 (#135 · #136)

홈이 콜드스타트 placeholder 로 쓰는 그 이름이 상세가 필요한 이름과 같은 값이다. feature:afternote 는 이미 UserProfileRepository 를 주입하고 있어(AfternoteHostViewModel 의 패스키 상태) DI 결선도 새로 필요 없다.

변경 — 홈이 쓰는 stale-while-revalidate 를 상세에도 적용한다.

  1. init 에서 getCachedUserName() 을 먼저 읽어 표시명에 즉시 반영한다.
  2. getMyProfile() 응답이 도착하면 화면을 갱신하고 saveUserName() 으로 캐시를 최신화한다.
  3. 캐시가 비어 있고 조회도 실패하면 현행대로 이름 세그먼트를 생략한다 — 표시명은 장식 정보라 화면을 차단하지 않는다.

완료 조건

  • 캐시에 이름이 있으면 상세 첫 프레임 제목에 이름이 들어간다 (네트워크 대기 없음).
  • 서버 이름이 캐시와 다르면 도착 시 화면과 캐시 양쪽이 갱신된다.
  • 캐시 읽기·쓰기 실패가 화면을 막지 않는다.
  • 위 세 갈래를 유닛 테스트로 가둔다.

범위 밖 — UserRepository 인터페이스에 캐시 계약(myProfileFlow 류)을 새로 다는 일. 프로필 책임 분리가 #1282 에서 진행 중이라 계약을 늘리지 않고 이미 있는 캐시 API 만 소비한다.

자식 이슈

No response

참고

Activity

  1. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Aug 29, 2026
  2. 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애프터노트 기능 영역enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions