fix(live-room): 라이브 상세 복귀 시 DIM만 보이는 상태를 방지한다
This commit is contained in:
37
docs/20260324_라이브상세복귀시DIM만보이는문제수정.md
Normal file
37
docs/20260324_라이브상세복귀시DIM만보이는문제수정.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# 20260324 라이브 상세 복귀 시 DIM만 보이는 문제 수정 계획
|
||||
|
||||
## 작업 체크리스트
|
||||
- [x] 라이브 상세 복귀 시 상세 패널 비노출 원인 분석
|
||||
- [x] `LiveDetailView` 복귀 시점 표시 상태 복원 로직 구현
|
||||
- [x] 원인과 수정안 문서화
|
||||
- [x] 진단/빌드/테스트 검증 수행 및 기록
|
||||
|
||||
## 원인 분석
|
||||
- `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 build`
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test`
|
||||
- `xcodebuild -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 **`
|
||||
Reference in New Issue
Block a user