Files
sodalive-ios/docs/20260313_알림리스트라이브이동분기수정.md

3.2 KiB

20260313 알림 리스트 라이브 이동 분기 수정

작업 목표

  • 알림 리스트에서 라이브 알림을 탭했을 때 화면이 HomeView 뒤에서 동작해 확인 불가한 문제를 해소한다.
  • 라이브 알림 탭 시 알림 리스트를 벗어난 뒤 이동되도록 보정한다.
  • 라이브 상태(예약/진행)는 기존 HomeView -> LiveViewModel.enterLiveRoom(roomId:) 흐름의 상태 판별을 사용해 분기한다.

구현 체크리스트

  • 알림 리스트 라이브 딥링크 탭 전용 처리 소스를 추가한다.
  • 라이브 알림 탭 시 .main 복귀가 보장되도록 라우팅 플래그를 조정한다.
  • 비라이브 딥링크/기존 외부 딥링크 동작을 유지한다.
  • 진단/빌드/테스트 검증 및 결과를 문서에 기록한다.

수용 기준

  • 알림 리스트에서 라이브 알림 탭 시 알림 리스트 화면을 빠져나온 뒤 라이브 이동 흐름이 보인다.
  • 예약 라이브는 기존 enterLiveRoom의 예약 상세 분기(channelName == nil)를 탄다.
  • 진행 라이브는 기존 enterLiveRoom의 입장 분기를 탄다.

검증 기록

  • 무엇/왜/어떻게: AppDeepLinkHandlerAppDeepLinkSource(external, notificationList)를 추가하고, .live 액션에서만 isPushRoomFromDeepLink 값을 소스 기반으로 설정하도록 변경했다. 알림 리스트 진입(notificationList)에서는 false가 설정되어 HomeViewpushRoomId 처리에서 .main 복귀 후 enterLiveRoom(roomId:)가 실행된다. 외부/일반 딥링크는 기본값 external로 기존 동작을 유지한다.
  • 무엇/왜/어떻게: PushNotificationListViewModel.onTapItem(_:)에서 AppDeepLinkHandler.handle(urlString:source:)source: .notificationList로 호출하도록 변경해 알림 리스트 라이브 탭에만 화면 복귀 보정을 적용했다.
  • 실행 명령: lsp_diagnostics (SodaLive/Sources/App/AppDeepLinkHandler.swift, SodaLive/Sources/Notification/List/PushNotificationListViewModel.swift)
  • 결과: SourceKit 단독 컨텍스트에서 모듈/심볼(AppState, I18n, PushNotificationRepository 등) 미해결 오류가 출력됐다. 동일 파일은 아래 Xcode 빌드로 컴파일 성공을 확인했다.
  • 실행 명령: xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build
  • 결과: ** BUILD SUCCEEDED **
  • 실행 명령: xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build
  • 결과: ** BUILD SUCCEEDED **
  • 실행 명령: xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test
  • 결과: Scheme SodaLive is not currently configured for the test action.
  • 실행 명령: xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test
  • 결과: Scheme SodaLive-dev is not currently configured for the test action.
  • 수동 QA: 코드 경로 점검으로 PushNotificationListViewModel.onTapItemAppDeepLinkHandler(.notificationList)HomeView.valueChanged(pushRoomId).main 복귀 후 LiveViewModel.enterLiveRoom 호출 흐름을 확인했다. 이 흐름에서 예약/진행 분기는 기존 enterLiveRoomchannelName 기반 로직을 그대로 사용한다.