feat(home): 팔로잉 탭 API 상태를 추가한다
This commit is contained in:
@@ -73,7 +73,7 @@
|
||||
|
||||
### Phase 1: 기준점 점검과 탭 guard 설계
|
||||
|
||||
- [ ] **Task 1.1: PRD와 기존 팔로잉 placeholder 확인**
|
||||
- [x] **Task 1.1: PRD와 기존 팔로잉 placeholder 확인**
|
||||
- 대상 파일:
|
||||
- 확인: `docs/20260630_메인_홈_팔로잉_탭/prd.md`
|
||||
- 확인: `SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift`
|
||||
@@ -86,7 +86,7 @@
|
||||
- 실행 명령: `sed -n '1,120p' SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift && sed -n '1,120p' SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
||||
- 기대 결과: 팔로잉 탭은 placeholder이고, `MainHomeView`는 탭 shell 역할만 담당한다.
|
||||
|
||||
- [ ] **Task 1.2: 팔로잉 탭 선택 로그인 guard 연결**
|
||||
- [x] **Task 1.2: 팔로잉 탭 선택 로그인 guard 연결**
|
||||
- 대상 파일:
|
||||
- 수정: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
||||
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
||||
@@ -105,7 +105,7 @@
|
||||
|
||||
### Phase 2: API, Repository, Response model, ViewModel
|
||||
|
||||
- [ ] **Task 2.1: 팔로잉 응답 모델 생성**
|
||||
- [x] **Task 2.1: 팔로잉 응답 모델 생성**
|
||||
- 대상 파일:
|
||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Models/HomeFollowingTabResponse.swift`
|
||||
- 작업 내용:
|
||||
@@ -117,7 +117,7 @@
|
||||
- 실행 명령: `rg "struct HomeFollowingTabResponse|struct ChatRoomListItemResponse|enum CreatorActivityType|struct FollowingNewsResponse|struct FollowingCreatorRankingNewsResponse|struct FollowingContentNewsResponse|struct FollowingContentRankingNewsResponse|struct FollowingCommunityPostNewsResponse|enum FollowingNewsType|unknown\\(" SodaLive/Sources/V2/Main/Home/Following/Models/HomeFollowingTabResponse.swift`
|
||||
- 기대 결과: PRD의 응답 모델과 unknown enum 처리가 확인된다.
|
||||
|
||||
- [ ] **Task 2.2: 팔로잉 API endpoint 생성**
|
||||
- [x] **Task 2.2: 팔로잉 API endpoint 생성**
|
||||
- 대상 파일:
|
||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Repository/MainHomeFollowingApi.swift`
|
||||
- 확인: `SodaLive/Sources/V2/Main/Home/Recommendation/Repository/MainHomeRecommendationApi.swift`
|
||||
@@ -130,7 +130,7 @@
|
||||
- 실행 명령: `rg "enum MainHomeFollowingApi|getFollowing|/api/v2/home/following|Authorization|requestPlain|TargetType" SodaLive/Sources/V2/Main/Home/Following/Repository/MainHomeFollowingApi.swift`
|
||||
- 기대 결과: 팔로잉 전용 API endpoint와 인증 헤더가 확인된다.
|
||||
|
||||
- [ ] **Task 2.3: 팔로잉 Repository 생성**
|
||||
- [x] **Task 2.3: 팔로잉 Repository 생성**
|
||||
- 대상 파일:
|
||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Repository/MainHomeFollowingRepository.swift`
|
||||
- 확인: `SodaLive/Sources/V2/Main/Home/Ranking/Repository/MainHomeRankingRepository.swift`
|
||||
@@ -141,7 +141,7 @@
|
||||
- 실행 명령: `rg "final class MainHomeFollowingRepository|MoyaProvider<MainHomeFollowingApi>|getFollowing\\(\\)|AnyPublisher<Response, MoyaError>" SodaLive/Sources/V2/Main/Home/Following/Repository/MainHomeFollowingRepository.swift`
|
||||
- 기대 결과: 기존 V2 홈 Repository와 같은 패턴이 확인된다.
|
||||
|
||||
- [ ] **Task 2.4: 팔로잉 ViewModel 생성**
|
||||
- [x] **Task 2.4: 팔로잉 ViewModel 생성**
|
||||
- 대상 파일:
|
||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingViewModel.swift`
|
||||
- 확인: `SodaLive/Sources/V2/Main/Home/Recommendation/MainHomeRecommendationViewModel.swift`
|
||||
@@ -159,7 +159,7 @@
|
||||
- 실행 명령: `rg "final class MainHomeFollowingViewModel|fetchFollowing|ApiResponse<HomeFollowingTabResponse>|isLoginRequired|emptyStateMessage|loadFailedMessage|hasLoaded|ERROR_LOG" SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingViewModel.swift`
|
||||
- 기대 결과: API 디코딩, 로그인 필요 상태, empty/API 실패 문구 처리가 확인된다.
|
||||
|
||||
- [ ] **Task 2.5: 팔로잉 I18n 문구 추가**
|
||||
- [x] **Task 2.5: 팔로잉 I18n 문구 추가**
|
||||
- 대상 파일:
|
||||
- 수정: `SodaLive/Sources/I18n/I18n.swift`
|
||||
- 작업 내용:
|
||||
@@ -467,3 +467,8 @@
|
||||
- 2026-06-30: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`의 탭 전환이 `TextTabBar` binding 기반임을 확인해 custom binding setter 방식으로 로그인 guard 계획을 세웠다.
|
||||
- 2026-06-30: `SodaLive/Sources/ContentView.swift`에서 `.followingList -> FollowCreatorView()`, `.chatRoom(id:) -> ChatRoomView(roomId:)` 라우팅을 확인했다.
|
||||
- 2026-06-30: `SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/CreatorCommunityAllView.swift`와 `AppState`의 pending community post 구조가 `creatorId`를 요구함을 확인해 `COMMUNITY_POST` tap 라우팅 제약을 계획에 명시했다.
|
||||
- 2026-06-30: Phase 1-2 구현을 진행해 `MainHomeView`의 팔로잉 탭 custom `Binding` guard, `MainView.handleFollowingTabSelection()`, 팔로잉 응답 모델/API/Repository/ViewModel, `I18n.HomeFollowing` 문구를 추가했다.
|
||||
- 2026-06-30: `rg "onSelectFollowingTab|Binding\(|selectedTab = \.following|setAppStep\(step: \.login\)|TextTabBar" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift`로 팔로잉 탭 guard 연결을 확인했다.
|
||||
- 2026-06-30: `rg "struct HomeFollowingTabResponse|struct ChatRoomListItemResponse|enum CreatorActivityType|struct FollowingNewsResponse|struct FollowingCreatorRankingNewsResponse|struct FollowingContentNewsResponse|struct FollowingContentRankingNewsResponse|struct FollowingCommunityPostNewsResponse|enum FollowingNewsType|unknown\(" SodaLive/Sources/V2/Main/Home/Following/Models/HomeFollowingTabResponse.swift`로 Phase 2 응답 모델과 unknown enum 처리를 확인했다.
|
||||
- 2026-06-30: `rg "enum MainHomeFollowingApi|getFollowing|/api/v2/home/following|Authorization|requestPlain|TargetType|final class MainHomeFollowingRepository|MoyaProvider<MainHomeFollowingApi>|AnyPublisher<Response, MoyaError>" SodaLive/Sources/V2/Main/Home/Following/Repository`로 API/Repository 패턴을 확인했다.
|
||||
- 2026-06-30: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`를 실행해 빌드 성공을 확인했다. 기존 프로젝트의 duplicate build file/run script warning은 남아 있으나 Phase 1-2 컴파일 오류는 없었다.
|
||||
|
||||
Reference in New Issue
Block a user