docs(home): 팔로잉 탭 계획을 조정한다
This commit is contained in:
@@ -207,9 +207,36 @@
|
|||||||
- 실행 명령: `rg "onTapFollowingAll|followingList|FollowCreatorView" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/App/AppStep.swift SodaLive/Sources/ContentView.swift`
|
- 실행 명령: `rg "onTapFollowingAll|followingList|FollowCreatorView" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/App/AppStep.swift SodaLive/Sources/ContentView.swift`
|
||||||
- 기대 결과: `전체` 버튼이 기존 `FollowCreatorView` 라우팅으로 연결된다.
|
- 기대 결과: `전체` 버튼이 기존 `FollowCreatorView` 라우팅으로 연결된다.
|
||||||
|
|
||||||
### Phase 4: On Air 섹션
|
### Phase 4: 팔로잉 탭 API 호출 연결과 데이터 상태 세팅
|
||||||
|
|
||||||
- [ ] **Task 4.1: On Air 섹션 생성**
|
- [ ] **Task 4.1: 팔로잉 탭 진입 시 API 호출 연결**
|
||||||
|
- 대상 파일:
|
||||||
|
- 수정: `SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift`
|
||||||
|
- 확인: `SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingViewModel.swift`
|
||||||
|
- 작업 내용:
|
||||||
|
- `MainHomeFollowingView`에 `@StateObject private var viewModel = MainHomeFollowingViewModel()`를 추가한다.
|
||||||
|
- 최초 `onAppear`에서 `viewModel.hasLoaded == false`일 때만 `viewModel.fetchFollowing()`을 호출한다.
|
||||||
|
- 이 단계에서는 새 섹션 UI를 추가하지 않고, 이미 존재하는 팔로잉 크리에이터 섹션에 `viewModel.response?.followingCreators ?? []`를 연결한다.
|
||||||
|
- API 성공 시 `MainHomeFollowingViewModel.response`에 `HomeFollowingTabResponse`가 세팅되는 흐름을 먼저 확보한다.
|
||||||
|
- `isLoginRequired`, `message`, `hasLoaded`, `isLoading` 상태는 ViewModel의 기존 세팅 흐름을 사용한다.
|
||||||
|
- 검증 기준:
|
||||||
|
- 실행 명령: `rg "StateObject private var viewModel = MainHomeFollowingViewModel|onAppear|hasLoaded|fetchFollowing|response\\?\\.followingCreators|isLoading|message|MainPlaceholderTabView" SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingViewModel.swift`
|
||||||
|
- 기대 결과: 팔로잉 탭 진입 시 ViewModel이 생성되고, 최초 진입에서 API 호출 후 응답 데이터가 기존 크리에이터 섹션에 전달되는 흐름이 확인된다.
|
||||||
|
|
||||||
|
- [ ] **Task 4.2: 팔로잉 API 호출 빌드 검증**
|
||||||
|
- 대상 파일:
|
||||||
|
- 확인: `SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift`
|
||||||
|
- 확인: `SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingViewModel.swift`
|
||||||
|
- 작업 내용:
|
||||||
|
- 추가 섹션 UI 구현 전에 API 호출 연결만으로 컴파일이 깨지지 않는지 확인한다.
|
||||||
|
- 로그인 guard가 유지되어 비로그인 상태에서는 팔로잉 탭 전환과 API 호출이 발생하지 않는지 코드 흐름을 확인한다.
|
||||||
|
- 검증 기준:
|
||||||
|
- 실행 명령: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
||||||
|
- 기대 결과: 빌드가 성공하고, `MainHomeView`의 팔로잉 탭 로그인 guard가 유지된다.
|
||||||
|
|
||||||
|
### Phase 5: On Air 섹션
|
||||||
|
|
||||||
|
- [ ] **Task 5.1: On Air 섹션 생성**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingLiveSection.swift`
|
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingLiveSection.swift`
|
||||||
- 작업 내용:
|
- 작업 내용:
|
||||||
@@ -223,9 +250,9 @@
|
|||||||
- 실행 명령: `rg "struct MainHomeFollowingLiveSection|onAirTitle|FollowingLiveResponse|startedAtUtc|DateParser|onTapLive|DownsampledKFImage|ScrollView\\(\\.horizontal" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingLiveSection.swift`
|
- 실행 명령: `rg "struct MainHomeFollowingLiveSection|onAirTitle|FollowingLiveResponse|startedAtUtc|DateParser|onTapLive|DownsampledKFImage|ScrollView\\(\\.horizontal" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingLiveSection.swift`
|
||||||
- 기대 결과: On Air 섹션의 데이터 표시와 live tap callback이 확인된다.
|
- 기대 결과: On Air 섹션의 데이터 표시와 live tap callback이 확인된다.
|
||||||
|
|
||||||
### Phase 5: 최근 대화 섹션
|
### Phase 6: 최근 대화 섹션
|
||||||
|
|
||||||
- [ ] **Task 5.1: 최근 대화 섹션 생성**
|
- [ ] **Task 6.1: 최근 대화 섹션 생성**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingChatSection.swift`
|
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingChatSection.swift`
|
||||||
- 확인: `SodaLive/Sources/Chat/Talk/TalkView.swift`
|
- 확인: `SodaLive/Sources/Chat/Talk/TalkView.swift`
|
||||||
@@ -241,7 +268,7 @@
|
|||||||
- 실행 명령: `rg "struct MainHomeFollowingChatSection|recentChatTitle|ChatRoomListItemResponse|targetImageUrl|targetName|lastMessage|lastMessageAt|onTapChatRoom" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingChatSection.swift`
|
- 실행 명령: `rg "struct MainHomeFollowingChatSection|recentChatTitle|ChatRoomListItemResponse|targetImageUrl|targetName|lastMessage|lastMessageAt|onTapChatRoom" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingChatSection.swift`
|
||||||
- 기대 결과: 최근 대화 item 필드와 채팅방 tap callback이 확인된다.
|
- 기대 결과: 최근 대화 item 필드와 채팅방 tap callback이 확인된다.
|
||||||
|
|
||||||
- [ ] **Task 5.2: 채팅방 진입 연결**
|
- [ ] **Task 6.2: 채팅방 진입 연결**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 수정: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
- 수정: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
||||||
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
||||||
@@ -255,9 +282,9 @@
|
|||||||
- 실행 명령: `rg "onTapChatRoom|chatRoom\\(id:|ChatRoomView" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/App/AppStep.swift SodaLive/Sources/ContentView.swift`
|
- 실행 명령: `rg "onTapChatRoom|chatRoom\\(id:|ChatRoomView" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/App/AppStep.swift SodaLive/Sources/ContentView.swift`
|
||||||
- 기대 결과: 최근 대화 item tap이 기존 채팅방 화면으로 연결된다.
|
- 기대 결과: 최근 대화 item tap이 기존 채팅방 화면으로 연결된다.
|
||||||
|
|
||||||
### Phase 6: 이달의 스케줄 섹션
|
### Phase 7: 이달의 스케줄 섹션
|
||||||
|
|
||||||
- [ ] **Task 6.1: 이달의 스케줄 섹션 생성**
|
- [ ] **Task 7.1: 이달의 스케줄 섹션 생성**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingScheduleSection.swift`
|
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingScheduleSection.swift`
|
||||||
- 작업 내용:
|
- 작업 내용:
|
||||||
@@ -273,7 +300,7 @@
|
|||||||
- 실행 명령: `rg "struct MainHomeFollowingScheduleSection|monthlyScheduleTitle|FollowingScheduleResponse|scheduledAtUtc|isOnAir|Color.soda400|CreatorActivityType|onTapSchedule|오늘" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingScheduleSection.swift`
|
- 실행 명령: `rg "struct MainHomeFollowingScheduleSection|monthlyScheduleTitle|FollowingScheduleResponse|scheduledAtUtc|isOnAir|Color.soda400|CreatorActivityType|onTapSchedule|오늘" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingScheduleSection.swift`
|
||||||
- 기대 결과: 스케줄 카드 표시, On Air 강조, schedule tap callback이 확인된다.
|
- 기대 결과: 스케줄 카드 표시, On Air 강조, schedule tap callback이 확인된다.
|
||||||
|
|
||||||
- [ ] **Task 6.2: 스케줄 상세 진입 연결**
|
- [ ] **Task 7.2: 스케줄 상세 진입 연결**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 수정: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
- 수정: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
||||||
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
||||||
@@ -286,9 +313,9 @@
|
|||||||
- 실행 명령: `rg "onTapFollowingSchedule|CreatorActivityType|contentDetail|creatorCommunityAll|enterLiveRoom" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift`
|
- 실행 명령: `rg "onTapFollowingSchedule|CreatorActivityType|contentDetail|creatorCommunityAll|enterLiveRoom" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift`
|
||||||
- 기대 결과: schedule type별 routing 분기가 확인된다.
|
- 기대 결과: schedule type별 routing 분기가 확인된다.
|
||||||
|
|
||||||
### Phase 7: 최근 소식 랭킹 카드
|
### Phase 8: 최근 소식 랭킹 카드
|
||||||
|
|
||||||
- [ ] **Task 7.1: 최근 소식 랭킹 카드 생성**
|
- [ ] **Task 8.1: 최근 소식 랭킹 카드 생성**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingRankingNewsCard.swift`
|
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingRankingNewsCard.swift`
|
||||||
- 작업 내용:
|
- 작업 내용:
|
||||||
@@ -302,9 +329,9 @@
|
|||||||
- 실행 명령: `rg "struct MainHomeFollowingRankingNewsCard|FollowingCreatorRankingNewsResponse|FollowingContentRankingNewsResponse|rank|Color.soda400|onTapCreator|onTapContent|24:5717" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingRankingNewsCard.swift`
|
- 실행 명령: `rg "struct MainHomeFollowingRankingNewsCard|FollowingCreatorRankingNewsResponse|FollowingContentRankingNewsResponse|rank|Color.soda400|onTapCreator|onTapContent|24:5717" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingRankingNewsCard.swift`
|
||||||
- 기대 결과: 랭킹 최근 소식 카드와 타입별 tap callback이 확인된다.
|
- 기대 결과: 랭킹 최근 소식 카드와 타입별 tap callback이 확인된다.
|
||||||
|
|
||||||
### Phase 8: 최근 소식 커뮤니티 카드
|
### Phase 9: 최근 소식 커뮤니티 카드
|
||||||
|
|
||||||
- [ ] **Task 8.1: 최근 소식 커뮤니티 카드 조립**
|
- [ ] **Task 9.1: 최근 소식 커뮤니티 카드 조립**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 생성 또는 수정: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingNewsSection.swift`
|
- 생성 또는 수정: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingNewsSection.swift`
|
||||||
- 확인: `SodaLive/Sources/V2/Component/Card/CommunityPostCard.swift`
|
- 확인: `SodaLive/Sources/V2/Component/Card/CommunityPostCard.swift`
|
||||||
@@ -317,7 +344,7 @@
|
|||||||
- 실행 명령: `rg "COMMUNITY_POST|communityPost|CommunityPostCard|postId|creatorProfileImage|likeCount|commentCount|audioUrl: nil|price: 0|existOrdered: true" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingNewsSection.swift`
|
- 실행 명령: `rg "COMMUNITY_POST|communityPost|CommunityPostCard|postId|creatorProfileImage|likeCount|commentCount|audioUrl: nil|price: 0|existOrdered: true" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingNewsSection.swift`
|
||||||
- 기대 결과: community post payload가 기존 community card 표시값으로 매핑된다.
|
- 기대 결과: community post payload가 기존 community card 표시값으로 매핑된다.
|
||||||
|
|
||||||
- [ ] **Task 8.2: 커뮤니티 게시글 tap 라우팅 제약 처리**
|
- [ ] **Task 9.2: 커뮤니티 게시글 tap 라우팅 제약 처리**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 확인: `SodaLive/Sources/App/AppState.swift`
|
- 확인: `SodaLive/Sources/App/AppState.swift`
|
||||||
- 확인: `SodaLive/Sources/App/AppStep.swift`
|
- 확인: `SodaLive/Sources/App/AppStep.swift`
|
||||||
@@ -332,9 +359,9 @@
|
|||||||
- 실행 명령: `rg "setPendingCommunityCommentDeepLink|consumePendingCommunityCommentPostId|creatorCommunityAll|case chatRoom|case creatorCommunity" SodaLive/Sources/App/AppState.swift SodaLive/Sources/App/AppStep.swift SodaLive/Sources/ContentView.swift SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/CreatorCommunityAllView.swift`
|
- 실행 명령: `rg "setPendingCommunityCommentDeepLink|consumePendingCommunityCommentPostId|creatorCommunityAll|case chatRoom|case creatorCommunity" SodaLive/Sources/App/AppState.swift SodaLive/Sources/App/AppStep.swift SodaLive/Sources/ContentView.swift SodaLive/Sources/Explorer/Profile/CreatorCommunity/All/CreatorCommunityAllView.swift`
|
||||||
- 기대 결과: 기존 커뮤니티 직접 진입 경로가 `creatorId`를 요구하는지 확인된다.
|
- 기대 결과: 기존 커뮤니티 직접 진입 경로가 `creatorId`를 요구하는지 확인된다.
|
||||||
|
|
||||||
### Phase 9: 최근 소식 오디오/화보 콘텐츠 카드
|
### Phase 10: 최근 소식 오디오/화보 콘텐츠 카드
|
||||||
|
|
||||||
- [ ] **Task 9.1: 최근 소식 콘텐츠 카드 생성**
|
- [ ] **Task 10.1: 최근 소식 콘텐츠 카드 생성**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingContentNewsCard.swift`
|
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingContentNewsCard.swift`
|
||||||
- 작업 내용:
|
- 작업 내용:
|
||||||
@@ -348,15 +375,14 @@
|
|||||||
- 실행 명령: `rg "struct MainHomeFollowingContentNewsCard|audioTag|photoTag|contentImageUrl|creatorProfileImageUrl|creatorNickname|visibleFromAtUtc|onTapContent|aspectRatio" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingContentNewsCard.swift`
|
- 실행 명령: `rg "struct MainHomeFollowingContentNewsCard|audioTag|photoTag|contentImageUrl|creatorProfileImageUrl|creatorNickname|visibleFromAtUtc|onTapContent|aspectRatio" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingContentNewsCard.swift`
|
||||||
- 기대 결과: 오디오/화보 variant와 콘텐츠 상세 callback이 확인된다.
|
- 기대 결과: 오디오/화보 variant와 콘텐츠 상세 callback이 확인된다.
|
||||||
|
|
||||||
### Phase 10: 화면 조립, empty/error 상태, 상세 진입 callback 연결
|
### Phase 11: 화면 조립, empty/error 상태, 상세 진입 callback 연결
|
||||||
|
|
||||||
- [ ] **Task 10.1: 팔로잉 탭 화면 조립**
|
- [ ] **Task 11.1: 팔로잉 탭 화면 조립**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 수정: `SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift`
|
- 수정: `SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift`
|
||||||
- 작업 내용:
|
- 작업 내용:
|
||||||
- placeholder를 제거한다.
|
- placeholder를 제거한다.
|
||||||
- `@StateObject private var viewModel = MainHomeFollowingViewModel()`를 사용한다.
|
- Phase 4에서 연결한 `MainHomeFollowingViewModel`과 최초 `fetchFollowing()` 호출 흐름은 유지한다.
|
||||||
- 최초 `onAppear`에서 `hasLoaded == false`일 때만 `fetchFollowing()`을 호출한다.
|
|
||||||
- loading, loginRequired, message, content 상태를 분기한다.
|
- loading, loginRequired, message, content 상태를 분기한다.
|
||||||
- content 상태에서는 PRD 순서대로 팔로잉 크리에이터, On Air, 최근 대화, 이달의 스케줄, 최근 소식을 조립한다.
|
- content 상태에서는 PRD 순서대로 팔로잉 크리에이터, On Air, 최근 대화, 이달의 스케줄, 최근 소식을 조립한다.
|
||||||
- 각 섹션 배열이 비어 있으면 해당 섹션을 렌더링하지 않는다.
|
- 각 섹션 배열이 비어 있으면 해당 섹션을 렌더링하지 않는다.
|
||||||
@@ -366,7 +392,7 @@
|
|||||||
- 실행 명령: `rg "MainHomeFollowingViewModel|fetchFollowing|MainHomeFollowingCreatorSection|MainHomeFollowingLiveSection|MainHomeFollowingChatSection|MainHomeFollowingScheduleSection|MainHomeFollowingNewsSection|MainHomeFollowingEmptyStateView|emptyStateMessage|loadFailedMessage|MainPlaceholderTabView" SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift`
|
- 실행 명령: `rg "MainHomeFollowingViewModel|fetchFollowing|MainHomeFollowingCreatorSection|MainHomeFollowingLiveSection|MainHomeFollowingChatSection|MainHomeFollowingScheduleSection|MainHomeFollowingNewsSection|MainHomeFollowingEmptyStateView|emptyStateMessage|loadFailedMessage|MainPlaceholderTabView" SodaLive/Sources/V2/Main/Home/Following/MainHomeFollowingView.swift`
|
||||||
- 기대 결과: `MainPlaceholderTabView`는 검색되지 않고, 팔로잉 화면 상태 분기와 섹션 조립이 확인된다.
|
- 기대 결과: `MainPlaceholderTabView`는 검색되지 않고, 팔로잉 화면 상태 분기와 섹션 조립이 확인된다.
|
||||||
|
|
||||||
- [ ] **Task 10.2: empty/login required view 생성**
|
- [ ] **Task 11.2: empty/login required view 생성**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingEmptyStateView.swift`
|
- 생성: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingEmptyStateView.swift`
|
||||||
- 작업 내용:
|
- 작업 내용:
|
||||||
@@ -377,7 +403,7 @@
|
|||||||
- 실행 명령: `rg "struct MainHomeFollowingEmptyStateView|message|loginButtonTitle|Button|Color.black|frame\\(maxWidth: \\.infinity" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingEmptyStateView.swift`
|
- 실행 명령: `rg "struct MainHomeFollowingEmptyStateView|message|loginButtonTitle|Button|Color.black|frame\\(maxWidth: \\.infinity" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingEmptyStateView.swift`
|
||||||
- 기대 결과: empty/API 실패/로그인 필요 상태 공용 안내 view가 확인된다.
|
- 기대 결과: empty/API 실패/로그인 필요 상태 공용 안내 view가 확인된다.
|
||||||
|
|
||||||
- [ ] **Task 10.3: 최근 소식 섹션 조립**
|
- [ ] **Task 11.3: 최근 소식 섹션 조립**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 생성 또는 수정: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingNewsSection.swift`
|
- 생성 또는 수정: `SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingNewsSection.swift`
|
||||||
- 작업 내용:
|
- 작업 내용:
|
||||||
@@ -393,7 +419,7 @@
|
|||||||
- 실행 명령: `rg "struct MainHomeFollowingNewsSection|recentNewsTitle|visibleFromAtUtc|creatorRanking|contentRanking|communityPost|audioContent|photoContent|unknown|MainHomeFollowingRankingNewsCard|MainHomeFollowingContentNewsCard|CommunityPostCard" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingNewsSection.swift`
|
- 실행 명령: `rg "struct MainHomeFollowingNewsSection|recentNewsTitle|visibleFromAtUtc|creatorRanking|contentRanking|communityPost|audioContent|photoContent|unknown|MainHomeFollowingRankingNewsCard|MainHomeFollowingContentNewsCard|CommunityPostCard" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingNewsSection.swift`
|
||||||
- 기대 결과: 최근 소식 타입별 payload 분기와 unknown 숨김 정책이 확인된다.
|
- 기대 결과: 최근 소식 타입별 payload 분기와 unknown 숨김 정책이 확인된다.
|
||||||
|
|
||||||
- [ ] **Task 10.4: 상세 진입 callback 연결**
|
- [ ] **Task 11.4: 상세 진입 callback 연결**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 수정: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
- 수정: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
||||||
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
- 수정: `SodaLive/Sources/V2/Main/MainView.swift`
|
||||||
@@ -404,14 +430,14 @@
|
|||||||
- content는 기존 `handleRecommendationContentTap`을 재사용한다.
|
- content는 기존 `handleRecommendationContentTap`을 재사용한다.
|
||||||
- chat room은 `.chatRoom(id:)`로 이동한다.
|
- chat room은 `.chatRoom(id:)`로 이동한다.
|
||||||
- following all은 `.followingList`로 이동한다.
|
- following all은 `.followingList`로 이동한다.
|
||||||
- community post는 Task 8.2 제약에 따라 postId 단독 route가 없으면 상세 진입을 연결하지 않는다.
|
- community post는 Task 9.2 제약에 따라 postId 단독 route가 없으면 상세 진입을 연결하지 않는다.
|
||||||
- 검증 기준:
|
- 검증 기준:
|
||||||
- 실행 명령: `rg "onTapFollowingAll|onTapChatRoom|onTapFollowingSchedule|handleRecommendationLiveTap|handleRecommendationCreatorTap|handleRecommendationContentTap|followingList|chatRoom\\(id:" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift`
|
- 실행 명령: `rg "onTapFollowingAll|onTapChatRoom|onTapFollowingSchedule|handleRecommendationLiveTap|handleRecommendationCreatorTap|handleRecommendationContentTap|followingList|chatRoom\\(id:" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift`
|
||||||
- 기대 결과: 팔로잉 탭의 상세 진입 callback이 기존 MainView guard/route에 연결된다.
|
- 기대 결과: 팔로잉 탭의 상세 진입 callback이 기존 MainView guard/route에 연결된다.
|
||||||
|
|
||||||
### Phase 11: 프로젝트 등록, 빌드, UI 검증
|
### Phase 12: 프로젝트 등록, 빌드, UI 검증
|
||||||
|
|
||||||
- [ ] **Task 11.1: Xcode 프로젝트 포함 여부 확인**
|
- [ ] **Task 12.1: Xcode 프로젝트 포함 여부 확인**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 확인: `SodaLive.xcodeproj/project.pbxproj`
|
- 확인: `SodaLive.xcodeproj/project.pbxproj`
|
||||||
- 확인: `SodaLive/Sources/V2/Main/Home/Following/**`
|
- 확인: `SodaLive/Sources/V2/Main/Home/Following/**`
|
||||||
@@ -422,7 +448,7 @@
|
|||||||
- 실행 명령: `rg "HomeFollowingTabResponse|MainHomeFollowingApi|MainHomeFollowingRepository|MainHomeFollowingViewModel|MainHomeFollowingCreatorSection|MainHomeFollowingNewsSection|MainHomeFollowingEmptyStateView" SodaLive.xcodeproj/project.pbxproj SodaLive/Sources/V2/Main/Home/Following`
|
- 실행 명령: `rg "HomeFollowingTabResponse|MainHomeFollowingApi|MainHomeFollowingRepository|MainHomeFollowingViewModel|MainHomeFollowingCreatorSection|MainHomeFollowingNewsSection|MainHomeFollowingEmptyStateView" SodaLive.xcodeproj/project.pbxproj SodaLive/Sources/V2/Main/Home/Following`
|
||||||
- 기대 결과: 신규 파일 참조와 소스 파일이 확인된다.
|
- 기대 결과: 신규 파일 참조와 소스 파일이 확인된다.
|
||||||
|
|
||||||
- [ ] **Task 11.2: 정적 검색 검증**
|
- [ ] **Task 12.2: 정적 검색 검증**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 확인: `SodaLive/Sources/V2/Main/Home/Following/**`
|
- 확인: `SodaLive/Sources/V2/Main/Home/Following/**`
|
||||||
- 확인: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
- 확인: `SodaLive/Sources/V2/Main/Home/MainHomeView.swift`
|
||||||
@@ -436,7 +462,7 @@
|
|||||||
- 실행 명령: `rg "/api/v2/home/following|HomeFollowingTabResponse|ChatRoomListItemResponse|CreatorActivityType|FollowingNewsType|visibleFromAtUtc|팔로잉 소식이 아직 없어요|팔로잉 정보를 불러오지 못했습니다|Color.soda400|followingList|chatRoom\\(id:" SodaLive/Sources/V2/Main/Home/Following SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/I18n/I18n.swift`
|
- 실행 명령: `rg "/api/v2/home/following|HomeFollowingTabResponse|ChatRoomListItemResponse|CreatorActivityType|FollowingNewsType|visibleFromAtUtc|팔로잉 소식이 아직 없어요|팔로잉 정보를 불러오지 못했습니다|Color.soda400|followingList|chatRoom\\(id:" SodaLive/Sources/V2/Main/Home/Following SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/I18n/I18n.swift`
|
||||||
- 기대 결과: API, 모델, 문구, 라우팅, 색상 요구사항이 확인된다.
|
- 기대 결과: API, 모델, 문구, 라우팅, 색상 요구사항이 확인된다.
|
||||||
|
|
||||||
- [ ] **Task 11.3: 빌드 검증**
|
- [ ] **Task 12.3: 빌드 검증**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 확인: `SodaLive.xcworkspace`
|
- 확인: `SodaLive.xcworkspace`
|
||||||
- 작업 내용:
|
- 작업 내용:
|
||||||
@@ -445,7 +471,7 @@
|
|||||||
- 실행 명령: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
- 실행 명령: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
||||||
- 기대 결과: 빌드가 성공한다.
|
- 기대 결과: 빌드가 성공한다.
|
||||||
|
|
||||||
- [ ] **Task 11.4: 수동 UI 검증**
|
- [ ] **Task 12.4: 수동 UI 검증**
|
||||||
- 대상 파일:
|
- 대상 파일:
|
||||||
- 확인: `SodaLive/Sources/V2/Main/Home/Following/**`
|
- 확인: `SodaLive/Sources/V2/Main/Home/Following/**`
|
||||||
- 확인: Figma `24:5682`
|
- 확인: Figma `24:5682`
|
||||||
@@ -476,3 +502,4 @@
|
|||||||
- 2026-06-30: `rg "struct MainHomeFollowingCreatorSection|ScrollView\(\.horizontal|followingCreators|onTapCreator|onTapAll|allButtonTitle|Color\.soda400|padding\(\.horizontal, 16\)" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingCreatorSection.swift`로 팔로잉 크리에이터 섹션 요구사항을 확인했다.
|
- 2026-06-30: `rg "struct MainHomeFollowingCreatorSection|ScrollView\(\.horizontal|followingCreators|onTapCreator|onTapAll|allButtonTitle|Color\.soda400|padding\(\.horizontal, 16\)" SodaLive/Sources/V2/Main/Home/Following/Components/MainHomeFollowingCreatorSection.swift`로 팔로잉 크리에이터 섹션 요구사항을 확인했다.
|
||||||
- 2026-06-30: `rg "onTapFollowingAll|followingList|FollowCreatorView" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/App/AppStep.swift SodaLive/Sources/ContentView.swift`로 `전체` 버튼 라우팅 연결을 확인했다.
|
- 2026-06-30: `rg "onTapFollowingAll|followingList|FollowCreatorView" SodaLive/Sources/V2/Main/Home/MainHomeView.swift SodaLive/Sources/V2/Main/MainView.swift SodaLive/Sources/App/AppStep.swift SodaLive/Sources/ContentView.swift`로 `전체` 버튼 라우팅 연결을 확인했다.
|
||||||
- 2026-06-30: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`를 재실행해 Phase 3 신규 Swift 파일 target 등록과 컴파일 성공을 확인했다.
|
- 2026-06-30: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`를 재실행해 Phase 3 신규 Swift 파일 target 등록과 컴파일 성공을 확인했다.
|
||||||
|
- 2026-07-01: 완료된 Phase 3은 유지하고, Phase 4를 팔로잉 탭 API 호출 연결과 데이터 상태 세팅 단계로 변경했다. 이후 섹션 UI 작업은 Phase 5부터 순차 진행하도록 Phase/Task 번호를 재정렬했다.
|
||||||
|
|||||||
Reference in New Issue
Block a user