docs(creator): 채널 홈 후원 검증을 기록한다
This commit is contained in:
@@ -1220,7 +1220,7 @@
|
||||
|
||||
> 후원 empty, 최신 콘텐츠 터치, 날짜 표시, 오디오/시리즈/활동 영역의 세부 Figma 정합성을 묶어서 처리한다. 섹션 하나당 Phase를 나누지 않고 관련 홈 컨텐츠 보정 Task로 묶는다.
|
||||
|
||||
- [ ] **Task 12.1: 후원 empty UI와 최신 콘텐츠/날짜 표시 보강**
|
||||
- [x] **Task 12.1: 후원 empty UI와 최신 콘텐츠/날짜 표시 보강**
|
||||
- 수정:
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/model/CreatorChannelHomeMappers.kt`
|
||||
- `app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/ui/CreatorChannelHomeSectionAdapter.kt`
|
||||
@@ -1244,6 +1244,18 @@
|
||||
- `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"`
|
||||
- `./gradlew :app:mergeDebugResources`
|
||||
- `./gradlew :app:compileDebugKotlin`
|
||||
- 검증 기록:
|
||||
- 2026-06-16: Figma `290:8820`을 확인해 후원 empty UI가 `SectionTitle(후원)`, 196dp `gray_900` card, 24sp bold 2줄 안내 문구, 흰색 `후원하기` capsule 구조임을 반영했다. RED로 `CreatorChannelHomeMapperTest`에서 빈 `channelDonations`도 `CreatorChannelHomeSection.Donations(emptyList())`를 생성해야 한다는 계약을 추가해 `NoSuchElementException` 실패를 확인했고, `CreatorChannelActivitySourceTest`에서 후원 empty layout/string, 최신 오디오 card click, 공지/커뮤니티 상대 시간 formatter 계약 5건 실패를 확인했다.
|
||||
- 2026-06-16: mapper는 빈 후원 목록에서도 후원 섹션을 생성하도록 변경했고, `item_creator_channel_home_donation.xml`에 374dp 고정이 아닌 부모 좌우 여백 내 `match_parent` empty card를 추가했다. `CreatorChannelHomeSectionAdapter`는 후원 목록/empty visibility를 전환하고, 최신 오디오 card click을 `onAudioContentClick(item.audioContent)`로 연결하며, 공지/커뮤니티 `dateUtc`는 `formatUtcRelativeTimeText(...)`로 표시하도록 수정했다. `후원하기` 버튼은 후속 보강에서 기존 채널 후원 API와 `LiveRoomDonationDialog`를 재사용하는 flow로 연결했다.
|
||||
- 2026-06-16: 최초 GREEN 검증 중 새 리소스가 존재하지 않는 `@dimen/radius_100`, `@style/Typography.Heading0`를 참조해 `processDebugResources`가 실패했고, 기존 token에 맞춰 `100dp` radius와 `Typography.Heading1`로 수정했다. 병렬 Gradle 실행 중 KSP cache `NoSuchFileException: app/build/kspCaches/debug/backups`가 한 차례 발생해 `./gradlew --stop` 후 순차 재실행했다.
|
||||
- 2026-06-16: 최종 검증으로 `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelHomeMapperTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"`, `./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.*"`, `./gradlew :app:mergeDebugResources`, `./gradlew :app:compileDebugKotlin`, `git diff --check`가 모두 PASS했다. Kotlin/Gradle deprecation warning은 기존 경고로 이번 변경과 무관하다.
|
||||
- 2026-06-16: Task 12.1 보강으로 후원 버튼이 `LiveRoomDonationDialog`를 `UserProfileActivity`와 같은 옵션(`isLiveDonation=true`, `messageMaxLength=100`, 비밀후원 label, secret mission hint 비활성, `screenWidth - 26.7dp`)으로 표시하도록 연결하고, 성공 시 기존 채널 후원 API 호출 후 홈을 재조회하도록 RED/GREEN 테스트를 추가했다. 본인 채널은 일반/empty 후원 버튼을 숨기고 empty 문구를 `후원 내역이 없습니다`로 표시하도록 다국어 리소스와 source 계약을 보강했다.
|
||||
- 2026-06-16: RecyclerView rebind 시 후원 row가 중복 추가되지 않도록 `donationItems?.removeAllViews()`를 추가했고, `CreatorChannelActivitySourceTest` source contract로 재검증했다.
|
||||
- 2026-06-16: 리뷰 보강으로 후원 row 날짜를 UTC 원문 대신 `formatUtcRelativeTimeText(...)`로 표시하고, 채널 후원 성공 시 `SharedPreferenceManager.can` 차감 및 진행 중 중복 요청 방지 테스트를 추가했다.
|
||||
- 리뷰 후속 하위 작업:
|
||||
- [x] RecyclerView viewType은 `layoutResId`라 서로 다른 viewType 간 listener 누수 가능성은 낮지만, 최신 오디오가 아닌 bind에서도 root click state를 명시적으로 초기화해 명확성과 안전성을 높인다.
|
||||
- [x] `LiveRoomDonationDialog`가 validation/dismiss/charge navigation을 소유하고 `UserProfileActivity`도 callback-only 패턴을 쓰므로, Activity dismiss 흐름은 변경하지 않는다.
|
||||
- [x] 로컬 can 차감은 전체 balance resync가 아니라 최소 안전 장치로 `(SharedPreferenceManager.can - can).coerceAtLeast(0)`만 적용한다.
|
||||
|
||||
- [ ] **Task 12.2: 오디오/시리즈 아이템 세부 UI와 터치 액션 보강**
|
||||
- 수정:
|
||||
|
||||
Reference in New Issue
Block a user