Skip to content

refactor(receiver): 추모 영상 실행 안내를 Toast 에서 스낵바로 옮긴다 (#1391) - #1530

Merged
OnlyReadOneBook merged 1 commit into
developfrom
refactor/1391-memorial-video-snackbar
Aug 30, 2026
Merged

OnlyReadOneBook merged 1 commit into
developfrom
refactor/1391-memorial-video-snackbar

Conversation

@OnlyReadOneBook

Copy link
Copy Markdown
Collaborator

android.widget.Toast 의 마지막 실사용을 걷는다. 이 PR 이 머지되면 main 소스셋의 import android.widget.Toast 는 0건이다.

남아 있던 것

이슈의 3건 중 건 1 은 PR #1412(잠정 스낵바), 건 2 는 PR #1430(도달 불가 화면 삭제)으로 이미 해소됐다. 남은 건 3 — 수신자 추모 영상 상세의 실행 안내 — 이 이 PR 몫이다.

무엇을 했나

  • 채널 — 화면 Scaffold 에 SnackbarHost 를 두고 클릭 처리를 rememberReceivedMemorialVideoClickHandler 로 모았다. 작성자 쪽 상세(fix(afternote): 추억 노트 상세 기본 상호작용 보완 (#463) #1336)의 rememberMemorialVideoClickHandler 와 같은 형태다.
  • 문구 분리 유지 — onRejected(막힌 URL) / onUnavailable(OS 거부)은 PR fix(receiver): 수신 추억 노트 상세 영상 실행에 http/https 스킴 가드 이식 (#1394) #1395 가 이미 갈라 놓은 계약이다. 채널만 옮기면서 각 갈래를 서로 다른 리소스에 붙였다. 하나로 합치면 스킴이 막힌 상황에 「재생할 앱이 없습니다」라는 거짓 안내가 나간다.
  • 리소스화 — 하드코딩으로 남아 있던 거부 문구를 receiver_memorial_video_invalid_url 로 뺐다. 이 화면은 feature/afternote/presentation 소속이라 그 모듈의 receiver_ 접두어 관례를 따랐다.
  • ReceiverVideoSection 은 context 를 직접 잡는 대신 클릭 콜백을 받는다 — 실행 수단이 한 곳으로 모여 테스트가 화면 밖에서 갈래를 만들 수 있다.

검증

항목 결과
:feature:afternote:presentation:testDebugUnitTest ✅ 전량 통과 (신규 2건 포함)
:feature:afternote:presentation:ktlintCheck ✅
:app:compileDebugUnitTestKotlin ✅
:app:compileDebugAndroidTestKotlin ✅
main 소스 android.widget.Toast ✅ 0건

신규 ReceivedMemorialVideoNoticeTest 2건 — 막힌 URL 클릭 시 주소 문구가 뜨고 앱 부재 문구는 뜨지 않음 / Robolectric checkActivities(true) 로 OS 거부를 재현했을 때 반대로 갈림. 두 단언 모두 교차 부재(assertDoesNotExist)를 함께 본다.

QA·시안 대조: 시안에 이 안내의 정의는 없다. Toast→스낵바는 #664 가 정한 repo convention 을 따른 것이고, 문구는 PR #1395 가 확정한 두 갈래를 그대로 옮겼다.

골든 영향: 이 화면에 MemorialReceivedDetailScreenScreenshotTest 가 있으나 스낵바가 떠 있지 않은 상태의 렌더는 그대로다(빈 snackbarHost 슬롯). CI 판정에 맡긴다 — 골든 정본은 컨테이너라 macOS 재생성은 하지 않았다.

남겨 두는 것

Closes #1391

CI Test Plan

{
  "androidTest": {
    "mode": "none",
    "reason": "변경은 feature/afternote/presentation 의 수신자 상세 화면 한 파일과 문자열 리소스, 그리고 unit test 뿐이다. navigation 디렉터리·AndroidManifest·MainActivity·androidTest·빌드 하네스 중 어느 것도 건드리지 않아 계측 경계가 없고, 안내 표출은 Robolectric Compose 테스트가 두 갈래 모두 단언한다."
  }
}

레포에 마지막으로 남아 있던 android.widget.Toast 다. Toast 는 시스템 UI 라 앱 테마·시안을
안 타고 Compose semantics 에 안 잡혀 어떤 테스트로도 단언할 수 없다 — 채널을 옮기는 것이
곧 검증 가능성이다.

작성자 쪽 상세(#1336)와 같은 방식으로 화면 Scaffold 에 SnackbarHost 를 두고, 클릭 처리를
rememberReceivedMemorialVideoClickHandler 로 모았다. 두 콜백은 원인이 다르므로 각각 다른
리소스에 붙는다 — 막힌 URL 은 주소 문제로, OS 거부는 재생 앱 부재로 안내한다. 하드코딩으로
남아 있던 거부 문구도 receiver_ 접두어 리소스로 뺐다.
@OnlyReadOneBook
OnlyReadOneBook added this pull request to the merge queue Aug 30, 2026
Merged via the queue into develop with commit fc1c19a Aug 30, 2026
21 checks passed
@OnlyReadOneBook
OnlyReadOneBook deleted the refactor/1391-memorial-video-snackbar branch August 30, 2026 02:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants