2.7 KiB
2.7 KiB
20260324 라이브 상세 복귀 시 DIM만 보이는 문제 수정 계획
작업 체크리스트
- 라이브 상세 복귀 시 상세 패널 비노출 원인 분석
LiveDetailView복귀 시점 표시 상태 복원 로직 구현- 원인과 수정안 문서화
- 진단/빌드/테스트 검증 수행 및 기록
원인 분석
LiveDetailView가 자체LiveDetailViewModel을@ObservedObject로 생성하고 있었다.- 이 뷰는
ContentView의 전역 오버레이(appState.liveDetailSheet)로 표시되며, 채널 보기 이동(AppState.shared.setAppStep(step: .creatorDetail))이나 앱 활성/비활성 전환 시 부모 뷰가 다시 그려진다. - 재그리기 시
@ObservedObject인스턴스가 재생성되면showDetail이 기본값(false)로 돌아가고, 하단 패널은offset(y: viewModel.showDetail ? 0 : proxy.size.height * 0.9)때문에 화면 밖으로 내려간다. - DIM 레이어(
Color.black.opacity(0.7))는showDetail과 무관하게 항상 렌더링되므로, 결과적으로 "상세 패널은 사라지고 DIM만 보이는" 상태가 발생한다.
수정안
SodaLive/Sources/Live/Room/Detail/LiveDetailView.swift@ObservedObject var viewModel = LiveDetailViewModel()- →
@StateObject private var viewModel = LiveDetailViewModel()로 변경.
- 상세 시트를 소유하는 뷰에서 ViewModel 인스턴스를 유지하도록 바꿔, 페이지 이동/복귀 및 라이프사이클 변화 시에도
showDetail상태가 초기화되지 않도록 했다. - 기존 UI 구조, 애니메이션, 닫기 로직은 변경하지 않고 상태 소유 방식만 최소 수정했다.
검증 기록
1차 검증 (2026-03-24)
- 무엇/왜/어떻게:
- 무엇:
LiveDetailView의 ViewModel 소유 방식을@StateObject로 변경. - 왜: 복귀 시
showDetail초기화로 패널이 숨겨지고 DIM만 남는 문제를 방지하기 위함. - 어떻게: 코드 수정 후 진단/빌드/테스트 엔트리 포인트 명령으로 회귀 여부 확인.
- 무엇:
- 실행 명령:
lsp_diagnostics(file: SodaLive/Sources/Live/Room/Detail/LiveDetailView.swift)xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug buildxcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" testxcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build
- 결과:
lsp_diagnostics:No such module 'Kingfisher'1건(현재 SourceKit 환경 제약으로 인한 기존 이슈).SodaLive빌드:** BUILD SUCCEEDED **SodaLive테스트:Scheme SodaLive is not currently configured for the test action.SodaLive-dev빌드:** BUILD SUCCEEDED **