docs(creator): 채널 홈 공통 셸 계획을 갱신한다
This commit is contained in:
@@ -1,41 +1,49 @@
|
||||
# PRD: 크리에이터 채널 홈
|
||||
# PRD: 크리에이터 채널 홈 탭
|
||||
|
||||
## 1. Overview
|
||||
크리에이터 채널 홈 화면에서 신규 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 정보를 표시한다.
|
||||
|
||||
API 연동을 먼저 구현하고, UI는 API 응답 데이터를 기준으로 Figma 섹션 단위로 나누어 순차 구현한다.
|
||||
API 연동을 먼저 구현하고, UI는 공통 shell과 홈 탭 콘텐츠를 분리한 뒤 API 응답 데이터를 기준으로 Figma 섹션 단위로 나누어 순차 구현한다.
|
||||
|
||||
Figma 전체 화면 기준 홈 탭 섹션 순서는 아래를 따른다.
|
||||
Figma 전체 화면 기준 공통 shell은 아래를 따른다.
|
||||
|
||||
1. 크리에이터 이미지/프로필 헤더
|
||||
2. 대화하기 액션 영역
|
||||
3. 현재 라이브
|
||||
4. 최신 오디오 콘텐츠
|
||||
5. 채널 후원
|
||||
6. 공지
|
||||
7. 스케줄
|
||||
8. 오디오
|
||||
9. 시리즈
|
||||
10. 커뮤니티
|
||||
11. 팬Talk
|
||||
12. 소개
|
||||
13. 활동
|
||||
14. SNS
|
||||
1. title bar
|
||||
2. 크리에이터 이미지/프로필 header
|
||||
3. tab-bar
|
||||
|
||||
Figma 전체 화면 기준 홈 탭 콘텐츠 순서는 아래를 따른다.
|
||||
|
||||
1. 대화하기 액션 영역
|
||||
2. 현재 라이브
|
||||
3. 최신 오디오 콘텐츠
|
||||
4. 채널 후원
|
||||
5. 공지
|
||||
6. 스케줄
|
||||
7. 오디오
|
||||
8. 시리즈
|
||||
9. 커뮤니티
|
||||
10. 팬Talk
|
||||
11. 소개
|
||||
12. 활동
|
||||
13. SNS
|
||||
|
||||
상단 tab-bar 항목은 `홈`, `라이브`, `오디오`, `시리즈`, `커뮤니티`, `팬Talk`, `후원`으로 구성한다. Figma에는 `화보` 탭과 활동 항목이 보이지만 이번 구현 범위에서는 제외한다.
|
||||
|
||||
## 2. Problem
|
||||
- 기존 크리에이터 상세/채널 화면은 신규 `creator-channels` 홈 API 응답 구조와 Figma의 채널 홈 구성을 그대로 반영하지 못한다.
|
||||
- 홈 화면은 여러 도메인 데이터를 한 endpoint에서 받지만, 각 섹션의 UI와 전체보기 진입 대상이 달라 한 파일에 직접 구현하면 유지보수와 검증이 어려워진다.
|
||||
- 홈 API는 크리에이터 프로필과 여러 도메인 데이터를 한 endpoint에서 받지만, 크리에이터 프로필은 채널 공통 shell에 쓰이고 나머지 섹션은 홈 탭 콘텐츠에 쓰인다. 이를 한 View에 직접 구현하면 이후 탭별 화면 확장 시 유지보수와 검증이 어려워진다.
|
||||
- 크리에이터 이미지 영역이 OS status bar 영역까지 확장되고, scroll 위치에 따라 title bar/tab-bar/status bar 상태가 함께 변해야 하므로 일반적인 정적 navigation bar로 처리하기 어렵다.
|
||||
- tab-bar는 title bar와 붙는 순간 sticky 상태가 되어야 하고, sticky 이후에는 아래 콘텐츠만 스크롤되어야 한다.
|
||||
- `isAiChatAvailable` 값에 따라 대화하기 버튼 노출이 달라지지만, 버튼이 없어도 액션 영역 높이는 유지해야 한다.
|
||||
- 선택된 tab 및 홈 섹션의 `전체보기` 진입 화면은 전체 기능 구현 전에도 placeholder destination이 필요하다.
|
||||
|
||||
## 3. Goals
|
||||
- `creatorId`로 `GET /api/v2/creator-channels/{creatorId}/home`을 호출하고 응답 데이터로 홈 화면을 구성한다.
|
||||
- `creatorId`로 `GET /api/v2/creator-channels/{creatorId}/home`을 호출하고 응답 데이터로 크리에이터 채널 공통 shell과 홈 탭 콘텐츠를 구성한다.
|
||||
- 신규 API, Repository, ViewModel, Response model은 `SodaLive/Sources/V2/**` 하위에 둔다.
|
||||
- API 구현을 UI보다 먼저 완료해 홈 섹션들이 동일한 response model을 사용하도록 한다.
|
||||
- API 구현을 UI보다 먼저 완료해 공통 shell과 홈 탭 섹션들이 동일한 response model을 사용하도록 한다.
|
||||
- `CreatorChannelView`는 title bar, header, tab-bar, 선택된 tab 상태, 홈 API 호출 상태를 소유한다.
|
||||
- `CreatorChannelHomeView`는 tab-bar 아래 홈 탭 콘텐츠만 렌더링한다.
|
||||
- 홈 API 응답의 `creator` 정보는 공통 shell의 header/title/follow/notification/action 상태에 반영한다.
|
||||
- Figma 기준 섹션을 이후 `plan-task.md`에서 phase 단위로 나눌 수 있도록 요구사항을 분리한다.
|
||||
- 크리에이터 대표 이미지는 화면 최상단에서 OS status bar 영역까지 확장해 표시한다.
|
||||
- scroll 진행도에 따라 title bar 배경색을 점진적으로 black에 가깝게 변경한다.
|
||||
@@ -128,7 +136,8 @@ struct CreatorChannelHomeResponse: Decodable {
|
||||
- 최초 진입 시 홈 API를 호출한다.
|
||||
- 로딩 중에는 기존 V2 화면 패턴에 맞는 loading state를 표시한다.
|
||||
- API 실패 시에는 전체 화면 error state로 전환하지 않고 placeholder 기반으로 일부 UI를 유지한다.
|
||||
- API 실패 placeholder는 title bar, tab-bar, 홈 외 tab placeholder destination처럼 서버 데이터 없이 표시 가능한 기본 shell을 유지하는 방식으로 처리한다.
|
||||
- API 실패 placeholder는 title bar, tab-bar, 홈 외 tab placeholder destination처럼 서버 데이터 없이 표시 가능한 공통 shell을 유지하는 방식으로 처리한다.
|
||||
- 선택된 tab 상태와 홈 API 호출 상태는 공통 shell의 ViewModel에서 관리한다.
|
||||
- 응답을 성공적으로 받은 뒤 각 섹션은 자신의 데이터가 비어 있으면 section title과 empty state를 표시하지 않고 섹션 전체를 숨긴다.
|
||||
- 동일 화면 생명주기 안에서 불필요한 중복 호출은 피한다.
|
||||
- pull-to-refresh가 기존 크리에이터 상세 화면에 있다면 같은 패턴을 검토한다. 기존 패턴이 없으면 이번 범위에서 새로 추가하지 않는다.
|
||||
@@ -137,35 +146,51 @@ struct CreatorChannelHomeResponse: Decodable {
|
||||
|
||||
Figma 참조:
|
||||
- 전체 화면: `node-id=296:14890`
|
||||
- Unfollow title bar: `node-id=296:14287`
|
||||
- Follow + 알림 설정 title bar: `node-id=296:14288`
|
||||
- Follow + 알림 해제 title bar: `node-id=296:14289`
|
||||
- Unfollow title bar: `node-id=296:14287`, `https://www.figma.com/design/HmN1yNdJ3EIpqknFL0Hkab/-%EA%B3%B5%EC%9C%A0%EC%9A%A9-%EB%B3%B4%EC%9D%B4%EC%8A%A4%EC%98%A8-UI-UX-%EA%B8%B0%ED%9A%8D%EB%AC%B8%EC%84%9C?node-id=296-14287&m=dev`
|
||||
- Follow + 알림 설정 title bar: `node-id=296:14288`, `https://www.figma.com/design/HmN1yNdJ3EIpqknFL0Hkab/-%EA%B3%B5%EC%9C%A0%EC%9A%A9-%EB%B3%B4%EC%9D%B4%EC%8A%A4%EC%98%A8-UI-UX-%EA%B8%B0%ED%9A%8D%EB%AC%B8%EC%84%9C?node-id=296-14288&m=dev`
|
||||
- Follow + 알림 해제 title bar: `node-id=296:14289`, `https://www.figma.com/design/HmN1yNdJ3EIpqknFL0Hkab/-%EA%B3%B5%EC%9C%A0%EC%9A%A9-%EB%B3%B4%EC%9D%B4%EC%8A%A4%EC%98%A8-UI-UX-%EA%B8%B0%ED%9A%8D%EB%AC%B8%EC%84%9C?node-id=296-14289&m=dev`
|
||||
|
||||
요구사항:
|
||||
- title bar, 크리에이터 프로필 header, status bar 처리는 `CreatorChannelView` 공통 shell에서 담당한다.
|
||||
- 크리에이터 이미지 영역은 OS status bar 영역까지 확장한다.
|
||||
- title bar는 화면 최상단에 overlay 형태로 배치한다.
|
||||
- 초기 title bar 배경은 투명 또는 이미지 위 overlay 상태로 시작한다.
|
||||
- title bar는 화면 최상단에 `ZStack` 또는 `overlay` 형태로 띄워 header view와 겹치게 배치한다.
|
||||
- title bar 뒤에 큰 배경 이미지가 보이도록 기본 배경은 투명이다.
|
||||
- scroll 진행도에 따라 `backgroundProgress`가 증가할 때만 title bar 배경색을 black에 가깝게 점진적으로 표시한다.
|
||||
- tab-bar와 title bar가 가까워질수록 title bar 배경색은 점진적으로 black으로 변한다.
|
||||
- tab-bar가 sticky 상태가 되면 OS status bar 영역도 title bar 배경색과 동일하게 보이도록 한다.
|
||||
- title bar 좌측에는 back 버튼을 둔다.
|
||||
- title bar 우측에는 팔로우/알림 상태 버튼과 더보기 버튼을 둔다.
|
||||
- title bar 좌측 back 버튼은 `ic_new_bar_back` asset을 사용한다.
|
||||
- title bar 우측 더보기 버튼은 `ic_new_more` asset을 사용한다.
|
||||
- `isFollow == false`이면 `팔로우` capsule 버튼을 표시한다.
|
||||
- `isFollow == true && isNotify == true`이면 팔로우 상태 아이콘 capsule과 알림 설정 아이콘을 표시한다.
|
||||
- `isFollow == true && isNotify == 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 == false`이면 following capsule과 알림 해제 아이콘 `ic_bar_bell`을 표시한다.
|
||||
- 더보기 버튼은 항상 표시한다.
|
||||
- 팔로우/언팔로우 mutation은 기존 follow, unfollow API를 사용한다.
|
||||
- 알림 상태 버튼은 신규 API를 만들지 않고 기존 follow/unfollow 및 알림 상태 처리 흐름에서 제공되는 범위 안에서 연결한다.
|
||||
- 팔로우/팔로우 취소/알림 설정/알림 설정 취소 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)`를 호출한다.
|
||||
- 알림 상태 변경용 신규 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으로 대체하지 않는다.
|
||||
|
||||
### 7.4 크리에이터 프로필 헤더
|
||||
|
||||
- `creator.profileImageUrl`은 프로필 이미지와 크리에이터 이미지 헤더의 큰 배경 이미지에 동일하게 사용한다.
|
||||
- 크리에이터 프로필 헤더는 홈 탭 콘텐츠가 아니라 `CreatorChannelView` 공통 shell에 속한다.
|
||||
- HeaderView의 표시 내용은 `CreatorChannelHomeResponse.creator`를 사용해 채운다.
|
||||
- HeaderView에는 별도 원형/소형 프로필 이미지를 표시하지 않는다.
|
||||
- `creator.profileImageUrl`은 크리에이터 이미지 헤더의 큰 배경 이미지에만 사용한다.
|
||||
- 큰 배경 이미지 영역은 OS status bar까지 확장되도록 top safe area를 무시한다.
|
||||
- `creator.nickname`, `creator.followerCount`를 Figma 위치와 계층에 맞게 표시한다.
|
||||
- `creator.characterId`가 있는 경우 캐릭터/AI 대화 연결 여부를 판단하는 데이터로 사용한다.
|
||||
- 이미지 로드 실패 시 기존 프로젝트의 기본 프로필 이미지 처리 패턴을 따른다.
|
||||
- 이미지 로드 실패 시 기존 프로젝트의 이미지 placeholder 패턴을 따른다.
|
||||
- 텍스트가 길어도 이미지/버튼/탭 영역과 겹치지 않도록 한 줄 말줄임 또는 기존 nickname 표시 관례를 따른다.
|
||||
|
||||
### 7.5 대화하기 액션 영역
|
||||
|
||||
- 대화하기 액션 영역은 tab-bar 아래 홈 탭 콘텐츠에 속한다.
|
||||
- `creator.isAiChatAvailable == true`이면 대화하기 버튼을 표시한다.
|
||||
- 대화하기 아이콘은 `ic_new_talk` asset을 사용한다.
|
||||
- 대화하기 버튼은 영역 중앙에 배치한다.
|
||||
@@ -177,6 +202,7 @@ Figma 참조:
|
||||
|
||||
### 7.6 Tab Bar
|
||||
|
||||
- tab-bar는 `CreatorChannelView` 공통 shell에 속하며, 선택된 tab에 따라 tab-bar 아래 콘텐츠만 교체한다.
|
||||
- tab-bar 항목은 `홈`, `라이브`, `오디오`, `시리즈`, `커뮤니티`, `팬Talk`, `후원` 순서로 표시한다.
|
||||
- `화보` 탭은 표시하지 않는다.
|
||||
- tab-bar는 horizontal scroll 가능 구조로 구현한다.
|
||||
@@ -288,8 +314,8 @@ Figma 참조:
|
||||
- OS status bar 영역까지 확장되는 크리에이터 이미지 헤더
|
||||
- scroll progress에 따라 black으로 변하는 overlay title bar
|
||||
- 팔로우/알림 상태별 title bar
|
||||
- 대화하기 액션 영역
|
||||
- sticky horizontal tab-bar
|
||||
- 공통 shell 아래 홈 탭의 대화하기 액션 영역
|
||||
- 홈 탭의 섹션별 summary UI
|
||||
- 홈 외 탭의 placeholder page
|
||||
- 홈 섹션 전체보기 placeholder destination
|
||||
@@ -313,11 +339,13 @@ Figma 참조:
|
||||
## 9. Technical Constraints
|
||||
- 신규 View, ViewModel, Repository 및 연결 하위 코드는 `SodaLive/Sources/V2/**` 아래에 작성한다.
|
||||
- 여러 페이지에서 재사용 가능한 공용 컴포넌트는 `SodaLive/Sources/V2/Component/**` 아래에 둔다.
|
||||
- 특정 채널 홈 내부에서만 쓰는 컴포넌트는 채널 홈 폴더 하위 `Components`에 둔다.
|
||||
- 크리에이터 채널 공통 shell 내부에서만 쓰는 컴포넌트는 `SodaLive/Sources/V2/CreatorChannel/Components/**` 아래에 둔다.
|
||||
- 홈 탭 내부에서만 쓰는 컴포넌트는 `SodaLive/Sources/V2/CreatorChannel/Home/Components/**` 아래에 둔다.
|
||||
- API/Repository/ViewModel 구성은 기존 `SodaLive/Sources/V2/Main/Home/Following/**`, `Ranking/**`, `Recommendation/**` 패턴을 따른다.
|
||||
- `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`을 사용한다.
|
||||
- 신규 문구가 다국어 대상이면 `SodaLive/Sources/I18n/I18n.swift`에 추가한다.
|
||||
- Figma에서 제공되는 localhost asset URL은 앱 코드에 넣지 않는다.
|
||||
- 프로젝트 설정 변경은 신규 파일이 Xcode project에 자동 포함되지 않는 구조일 때만 수행한다.
|
||||
@@ -325,21 +353,27 @@ Figma 참조:
|
||||
- SNS 섹션 아이콘은 Figma localhost asset이 아니라 프로젝트 asset catalog의 `ic_sns_*` 아이콘을 사용한다.
|
||||
|
||||
## 10. Success Criteria
|
||||
- 크리에이터 채널 홈 진입 시 `GET /api/v2/creator-channels/{creatorId}/home` 호출이 발생한다.
|
||||
- 크리에이터 채널 진입 시 `CreatorChannelView`가 표시되고, 기본 선택 탭은 `홈`이다.
|
||||
- 크리에이터 채널 진입 시 `GET /api/v2/creator-channels/{creatorId}/home` 호출이 발생한다.
|
||||
- response model이 PRD의 API 초안 필드를 디코딩한다.
|
||||
- API 실패 시 전체 화면 error state 대신 placeholder 기반으로 표시 가능한 기본 UI가 유지된다.
|
||||
- `creator` 정보가 header/title/action/tab UI 상태에 반영된다.
|
||||
- API 실패 시 전체 화면 error state 대신 placeholder 기반으로 표시 가능한 공통 shell UI가 유지된다.
|
||||
- `creator` 정보가 공통 shell의 header/title 상태와 홈 탭의 action 상태에 반영된다.
|
||||
- 크리에이터 이미지가 OS status bar 영역까지 표시된다.
|
||||
- HeaderView는 `CreatorChannelHomeResponse.creator`를 기반으로 표시되고, 별도 프로필 이미지를 추가로 표시하지 않는다.
|
||||
- title bar의 기본 배경은 투명이고 큰 배경 이미지 위에 overlay되어 보인다.
|
||||
- scroll 위치에 따라 title bar 배경이 점진적으로 black으로 변한다.
|
||||
- tab-bar가 title bar와 맞닿으면 sticky 상태가 되고 아래 콘텐츠만 스크롤된다.
|
||||
- sticky 상태에서 OS status bar 영역도 title bar와 동일한 black 배경으로 보인다.
|
||||
- `isFollow`, `isNotify` 조합에 따라 title bar의 팔로우/알림 상태가 Figma 3개 상태와 일치한다.
|
||||
- 팔로우/언팔로우 action은 기존 follow, unfollow API를 호출한다.
|
||||
- title bar는 `ic_new_bar_back`, `ic_new_follow`, `ic_new_following`, `ic_new_more`, `ic_bar_bell`, `ic_bar_bell_fill` 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)`가 호출된다.
|
||||
- `isAiChatAvailable`에 따라 대화하기 버튼이 조건부 표시된다.
|
||||
- 대화하기 버튼은 기존 AI 채팅방 페이지로 이동하고, 기존 본인인증 guard와 비한국 국가 분기 guard를 적용한다.
|
||||
- 대화하기 버튼이 없어도 액션 영역 높이는 유지된다.
|
||||
- DM 버튼은 표시되지 않는다.
|
||||
- 홈 tab에는 현재 라이브, 최신 오디오 콘텐츠, 채널 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS 섹션이 API 데이터 기반으로 표시된다.
|
||||
- tab-bar 아래 콘텐츠는 선택된 tab에 따라 교체된다.
|
||||
- 홈 tab에는 대화하기, 현재 라이브, 최신 오디오 콘텐츠, 채널 후원, 공지, 스케줄, 오디오, 시리즈, 커뮤니티, 팬Talk, 소개, 활동, SNS 섹션이 API 데이터 기반으로 표시된다.
|
||||
- SNS 섹션은 `ic_sns_*` asset 아이콘과 유효한 SNS URL만 사용해 표시된다.
|
||||
- 데이터가 비어 있는 섹션은 표시되지 않는다.
|
||||
- `화보` 탭, 화보 섹션, 활동의 화보 row가 표시되지 않는다.
|
||||
@@ -357,6 +391,10 @@ Figma 참조:
|
||||
- Figma `node-id=296:14287`, `296:14288`, `296:14289`의 design context와 screenshot을 확인해 title bar의 Unfollow, Follow+알림 설정, Follow+알림 해제 상태를 검토했다.
|
||||
- `SodaLive/Sources/V2/**` 구조를 확인해 기존 V2 홈 API/Repository/ViewModel/Components 배치 패턴을 검토했다.
|
||||
- `SodaLive/Sources/V2/Component/SectionTitle.swift`, `AudioContentCard.swift`, `CommunityPostCard.swift`, `CapsuleTabBar.swift` 등 재사용 후보 파일 존재를 확인했다.
|
||||
- 사용자 확인 사항을 반영해 `creator.profileImageUrl`을 헤더 큰 이미지로 사용, 빈 섹션 숨김, 기존 follow/unfollow API 사용, 대화하기의 기존 AI 채팅방 및 본인인증 guard 적용, DM 버튼 추후 작업, 홈 외 탭 제목 placeholder, 팬Talk 전체보기의 팬Talk 탭 이동, Swift `Int` 통일 정책을 확정 요구사항으로 이동했다.
|
||||
- 사용자 확인 사항을 반영해 `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: 기존 `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