feat(home): 홈 탭 shell을 연결한다
This commit is contained in:
@@ -135,7 +135,7 @@
|
||||
|
||||
### Phase 4: 추천 데이터 상태 계층 정리
|
||||
|
||||
- [ ] **Task 4.1: 추천 ViewModel 데이터 로딩 계층 정리**
|
||||
- [x] **Task 4.1: 추천 ViewModel 데이터 로딩 계층 정리**
|
||||
- 대상 파일:
|
||||
- 생성/보완: `SodaLive/Sources/V2/Main/Home/Recommendation/MainHomeRecommendationViewModel.swift`
|
||||
- 이동/정리: `SodaLive/Sources/V2/Main/Home/MainHomeViewModel.swift`
|
||||
@@ -151,7 +151,7 @@
|
||||
|
||||
### Phase 5: 추천 상세 진입 데이터/라우팅 guard
|
||||
|
||||
- [ ] **Task 5.1: 추천 탭 상세 진입 guard 적용**
|
||||
- [x] **Task 5.1: 추천 탭 상세 진입 guard 적용**
|
||||
- 대상 파일:
|
||||
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
||||
- 생성/보완: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
||||
@@ -174,7 +174,7 @@
|
||||
|
||||
### Phase 6: 홈 탭 shell과 탭별 루트 연결
|
||||
|
||||
- [ ] **Task 6.1: 추천/랭킹/팔로잉 하위 폴더와 루트 View 준비**
|
||||
- [x] **Task 6.1: 추천/랭킹/팔로잉 하위 폴더와 루트 View 준비**
|
||||
- 대상 파일:
|
||||
- 생성/보완: `SodaLive/Sources/V2/Main/Home/Recommendation/MainHomeRecommendationView.swift`
|
||||
- 생성/보완: `SodaLive/Sources/V2/Main/Home/Ranking/MainHomeRankingView.swift`
|
||||
@@ -187,7 +187,7 @@
|
||||
- 실행 명령: `find SodaLive/Sources/V2/Main/Home -maxdepth 3 -type f | sort`
|
||||
- 기대 결과: `Recommendation`, `Ranking`, `Following` 하위 폴더의 루트 View 파일이 확인된다.
|
||||
|
||||
- [ ] **Task 6.2: MainHomeView 탭 shell 작성/보완**
|
||||
- [x] **Task 6.2: MainHomeView 탭 shell 작성/보완**
|
||||
- 대상 파일:
|
||||
- 생성/보완: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
||||
- 확인: `SodaLive/Sources/V2/Component/HomeTitleBar.swift`
|
||||
@@ -199,7 +199,7 @@
|
||||
- 실행 명령: `rg "struct MainHomeView|HomeTitleBar|MainHomeRecommendationView|MainHomeRankingView|MainHomeFollowingView|MainTabBarView|fetchRecommendations" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift`
|
||||
- 기대 결과: `MainHomeView`는 탭별 루트 View를 조합하고, `fetchRecommendations`를 직접 호출하지 않으며, 탭바 중복 생성은 없어야 한다.
|
||||
|
||||
- [ ] **Task 6.3: MainView 홈 탭 연결**
|
||||
- [x] **Task 6.3: MainView 홈 탭 연결**
|
||||
- 대상 파일:
|
||||
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
||||
- 작업 내용:
|
||||
@@ -442,6 +442,26 @@
|
||||
|
||||
## 검증 기록
|
||||
|
||||
### 2026-06-26 Phase 4~6 구현 완료
|
||||
|
||||
- 목적: 추천 ViewModel 데이터 로딩 계층을 `Recommendation` 하위로 정리하고, 추천 탭 상세 진입 callback guard와 홈 탭 shell/루트 View를 연결
|
||||
- 수행 내용:
|
||||
- `MainHomeViewModel.swift`를 `SodaLive/Sources/V2/Main/Home/Recommendation/MainHomeRecommendationViewModel.swift`로 이동하고 `MainHomeRecommendationViewModel`로 이름 변경
|
||||
- `MainHomeRecommendationView`를 추가해 추천 API 로딩/에러 toast 상태를 추천 탭 루트에서 관리하도록 구성
|
||||
- `MainHomeView`를 추가해 `HomeTitleBar`, 추천/랭킹/팔로잉 `TextTabBar`, 탭별 루트 View 조합만 담당하도록 구성
|
||||
- `MainHomeRankingView`, `MainHomeFollowingView`는 이번 추천 API 범위 밖이므로 최소 placeholder 루트 View만 추가
|
||||
- `MainView`의 `.home` 분기를 `MainHomeView`로 교체하고, 추천 상세 진입 callback을 기존 `token`, `auth`, `pendingAction`, `isShowAuthConfirmView`, `authView` 인프라를 재사용하는 guard helper에 연결
|
||||
- `HomeLiveItem`에 성인 여부 필드가 없어 라이브 항목 성인 여부는 임의 판단하지 않고, 향후 성인 여부가 명확한 호출에서 `requiresAdultContent`를 사용할 수 있게 중앙 helper만 준비
|
||||
- 신규/이동 Swift 파일을 `SodaLive.xcodeproj/project.pbxproj` 빌드 대상에 포함
|
||||
- 검증:
|
||||
- `rg "final class MainHomeRecommendationViewModel|fetchRecommendations|HomeRecommendationResponse|MainHomeRecommendationRepository|isLoading|errorMessage" SodaLive/Sources/V2/Main/Home` 실행, 추천 API 로딩/에러/응답 상태가 `MainHomeRecommendationViewModel` 중심으로 검색됨 확인
|
||||
- `rg "pendingAction|isShowAuthConfirmView|setPendingContentSettingsGuideMessage|adultContentEnableGuide|contentViewSettings|MainHomeView\(|MainHomeRecommendationView\(" SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/V2/Main/Home` 실행, 신규 추천 탭 callback이 `MainView` guard 인프라를 재사용함 확인
|
||||
- `find SodaLive/Sources/V2/Main/Home -maxdepth 3 -type f | sort` 실행, `Recommendation`, `Ranking`, `Following` 하위 루트 파일 확인
|
||||
- `rg "struct MainHomeView|HomeTitleBar|MainHomeRecommendationView|MainHomeRankingView|MainHomeFollowingView|MainTabBarView|fetchRecommendations" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift` 실행, `MainHomeView`가 탭별 루트 View를 조합하고 `fetchRecommendations`를 직접 호출하지 않음 확인
|
||||
- `rg "case \\.home|MainHomeView|MainPlaceholderTabView" SodaLive/Sources/V2/Main/MainView.swift` 실행, `.home`이 `MainHomeView`를 표시하고 다른 placeholder 탭은 유지됨 확인
|
||||
- `plutil -lint SodaLive.xcodeproj/project.pbxproj` 실행, `OK` 확인
|
||||
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` 실행, `BUILD SUCCEEDED` 확인
|
||||
|
||||
### 2026-06-26 Phase 1~3 코드 리뷰 보완
|
||||
|
||||
- 목적: Phase 2.2 리뷰에서 지적된 과거 추정 응답 필드 혼재를 제거하고, 추천 전용 request 모델 위치를 `Recommendation/Models` 구조로 일치
|
||||
|
||||
Reference in New Issue
Block a user