Skip to content

refactor(afternote): 에디터 미디어 삭제 진입점을 set*(null) 에서 떼고 미디어 콜백을 non-null 로 조인다 (#1561 후속) #1717

Closed

Description

@OnlyReadOneBook

작업 유형

refactor — 동작 변경 없는 구조·책임·경계 개선

주 담당 모듈

afternote — 애프터노트

개요

#1561(PR #1565)에서 추모 영상 값 객체는 교체와 취소를 withSelection(url: String) / discardSelection() 두 연산으로 갈랐다. 그런데 값 객체 위의 사슬은 여전히 null 하나로 두 동작을 겸한다. 사진 쪽도 같은 모양이다.

왜 문제인가.

  • ViewModel 의 공개 API 만 보면 «삭제» 가 존재한다는 사실이 안 보인다. setMemorialVideo 의 본문과 KDoc 을 읽어야 null 이 삭제인 줄 안다.
  • setMemorialThumbnail(String?) 은 아무도 null 을 보내지 않는다 — AfternoteEditorRoute 가 pendingThumbnailUrl != null 가드 뒤에서만 부른다. 타입이 실제보다 넓어 호출부마다 «null 이면?» 을 생각하게 만든다.
  • feat(afternote): 수정 모드에서 서버 영정사진·추모 영상을 지울 수 있게 한다 — BE 삭제 계약 확장 반영 #1597 이 들어오면 null 의 뜻이 «표시된 층 하나 걷기(교체분이면 서버로 복귀, 서버면 PATCH null)» 로 깊어진다. 그 3상태 의미를 null 한 값에 계속 실으면 값 객체가 굳이 갈라 둔 연산이 사슬 위에서 도로 뭉개진다.

완료 조건.

  • AfternoteEditorViewModel 과 AfternoteEditorState 가 삭제를 이름 있는 연산으로 낸다 — removeMemorialPhoto() / removeMemorialVideo(). setMemorialPhoto·setMemorialVideo·setMemorialThumbnail 은 String 을 받는다.
  • AfternoteEditorContent 의 onPhotoRemoved / onVideoRemoved 가 그 연산으로 배선된다.
  • EditorFormMutations 에서 null 을 해석하는 분기가 사라진다. «삭제가 무엇을 하는가» 는 feat(afternote): 수정 모드에서 서버 영정사진·추모 영상을 지울 수 있게 한다 — BE 삭제 계약 확장 반영 #1597 이 정한 규칙 그대로 두고, 그 규칙을 부르는 이름만 바꾼다 — 동작 변경 없음.
  • 기존 회귀 테스트가 그대로 통과한다. 옮길 호출부는 setMemorialVideo(null) 3곳(AfternoteEditorMemorialMediaRemoveTest·AfternoteEditorReceiverSnapshotTest), withMemorialVideo(null) 4곳(MemorialVideoServerOriginTest), 사진 쪽 setMemorialPhoto(null) 사용처.

자식 이슈

No response

참고

Activity

  1. added
    refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업
    area:afternote애프터노트 기능 영역
    on Sep 2, 2026
  2. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 4, 2026
  3. github-actions commented on Sep 4, 2026

    @github-actions
    Contributor

    이 이슈를 맡은 PR 은 #1903 다 (base feat/1597-server-media-delete).

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

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

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

Metadata

Metadata

Labels

area:afternote애프터노트 기능 영역refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions