docs(creator): 최종 검증 기록을 갱신한다
This commit is contained in:
@@ -15,8 +15,8 @@
|
||||
- API, Response model, Repository, ViewModel을 먼저 구현한 뒤 UI phase를 진행한다.
|
||||
- 크리에이터 채널 진입점은 `CreatorChannelView`로 두고, 최초 선택 tab은 `.home`으로 둔다.
|
||||
- `CreatorChannelView`는 title bar, 크리에이터 프로필 header, tab-bar, 선택된 tab 상태, 홈 API 호출 상태를 소유한다.
|
||||
- `CreatorChannelHomeView`는 tab-bar 아래 홈 탭 콘텐츠만 렌더링한다.
|
||||
- 홈 API 응답의 `creator` 정보는 공통 shell의 header/title/follow/notification 상태와 홈 탭의 대화하기 action 상태가 공유한다.
|
||||
- `CreatorChannelHomeView`는 tab-bar 아래 홈 탭 콘텐츠만 렌더링하며, 대화하기 action은 최신 코드 기준처럼 `CreatorChannelHeaderSection` 내부에서 렌더링한다.
|
||||
- 홈 API 응답의 `creator` 정보는 공통 shell의 header/title/follow/notification/대화하기 action 상태가 공유한다.
|
||||
- 크리에이터 채널 공통 shell 구현은 `SodaLive/Sources/V2/CreatorChannel/**` 아래에 둔다.
|
||||
- 크리에이터 채널 홈 탭 내부에서만 쓰는 UI는 `SodaLive/Sources/V2/CreatorChannel/Home/Components/**` 아래에 둔다.
|
||||
- 크리에이터 채널 공통 shell 내부에서만 쓰는 UI는 `SodaLive/Sources/V2/CreatorChannel/Components/**` 아래에 둔다.
|
||||
@@ -28,7 +28,7 @@
|
||||
- `화보` 탭, 화보 섹션, 활동의 화보 row는 구현하지 않는다.
|
||||
- DM 버튼과 DM 진입은 구현하지 않는다.
|
||||
- Figma localhost asset URL은 앱 코드에 사용하지 않는다.
|
||||
- title bar 아이콘은 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_fill` asset을 사용한다.
|
||||
- title bar 아이콘은 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_colored` asset을 사용한다.
|
||||
- SNS 아이콘은 `ic_sns_instagram`, `ic_sns_youtube`, `ic_sns_x`, `ic_sns_kakao`, `ic_sns_fancimm` asset을 사용한다.
|
||||
- 기존 `AppStep.creatorDetail(userId:)` 진입은 새 크리에이터 채널 화면으로 연결한다.
|
||||
|
||||
@@ -222,9 +222,9 @@
|
||||
- 기존 `CreatorChannelHomeViewModel`의 홈 API 호출/공통 상태 책임은 `CreatorChannelViewModel`로 이동하고, 남는 책임이 없으면 파일을 제거한다.
|
||||
- title bar의 팔로우/팔로우 취소/알림 설정/알림 설정 취소는 기존 `UserProfile` 현재 UI 흐름과 동일하게 `UserRepository.creatorFollow(creatorId:follow:notify:)`를 사용한다.
|
||||
- 팔로우는 `creatorFollow(follow: true, notify: true)`, 팔로우 취소는 `creatorFollow(follow: false, notify: false)`로 호출한다.
|
||||
- `ic_bar_bell` 터치 시 `creatorFollow(follow: true, notify: true)`, `ic_bar_bell_fill` 터치 시 `creatorFollow(follow: true, notify: false)`로 호출한다.
|
||||
- `ic_bar_bell` 터치 시 `creatorFollow(follow: true, notify: true)`, `ic_bar_bell_colored` 터치 시 `creatorFollow(follow: true, notify: false)`로 호출한다.
|
||||
- `CreatorChannelHomeTab`은 `CreatorChannelTab`으로 이름을 바꾸고 공통 shell 경로로 이동한다.
|
||||
- `CreatorChannelHomeView`는 `CreatorChannelHomeResponse`와 tab 전환 closure를 주입받아 tab-bar 아래 홈 탭 콘텐츠만 렌더링한다.
|
||||
- `CreatorChannelHomeView`는 `CreatorChannelHomeResponse`와 tab 전환 closure를 주입받아 tab-bar 아래 홈 탭 콘텐츠만 렌더링하고, 대화하기 action은 `CreatorChannelHeaderSection`에 유지한다.
|
||||
- API 실패 placeholder 상태에서는 `CreatorChannelView`가 서버 데이터 없이 가능한 title bar, tab-bar, 선택된 tab placeholder를 유지한다.
|
||||
- 검증 기준:
|
||||
- 실행 명령: `rg "struct CreatorChannelView|final class CreatorChannelViewModel|enum CreatorChannelTab|CreatorChannelView\\(creatorId: userId\\)|CreatorChannelHomeView\\(|selectedTab|fetchHome\\(creatorId:|creatorFollow\\(.*follow: true, notify: true|creatorFollow\\(.*follow: false, notify: false|creatorFollow\\(.*follow: true, notify: false" SodaLive/Sources/V2/CreatorChannel SodaLive/Sources/ContentView.swift`
|
||||
@@ -243,18 +243,18 @@
|
||||
- `isFollow == false`이면 `팔로우` capsule을 표시한다.
|
||||
- `isFollow == false` 상태의 follow capsule에는 `ic_new_follow` asset을 사용한다.
|
||||
- `isFollow == true` 상태의 following capsule에는 `ic_new_following` asset을 사용한다.
|
||||
- `isFollow == true && isNotify == true`이면 팔로잉 상태 capsule과 알림 설정 아이콘 `ic_bar_bell_fill`을 표시한다.
|
||||
- `isFollow == true && isNotify == true`이면 팔로잉 상태 capsule과 알림 설정 아이콘 `ic_bar_bell_colored`를 표시한다.
|
||||
- `isFollow == true && isNotify == false`이면 팔로잉 상태 capsule과 알림 해제 아이콘 `ic_bar_bell`을 표시한다.
|
||||
- `ic_new_follow` 터치 시 부모의 팔로우 action으로 `creatorFollow(follow: true, notify: true)`가 호출되도록 연결한다.
|
||||
- `ic_new_following` 터치 시 부모의 팔로우 취소 action으로 `creatorFollow(follow: false, notify: false)`가 호출되도록 연결한다.
|
||||
- `ic_bar_bell` 터치 시 부모의 알림 설정 action으로 `creatorFollow(follow: true, notify: true)`가 호출되도록 연결한다.
|
||||
- `ic_bar_bell_fill` 터치 시 부모의 알림 설정 취소 action으로 `creatorFollow(follow: true, notify: false)`가 호출되도록 연결한다.
|
||||
- `ic_bar_bell_colored` 터치 시 부모의 알림 설정 취소 action으로 `creatorFollow(follow: true, notify: false)`가 호출되도록 연결한다.
|
||||
- 더보기 버튼은 항상 표시한다.
|
||||
- 배경 opacity는 외부에서 전달받는 `backgroundProgress`로 제어한다.
|
||||
- 구현 기준은 Figma `296:14287`, `296:14288`, `296:14289` 3개 title bar 상태를 따른다.
|
||||
- title bar 아이콘은 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_fill` 외 다른 asset으로 대체하지 않는다.
|
||||
- title bar 아이콘은 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_colored` 외 다른 asset으로 대체하지 않는다.
|
||||
- 검증 기준:
|
||||
- 실행 명령: `rg "struct CreatorChannelTitleBar|isFollow|isNotify|backgroundProgress|onTapBack|onTapFollow|onTapUnfollow|onTapNotify|onTapUnnotify|onTapMore|ic_new_bar_back|ic_new_follow|ic_new_following|ic_new_more|ic_bar_bell|ic_bar_bell_fill|팔로우" SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelTitleBar.swift`
|
||||
- 실행 명령: `rg "struct CreatorChannelTitleBar|isFollow|isNotify|backgroundProgress|onTapBack|onTapFollow|onTapUnfollow|onTapNotify|onTapUnnotify|onTapMore|ic_new_bar_back|ic_new_follow|ic_new_following|ic_new_more|ic_bar_bell|ic_bar_bell_colored|팔로우" SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelTitleBar.swift`
|
||||
- 기대 결과: Figma 3개 title bar 상태를 표현하는 조건 분기, 지정된 6개 icon asset 사용, 팔로우/팔로우 취소/알림 설정/알림 설정 취소 tap closure가 확인된다.
|
||||
|
||||
- [x] **Task 3.2: 크리에이터 이미지/프로필 헤더 생성**
|
||||
@@ -551,7 +551,7 @@
|
||||
- 버튼은 영역 중앙에 배치한다.
|
||||
- 버튼이 없어도 영역 높이와 vertical spacing을 유지한다.
|
||||
- `isDmAvailable`과 `ic_new_dm`은 이번 UI에 사용하지 않는다.
|
||||
- 버튼 tap은 부모에서 주입받은 `onTapTalk` closure로 전달한다.
|
||||
- 버튼 tap은 `CreatorChannelHeaderSection`이 부모에서 주입받은 `onTapTalk` closure로 전달한다.
|
||||
- 검증 기준:
|
||||
- 실행 명령: `rg "struct CreatorChannelTalkActionSection|isAiChatAvailable|ic_new_talk|ic_new_dm|frame\\(height|onTapTalk" SodaLive/Sources/V2/CreatorChannel/Home/Components/CreatorChannelTalkActionSection.swift`
|
||||
- 기대 결과: 대화하기만 조건부 표시되고 DM 버튼 구현이 없다.
|
||||
@@ -561,13 +561,13 @@
|
||||
- 수정: `SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift`
|
||||
- 수정: `SodaLive/Sources/V2/CreatorChannel/CreatorChannelViewModel.swift`
|
||||
- 수정: `SodaLive/Sources/V2/CreatorChannel/Home/Repository/CreatorChannelHomeRepository.swift`
|
||||
- 수정: `SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeView.swift`
|
||||
- 수정: `SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelHeaderSection.swift`
|
||||
- 확인: `SodaLive/Sources/Chat/Character/Detail/CharacterDetailView.swift`
|
||||
- 확인: `SodaLive/Sources/Chat/Character/Detail/CharacterDetailViewModel.swift`
|
||||
- 확인: `SodaLive/Sources/Chat/ChatTabView.swift`
|
||||
- 확인: `SodaLive/Sources/App/AppStep.swift`
|
||||
- 작업 내용:
|
||||
- `CreatorChannelView`가 `CreatorChannelHomeView`에 `onTapTalk` closure를 주입한다.
|
||||
- `CreatorChannelView`가 `CreatorChannelHeaderSection`에 `onTapTalk` closure를 주입한다.
|
||||
- token이 없으면 `.login`으로 이동한다.
|
||||
- 국가 코드를 trim/uppercase 처리하고, 비어 있거나 `KR`이면 한국으로 취급한다.
|
||||
- 한국 사용자는 `auth == false`일 때 기존 본인인증 confirm/fullScreenCover 흐름을 재사용하거나 같은 조건으로 연결한다.
|
||||
@@ -575,14 +575,14 @@
|
||||
- 본인인증과 콘텐츠 보기 설정 guard를 통과하면 `creator.characterId`로 `TalkApi.createChatRoom`을 호출하고, 성공 응답의 `chatRoomId`로 `.chatRoom(id:)`에 바로 진입한다.
|
||||
- 본인인증 완료 후 실행되는 `pendingAction`도 `.characterDetail(characterId:)`가 아니라 같은 채팅방 생성 후 `.chatRoom(id:)` 진입 helper를 사용한다.
|
||||
- 검증 기준:
|
||||
- 실행 명령: `rg "onTapTalk|countryCode|uppercased\\(\\)|isKoreanCountry|auth == false|isShowAuthConfirmView|createChatRoom|chatRoom\\(id:|setAppStep\\(step: \\.login\\)" SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift SodaLive/Sources/V2/CreatorChannel/CreatorChannelViewModel.swift SodaLive/Sources/V2/CreatorChannel/Home/Repository/CreatorChannelHomeRepository.swift SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeView.swift`
|
||||
- 실행 명령: `rg "onTapTalk|countryCode|uppercased\\(\\)|isKoreanCountry|auth == false|isShowAuthConfirmView|createChatRoom|chatRoom\\(id:|setAppStep\\(step: \\.login\\)" SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift SodaLive/Sources/V2/CreatorChannel/CreatorChannelViewModel.swift SodaLive/Sources/V2/CreatorChannel/Home/Repository/CreatorChannelHomeRepository.swift SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelHeaderSection.swift`
|
||||
- 기대 결과: 기존 AI 채팅 guard와 동일한 국가/본인인증 분기가 유지되고, guard 통과 후 캐릭터 상세가 아닌 채팅방으로 직접 이동한다.
|
||||
- 실행 명령: `rg "characterDetail\\(characterId: characterId\\)" SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift`
|
||||
- 기대 결과: 검색 결과가 없다.
|
||||
|
||||
### Phase 18: 최종 조립과 검증
|
||||
|
||||
- [ ] **Task 18.1: 홈 섹션 순서 조립**
|
||||
- [x] **Task 18.1: 홈 섹션 순서 조립**
|
||||
- 대상 파일:
|
||||
- 수정: `SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift`
|
||||
- 수정: `SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeView.swift`
|
||||
@@ -590,15 +590,16 @@
|
||||
- `CreatorChannelView`에서 공통 shell 순서를 PRD와 동일하게 조립한다.
|
||||
- 공통 shell 배치: 크리에이터 이미지 header를 먼저 배치하고, title bar는 header 위에 overlay로 띄우며, 그 아래 tab-bar와 선택된 tab content를 배치한다.
|
||||
- title bar 기본 배경은 투명이고 scroll progress에 따라 black으로 전환된다.
|
||||
- `CreatorChannelHomeView`에서 홈 탭 콘텐츠 순서를 PRD와 동일하게 조립한다.
|
||||
- 홈 탭 콘텐츠 순서: 대화하기, 현재 라이브, 최신 오디오, 채널 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS.
|
||||
- 대화하기 액션은 최신 코드 기준처럼 `CreatorChannelHeaderSection` 내부에 유지한다.
|
||||
- `CreatorChannelHomeView`에서 홈 탭 콘텐츠 순서를 최신 코드 기준과 동일하게 조립한다.
|
||||
- 홈 탭 콘텐츠 순서: 현재 라이브, 최신 오디오, 채널 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS.
|
||||
- 각 섹션은 자신의 데이터가 없으면 숨긴다.
|
||||
- API 실패 placeholder 상태에서는 데이터 기반 섹션을 표시하지 않는다.
|
||||
- 검증 기준:
|
||||
- 실행 명령: `rg -n "ZStack|overlay|Color\\.clear|backgroundProgress|CreatorChannelTitleBar|CreatorChannelHeaderSection|CreatorChannelTabBar|CreatorChannelHomeView|CreatorChannelTalkActionSection|CreatorChannelCurrentLiveSection|CreatorChannelLatestAudioSection|CreatorChannelDonationSection|CreatorChannelNoticeSection|CreatorChannelScheduleSection|CreatorChannelAudioSection|CreatorChannelSeriesSection|CreatorChannelCommunitySection|CreatorChannelFanTalkSection|CreatorChannelIntroduceSection|CreatorChannelActivitySection|CreatorChannelSnsSection" SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift SodaLive/Sources/V2/CreatorChannel/Home/CreatorChannelHomeView.swift`
|
||||
- 기대 결과: PRD의 공통 shell과 홈 탭 콘텐츠 순서대로 조립되어 있다.
|
||||
- 기대 결과: 최신 코드 기준의 공통 shell, header 대화하기 액션, 홈 탭 콘텐츠 순서대로 조립되어 있다.
|
||||
|
||||
- [ ] **Task 18.2: 프로젝트 파일 포함 여부 확인**
|
||||
- [x] **Task 18.2: 프로젝트 파일 포함 여부 확인**
|
||||
- 대상 파일:
|
||||
- 확인/필요 시 수정: `SodaLive.xcodeproj/project.pbxproj`
|
||||
- 작업 내용:
|
||||
@@ -609,7 +610,7 @@
|
||||
- 실행 명령: `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`
|
||||
- 기대 결과: 신규 파일 누락으로 인한 compile error가 없다.
|
||||
|
||||
- [ ] **Task 18.3: PRD 성공 기준 회귀 점검**
|
||||
- [x] **Task 18.3: PRD 성공 기준 회귀 점검**
|
||||
- 대상 파일:
|
||||
- 확인: `docs/20260701_크리에이터_채널_홈/prd.md`
|
||||
- 확인: `SodaLive/Sources/V2/CreatorChannel/**`
|
||||
@@ -619,10 +620,10 @@
|
||||
- `화보`, DM 버튼, API 실패 전체 error state가 구현에 들어가지 않았는지 검색한다.
|
||||
- `ic_sns_*`, `ic_new_talk`, title bar icon asset, 기존 `UserProfile` 기준 follow/notify mutation, title bar/header overlay, AI 채팅 guard가 구현에 포함됐는지 검색한다.
|
||||
- 검증 기준:
|
||||
- 실행 명령: `rg -n "화보|photo|ic_new_dm|DM|ic_new_talk|ic_sns_|ic_new_bar_back|ic_new_follow|ic_new_following|ic_new_more|ic_bar_bell|ic_bar_bell_fill|creatorFollow|follow: true, notify: true|follow: false, notify: false|follow: true, notify: false|onTapNotify|onTapUnnotify|ZStack|overlay|Color\\.clear|isApiFailedPlaceholderVisible|countryCode|auth == false" SodaLive/Sources/V2/CreatorChannel SodaLive/Sources/ContentView.swift`
|
||||
- 실행 명령: `rg -n "화보|photo|ic_new_dm|DM|ic_new_talk|ic_sns_|ic_new_bar_back|ic_new_follow|ic_new_following|ic_new_more|ic_bar_bell|ic_bar_bell_colored|creatorFollow|follow: true, notify: true|follow: false, notify: false|follow: true, notify: false|onTapNotify|onTapUnnotify|ZStack|overlay|Color\\.clear|isApiFailedPlaceholderVisible|countryCode|auth == false" SodaLive/Sources/V2/CreatorChannel SodaLive/Sources/ContentView.swift`
|
||||
- 기대 결과: 제외 범위는 UI 구현에 없고, 필수 요구사항 키워드는 확인된다.
|
||||
|
||||
- [ ] **Task 18.4: 빌드 검증**
|
||||
- [x] **Task 18.4: 빌드 검증**
|
||||
- 대상 파일:
|
||||
- 확인: `docs/agent-guides/build-test-verification.md`
|
||||
- 작업 내용:
|
||||
@@ -641,18 +642,19 @@
|
||||
- 2026-07-01: 사용자 요청에 따라 기존 Phase 4 `대화하기 액션 영역`을 Phase 17로 이동하고, 기존 Phase 5~17을 Phase 4~16으로 한 칸씩 당겼다.
|
||||
- 2026-07-01: Header, TitleBar, TabBar만으로 sticky 동작을 먼저 확인할 수 있도록 Phase 3에 `CreatorChannelHomeView_Previews` 기반 debug-only sticky scaffold 검증 task를 추가했다. 2026-07-02 구조 변경으로 실제 검증 대상은 `CreatorChannelView_Previews`로 갱신했다.
|
||||
- 2026-07-01: Phase 1~2 구현을 완료하고 `rg` 체크리스트 및 `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` 성공으로 신규 API/상태 모델, 라우팅, 기본 shell, I18n, 프로젝트 파일 포함을 검증했다.
|
||||
- 2026-07-02: 사용자 확인 사항을 반영해 title bar, 크리에이터 프로필 header, tab-bar를 `CreatorChannelView` 공통 shell로 분리하고, `CreatorChannelHomeView`는 tab-bar 아래 홈 탭 콘텐츠만 담당하도록 PRD와 계획을 갱신했다.
|
||||
- 2026-07-02: 사용자 확인 사항과 최신 코드 기준을 반영해 title bar, 크리에이터 프로필 header, tab-bar를 `CreatorChannelView` 공통 shell로 분리하고, `CreatorChannelHomeView`는 tab-bar 아래 홈 탭 콘텐츠만 담당하며 대화하기 action은 `CreatorChannelHeaderSection` 내부에 유지하도록 PRD와 계획을 갱신했다.
|
||||
- 2026-07-02: 이미 완료된 Phase 1~2 기록은 보존하고, 후속 구조 정리를 위해 Task 2.4 `공통 CreatorChannel shell로 구조 정리`를 추가했다.
|
||||
- 2026-07-02: 사용자 확인 사항을 반영해 title bar Figma URL 3종과 사용할 아이콘 asset(`ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_fill`)을 Task 3.1 및 최종 회귀 검색 기준에 추가했다.
|
||||
- 2026-07-02: 사용자 확인 사항과 최신 코드 기준을 반영해 title bar Figma URL 3종과 사용할 아이콘 asset(`ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_colored`)을 Task 3.1 및 최종 회귀 검색 기준에 추가했다.
|
||||
- 2026-07-03: Phase 5 현재 라이브 섹션을 구현했다. Figma `290:8950` 기준으로 LIVE pill, 시작 시간, 제목, 커버 이미지/placeholder, 유료 캔 배지, 성인 표시를 반영하고 `CreatorChannelHomeView`에 `currentLive` optional 기반으로 연결했다.
|
||||
- 2026-07-03: Phase 7 채널 후원 섹션을 구현했다. Figma `296:14908`, 후원 아이템 `567:17927` 기준으로 후원 금액별 상단 컬러(`1...50` `#E2E2E2`, `51...100` `#73EE01`, `101...500` `#00EAFF`, `501...` `#FF4C3C`), `ic_new_donation` 후원하기 버튼, `.donation` tab 전체보기 전환, Preview 금액 구간별 샘플을 반영했다. `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` 성공으로 신규 파일 target 포함과 컴파일을 검증했다.
|
||||
- 2026-07-03: 사용자 요청에 따라 Phase 7 후원하기 버튼을 기존 `LiveRoomDonationDialogView`/`ChannelDonationViewModel.postChannelDonation` 흐름으로 연결하고, 성공 시 `CreatorChannelViewModel.fetchHome(creatorId:)`로 현재 채널 홈 데이터를 다시 불러와 후원 섹션에 즉시 반영하도록 계획을 갱신했다. 후원 내역이 없는 경우 Figma `290:8820` 기준의 빈 후원 UI를 표시하도록 Task 7.1에 반영했다.
|
||||
- 2026-07-03: Phase 6 최신 오디오 콘텐츠 섹션을 구현했다. Figma `296:14898`, tag `567:18272`, `567:18274` 기준으로 88px 썸네일, 상단/하단 tag overlay, `New` label, 제목, 재생시간을 반영하고 `latestAudioContent` optional 기반 숨김 및 `AppStep.contentDetail(contentId:)` 상세 진입을 연결했다. `rg` 체크리스트와 `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` 성공으로 검증했다.
|
||||
- 2026-07-03: Phase 4를 완료해 `CreatorChannelView`에서 홈 탭은 `CreatorChannelHomeView`, 홈 외 탭은 `CreatorChannelPlaceholderTabView(title: selectedTab.title)`로 분기하고, 홈 섹션 전체보기용 tab 선택 closure가 `.audio`, `.series`, `.community`, `.fanTalk`, `.donation`으로 전환되도록 연결했다.
|
||||
- 2026-07-02: 기존 `UserProfile` 구현을 확인해 title bar 팔로우/팔로우 취소/알림 설정/알림 설정 취소를 `UserRepository.creatorFollow(creatorId:follow:notify:)`로 처리하고, `ic_bar_bell`/`ic_bar_bell_fill` 터치 시 각각 `notify: true`/`notify: false` 호출이 일어나도록 계획에 반영했다.
|
||||
- 2026-07-02: 기존 `UserProfile` 구현과 최신 코드 기준을 확인해 title bar 팔로우/팔로우 취소/알림 설정/알림 설정 취소를 `UserRepository.creatorFollow(creatorId:follow:notify:)`로 처리하고, `ic_bar_bell`/`ic_bar_bell_colored` 터치 시 각각 `notify: true`/`notify: false` 호출이 일어나도록 계획에 반영했다.
|
||||
- 2026-07-03: Task 3.4 구현을 완료했다. `CreatorChannelView`에서 geometry preference로 tab-bar 위치를 추적하고, sticky 기준을 디바이스 최상단이 아닌 title bar 하단(`safeAreaInsets.top + 56`)으로 계산하도록 변경했다. `rg "PreferenceKey|GeometryReader|ZStack|overlay|backgroundProgress|Color\\.clear|opacity|isTabBarSticky|clamp|safeAreaInsets|CreatorChannelTitleBar|CreatorChannelTabBar" ...` 기준 키워드를 확인했고, `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`가 `BUILD SUCCEEDED`로 완료됐다.
|
||||
- 2026-07-03: Task 3.5 구현을 완료했다. `CreatorChannelTitleBar`에 크리에이터 닉네임 주입값을 추가하고, `backgroundProgress`가 1일 때만 한 줄 말줄임으로 표시되도록 연결했다. 우측 팔로우/알림/더보기 영역은 `layoutPriority`로 우선 노출되도록 처리했다. `rg "nickname|lineLimit\\(1\\)|truncationMode|layoutPriority|backgroundProgress|opacity|CreatorChannelTitleBar\\(" ...` 기준 키워드를 확인했고, `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`가 `BUILD SUCCEEDED`로 완료됐다.
|
||||
- 2026-07-02: Task 3.2 구현을 완료하고 `CreatorChannelHeaderSection`을 공통 shell에 연결했다. `rg "struct CreatorChannelHeaderSection|CreatorChannelCreatorResponse|profileImageUrl|ignoresSafeArea\\(.*top|nickname|followerCount|DownsampledKFImage|KFImage" SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelHeaderSection.swift SodaLive/Sources/V2/CreatorChannel/CreatorChannelView.swift`와 `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` 성공으로 검증했다.
|
||||
- 2026-07-02: Task 3.1 title bar 컴포넌트를 `SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelTitleBar.swift`로 생성하고 `CreatorChannelView`의 inline title bar를 교체했다. `rg "struct CreatorChannelTitleBar|isFollow|isNotify|backgroundProgress|onTapBack|onTapFollow|onTapUnfollow|onTapNotify|onTapUnnotify|onTapMore|ic_new_bar_back|ic_new_follow|ic_new_following|ic_new_more|ic_bar_bell|ic_bar_bell_fill|팔로우" SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelTitleBar.swift`와 `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` 성공으로 검증했다.
|
||||
- 2026-07-02: Task 3.1 title bar 컴포넌트를 `SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelTitleBar.swift`로 생성하고 `CreatorChannelView`의 inline title bar를 교체했다. `rg "struct CreatorChannelTitleBar|isFollow|isNotify|backgroundProgress|onTapBack|onTapFollow|onTapUnfollow|onTapNotify|onTapUnnotify|onTapMore|ic_new_bar_back|ic_new_follow|ic_new_following|ic_new_more|ic_bar_bell|ic_bar_bell_colored|팔로우" SodaLive/Sources/V2/CreatorChannel/Components/CreatorChannelTitleBar.swift`와 `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build` 성공으로 검증했다.
|
||||
- 2026-07-02: 사용자 확인 사항을 반영해 HeaderView는 `CreatorChannelHomeResponse.creator` 데이터로 채우고, 별도 프로필 이미지 없이 큰 배경 이미지만 표시하며, title bar는 기본 투명 배경으로 header 위에 overlay되도록 Task 3.2/3.4/3.5와 최종 검증 기준을 갱신했다.
|
||||
- 2026-07-03: 사용자 요청에 따라 Task 17.2의 대화하기 액션을 캐릭터 상세 이동이 아니라 기존 Character Detail 하단 `대화하기`와 동일한 `TalkApi.createChatRoom` 호출 후 `.chatRoom(id:)` 직접 진입으로 변경했다. `CreatorChannelView`의 로그인/한국 본인인증/content settings guard는 유지했고, 본인인증 완료 후 `pendingAction`도 같은 `startChat(characterId:)` helper를 사용하도록 연결했다. `rg -n "characterDetail\\(characterId: characterId\\)|startChat\\(characterId:|createChatRoom\\(characterId:|chatRoom\\(id:" "SodaLive/Sources/V2/CreatorChannel"`와 ast-grep `AppState.shared.setAppStep(step: .characterDetail(characterId: $ID))` 검색으로 CreatorChannel 대화하기 경로에 캐릭터 상세 이동이 남지 않았음을 확인했다. 테스트는 `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test` 실행 결과 `Scheme SodaLive-dev is not currently configured for the test action.`으로 RED/GREEN 자동화가 불가했다. 빌드는 `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`가 `BUILD SUCCEEDED`로 완료됐다.
|
||||
- 2026-07-03: Phase 18 최종 조립과 검증을 완료했다. 최신 코드 기준에 맞춰 대화하기 액션은 `CreatorChannelHeaderSection` 내부에 유지하고, `CreatorChannelHomeView` 홈 콘텐츠 순서는 현재 라이브, 최신 오디오, 채널 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS 순서로 확인했다. title bar 알림 설정 asset은 최신 코드 기준인 `ic_bar_bell_colored`를 유지했다. `rg -n "ZStack|overlay|Color\\.clear|backgroundProgress|CreatorChannelTitleBar|CreatorChannelHeaderSection|CreatorChannelTabBar|CreatorChannelHomeView|CreatorChannelTalkActionSection|CreatorChannelCurrentLiveSection|CreatorChannelLatestAudioSection|CreatorChannelDonationSection|CreatorChannelNoticeSection|CreatorChannelScheduleSection|CreatorChannelAudioSection|CreatorChannelSeriesSection|CreatorChannelCommunitySection|CreatorChannelFanTalkSection|CreatorChannelIntroduceSection|CreatorChannelActivitySection|CreatorChannelSnsSection" ...`와 `rg -n "화보|photo|ic_new_dm|DM|ic_new_talk|ic_sns_|ic_new_bar_back|ic_new_follow|ic_new_following|ic_new_more|ic_bar_bell|ic_bar_bell_colored|creatorFollow|follow: true, notify: true|follow: false, notify: false|follow: true, notify: false|onTapNotify|onTapUnnotify|ZStack|overlay|Color\\.clear|isApiFailedPlaceholderVisible|countryCode|auth == false" ...`로 성공 기준을 회귀 점검했고, 신규 CreatorChannel Swift 파일은 `project.pbxproj`의 Sources phase에 포함되어 있음을 확인했다. `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`는 `BUILD SUCCEEDED`로 완료됐다.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# PRD: 크리에이터 채널 홈 탭
|
||||
|
||||
## 1. Overview
|
||||
크리에이터 채널 화면은 title bar, 크리에이터 프로필 header, tab-bar를 공통 shell로 유지하고, tab-bar 아래 콘텐츠만 선택된 탭에 따라 교체한다. 채널 최초 진입 시 기본 선택 탭은 `홈`이며, 홈 탭에서는 신규 API `GET /api/v2/creator-channels/{creatorId}/home` 응답을 사용해 현재 라이브, 최신 오디오 콘텐츠, 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS 정보를 표시한다.
|
||||
크리에이터 채널 화면은 title bar, 크리에이터 프로필 header, tab-bar를 공통 shell로 유지하고, tab-bar 아래 콘텐츠만 선택된 탭에 따라 교체한다. 채널 최초 진입 시 기본 선택 탭은 `홈`이며, 홈 탭에서는 신규 API `GET /api/v2/creator-channels/{creatorId}/home` 응답을 사용해 현재 라이브, 최신 오디오 콘텐츠, 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS 정보를 표시한다. 대화하기 액션은 최신 코드 기준처럼 크리에이터 프로필 header 내부에 표시한다.
|
||||
|
||||
API 연동을 먼저 구현하고, UI는 공통 shell과 홈 탭 콘텐츠를 분리한 뒤 API 응답 데이터를 기준으로 Figma 섹션 단위로 나누어 순차 구현한다.
|
||||
|
||||
@@ -11,21 +11,20 @@ Figma 전체 화면 기준 공통 shell은 아래를 따른다.
|
||||
2. 크리에이터 이미지/프로필 header
|
||||
3. tab-bar
|
||||
|
||||
Figma 전체 화면 기준 홈 탭 콘텐츠 순서는 아래를 따른다.
|
||||
최신 코드 기준 홈 탭 콘텐츠 순서는 아래를 따른다.
|
||||
|
||||
1. 대화하기 액션 영역
|
||||
2. 현재 라이브
|
||||
3. 최신 오디오 콘텐츠
|
||||
4. 채널 후원
|
||||
5. 공지
|
||||
6. 스케줄
|
||||
7. 오디오
|
||||
8. 시리즈
|
||||
9. 커뮤니티
|
||||
10. 팬Talk
|
||||
11. 소개
|
||||
12. 활동
|
||||
13. SNS
|
||||
1. 현재 라이브
|
||||
2. 최신 오디오 콘텐츠
|
||||
3. 채널 후원
|
||||
4. 공지
|
||||
5. 스케줄
|
||||
6. 오디오
|
||||
7. 시리즈
|
||||
8. 커뮤니티
|
||||
9. 팬Talk
|
||||
10. 소개
|
||||
11. 활동
|
||||
12. SNS
|
||||
|
||||
상단 tab-bar 항목은 `홈`, `라이브`, `오디오`, `시리즈`, `커뮤니티`, `팬Talk`, `후원`으로 구성한다. Figma에는 `화보` 탭과 활동 항목이 보이지만 이번 구현 범위에서는 제외한다.
|
||||
|
||||
@@ -42,7 +41,7 @@ Figma 전체 화면 기준 홈 탭 콘텐츠 순서는 아래를 따른다.
|
||||
- 신규 API, Repository, ViewModel, Response model은 `SodaLive/Sources/V2/**` 하위에 둔다.
|
||||
- API 구현을 UI보다 먼저 완료해 공통 shell과 홈 탭 섹션들이 동일한 response model을 사용하도록 한다.
|
||||
- `CreatorChannelView`는 title bar, header, tab-bar, 선택된 tab 상태, 홈 API 호출 상태를 소유한다.
|
||||
- `CreatorChannelHomeView`는 tab-bar 아래 홈 탭 콘텐츠만 렌더링한다.
|
||||
- `CreatorChannelHomeView`는 tab-bar 아래 홈 탭 콘텐츠만 렌더링하며, 대화하기 액션은 `CreatorChannelHeaderSection`에서 렌더링한다.
|
||||
- 홈 API 응답의 `creator` 정보는 공통 shell의 header/title/follow/notification/action 상태에 반영한다.
|
||||
- Figma 기준 섹션을 이후 `plan-task.md`에서 phase 단위로 나눌 수 있도록 요구사항을 분리한다.
|
||||
- 크리에이터 대표 이미지는 화면 최상단에서 OS status bar 영역까지 확장해 표시한다.
|
||||
@@ -169,16 +168,16 @@ Figma 참조:
|
||||
- `isFollow == false`이면 `팔로우` capsule 버튼을 표시한다.
|
||||
- `isFollow == false` 상태의 follow capsule에는 `ic_new_follow` asset을 사용한다.
|
||||
- `isFollow == true` 상태의 following capsule에는 `ic_new_following` asset을 사용한다.
|
||||
- `isFollow == true && isNotify == true`이면 following capsule과 알림 설정 아이콘 `ic_bar_bell_fill`을 표시한다.
|
||||
- `isFollow == true && isNotify == true`이면 following capsule과 알림 설정 아이콘 `ic_bar_bell_colored`를 표시한다.
|
||||
- `isFollow == true && isNotify == false`이면 following capsule과 알림 해제 아이콘 `ic_bar_bell`을 표시한다.
|
||||
- 더보기 버튼은 항상 표시한다.
|
||||
- 팔로우/팔로우 취소/알림 설정/알림 설정 취소 mutation은 기존 `UserProfile`에서 사용하는 `UserRepository.creatorFollow(creatorId:follow:notify:)` 흐름을 그대로 사용한다.
|
||||
- 팔로우 action은 `creatorFollow(follow: true, notify: true)`를 호출한다.
|
||||
- 팔로우 취소 action은 기존 `UserProfile`의 `CreatorFollowNotifyDialog.onClickUnFollow`와 동일하게 `creatorFollow(follow: false, notify: false)`를 호출한다.
|
||||
- `ic_bar_bell` 터치 시 알림 설정 action으로 `creatorFollow(follow: true, notify: true)`를 호출한다.
|
||||
- `ic_bar_bell_fill` 터치 시 알림 설정 취소 action으로 `creatorFollow(follow: true, notify: false)`를 호출한다.
|
||||
- `ic_bar_bell_colored` 터치 시 알림 설정 취소 action으로 `creatorFollow(follow: true, notify: false)`를 호출한다.
|
||||
- 알림 상태 변경용 신규 API는 만들지 않는다.
|
||||
- title bar에 사용하는 아이콘은 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_fill`로 고정하고, 다른 back/follow/more/bell asset으로 대체하지 않는다.
|
||||
- title bar에 사용하는 아이콘은 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_colored`로 고정하고, 다른 back/follow/more/bell asset으로 대체하지 않는다.
|
||||
|
||||
### 7.4 크리에이터 프로필 헤더
|
||||
|
||||
@@ -189,12 +188,13 @@ Figma 참조:
|
||||
- 큰 배경 이미지 영역은 OS status bar까지 확장되도록 top safe area를 무시한다.
|
||||
- `creator.nickname`, `creator.followerCount`를 Figma 위치와 계층에 맞게 표시한다.
|
||||
- `creator.characterId`가 있는 경우 캐릭터/AI 대화 연결 여부를 판단하는 데이터로 사용한다.
|
||||
- 대화하기 액션 영역은 최신 코드 기준처럼 `CreatorChannelHeaderSection` 내부에 속한다.
|
||||
- 이미지 로드 실패 시 기존 프로젝트의 이미지 placeholder 패턴을 따른다.
|
||||
- 텍스트가 길어도 이미지/버튼/탭 영역과 겹치지 않도록 한 줄 말줄임 또는 기존 nickname 표시 관례를 따른다.
|
||||
|
||||
### 7.5 대화하기 액션 영역
|
||||
|
||||
- 대화하기 액션 영역은 tab-bar 아래 홈 탭 콘텐츠에 속한다.
|
||||
- 대화하기 액션 영역은 최신 코드 기준처럼 크리에이터 프로필 header 내부에 속한다.
|
||||
- `creator.isAiChatAvailable == true`이면 대화하기 버튼을 표시한다.
|
||||
- 대화하기 아이콘은 `ic_new_talk` asset을 사용한다.
|
||||
- 대화하기 버튼은 영역 중앙에 배치한다.
|
||||
@@ -319,7 +319,7 @@ Figma 참조:
|
||||
- scroll progress에 따라 black으로 변하는 overlay title bar
|
||||
- 팔로우/알림 상태별 title bar
|
||||
- sticky horizontal tab-bar
|
||||
- 공통 shell 아래 홈 탭의 대화하기 액션 영역
|
||||
- 크리에이터 프로필 header 내부의 대화하기 액션 영역
|
||||
- 홈 탭의 섹션별 summary UI
|
||||
- 홈 외 탭의 placeholder page
|
||||
- 홈 섹션 전체보기 placeholder destination
|
||||
@@ -349,7 +349,7 @@ Figma 참조:
|
||||
- `SodaLive/Sources/V2/Component/SectionTitle.swift`, `AudioContentCard.swift`, `CommunityPostCard.swift`, `CapsuleTabBar.swift` 등 기존 V2 컴포넌트 재사용 가능성을 먼저 검토한다.
|
||||
- `CreatorActivityType`은 중복 선언하지 않고 기존 enum 재사용 또는 공용 위치 이동을 검토한다.
|
||||
- 신규 asset은 프로젝트 asset catalog에 이미 존재하는 `ic_new_talk`을 사용한다. `ic_new_dm`은 추후 DM 버튼 작업에서 사용한다.
|
||||
- title bar 아이콘은 프로젝트 asset catalog의 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_fill`을 사용한다.
|
||||
- title bar 아이콘은 프로젝트 asset catalog의 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_colored`를 사용한다.
|
||||
- 신규 문구가 다국어 대상이면 `SodaLive/Sources/I18n/I18n.swift`에 추가한다.
|
||||
- Figma에서 제공되는 localhost asset URL은 앱 코드에 넣지 않는다.
|
||||
- 프로젝트 설정 변경은 신규 파일이 Xcode project에 자동 포함되지 않는 구조일 때만 수행한다.
|
||||
@@ -370,15 +370,15 @@ Figma 참조:
|
||||
- sticky 상태에서 OS status bar 영역도 title bar와 동일한 black 배경으로 보인다.
|
||||
- `isFollow`, `isNotify` 조합에 따라 title bar의 팔로우/알림 상태가 Figma 3개 상태와 일치한다.
|
||||
- title bar 배경 opacity가 1일 때 크리에이터 닉네임이 한 줄 말줄임으로 표시되고, 긴 닉네임이어도 우측 팔로우/알림/더보기 영역이 우선 노출된다.
|
||||
- title bar는 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_fill` asset만 사용한다.
|
||||
- title bar는 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_colored` asset만 사용한다.
|
||||
- 팔로우/팔로우 취소/알림 설정/알림 설정 취소 action은 기존 `UserProfile`과 동일하게 `UserRepository.creatorFollow(creatorId:follow:notify:)`를 호출한다.
|
||||
- `ic_bar_bell` 터치 시 `creatorFollow(follow: true, notify: true)`, `ic_bar_bell_fill` 터치 시 `creatorFollow(follow: true, notify: false)`가 호출된다.
|
||||
- `ic_bar_bell` 터치 시 `creatorFollow(follow: true, notify: true)`, `ic_bar_bell_colored` 터치 시 `creatorFollow(follow: true, notify: false)`가 호출된다.
|
||||
- `isAiChatAvailable`에 따라 대화하기 버튼이 조건부 표시된다.
|
||||
- 대화하기 버튼은 기존 AI 채팅방 페이지로 이동하고, 기존 본인인증 guard와 비한국 국가 분기 guard를 적용한다.
|
||||
- 대화하기 버튼이 없어도 액션 영역 높이는 유지된다.
|
||||
- DM 버튼은 표시되지 않는다.
|
||||
- tab-bar 아래 콘텐츠는 선택된 tab에 따라 교체된다.
|
||||
- 홈 tab에는 대화하기, 현재 라이브, 최신 오디오 콘텐츠, 채널 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS 섹션이 API 데이터 기반으로 표시된다.
|
||||
- 홈 tab에는 현재 라이브, 최신 오디오 콘텐츠, 채널 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS 섹션이 API 데이터 기반으로 표시된다.
|
||||
- SNS 섹션은 `ic_sns_*` asset 아이콘과 유효한 SNS URL만 사용해 표시된다.
|
||||
- 데이터가 비어 있는 섹션은 표시되지 않는다.
|
||||
- `화보` 탭, 화보 섹션, 활동의 화보 row가 표시되지 않는다.
|
||||
@@ -399,7 +399,7 @@ Figma 참조:
|
||||
- 사용자 확인 사항을 반영해 `creator.profileImageUrl`을 헤더 큰 이미지로 사용, 빈 섹션 숨김, 기존 `UserProfile` follow/notify API 사용, 대화하기의 기존 AI 채팅방 및 본인인증 guard 적용, DM 버튼 추후 작업, 홈 외 탭 제목 placeholder, 팬Talk 전체보기의 팬Talk 탭 이동, Swift `Int` 통일 정책을 확정 요구사항으로 이동했다.
|
||||
- 사용자 확인 사항을 반영해 API 실패 시 placeholder 기반으로 일부 UI를 유지하고, SNS 섹션 아이콘은 `ic_sns_*` asset을 사용하도록 확정 요구사항으로 이동했다.
|
||||
- 저장소의 `ic_sns_fancimm`, `fancimmUrl`, `I18n.ProfileUpdate.fancimm`을 확인해 Figma의 Fansim 표기를 `Fancimm(팬심M)` 기준으로 정리했다.
|
||||
- 2026-07-02: 사용자 확인 사항을 반영해 title bar, 크리에이터 프로필 header, tab-bar를 `CreatorChannelView` 공통 shell로 두고, tab-bar 아래 홈 탭 콘텐츠만 `CreatorChannelHomeView`가 담당하도록 구조를 변경했다.
|
||||
- 2026-07-02: 사용자 확인 사항을 반영해 title bar Figma URL 3종과 사용할 아이콘 asset(`ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_fill`)을 확정 요구사항으로 추가했다.
|
||||
- 2026-07-02: 사용자 확인 사항과 최신 코드 기준을 반영해 title bar, 크리에이터 프로필 header, tab-bar를 `CreatorChannelView` 공통 shell로 두고, tab-bar 아래 홈 탭 콘텐츠는 `CreatorChannelHomeView`가 담당하며 대화하기 액션은 `CreatorChannelHeaderSection` 내부에 유지하도록 구조를 정리했다.
|
||||
- 2026-07-02: 사용자 확인 사항과 최신 코드 기준을 반영해 title bar Figma URL 3종과 사용할 아이콘 asset(`ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_colored`)을 확정 요구사항으로 추가했다.
|
||||
- 2026-07-02: 기존 `UserProfile` 동작을 확인해 title bar의 팔로우/팔로우 취소/알림 설정/알림 설정 취소를 `UserRepository.creatorFollow(creatorId:follow:notify:)`로 처리하도록 확정했다.
|
||||
- 2026-07-02: 사용자 확인 사항을 반영해 HeaderView는 `CreatorChannelHomeResponse.creator` 데이터로 채우고, 별도 프로필 이미지 없이 큰 배경 이미지만 표시하며, title bar는 기본 투명 배경으로 header 위에 overlay되도록 요구사항을 정리했다.
|
||||
|
||||
Reference in New Issue
Block a user