Files
sodalive-android/docs/20260713_크리에이터_채널_채팅_DM_로그인_가드/plan-task.md

5.1 KiB

크리에이터 채널 채팅/DM 로그인 가드 계획

목표

CreatorChannelActivity 화면 자체를 로그인 필수로 만들고, 대화하기 버튼은 기존 국가별 인증/성인 콘텐츠 guard 흐름을 재사용한다.

범위

  • 수정: app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt
  • 문서: docs/20260713_크리에이터_채널_채팅_DM_로그인_가드/prd.md, plan-task.md
  • 제외: Repository/ViewModel/API 변경, UI 레이아웃 변경, 다른 화면 guard 변경

Phase 1: 로그인 가드 적용

  • Task 1.0: CreatorChannelActivity.kt 화면 진입 로그인 guard 추가

    • 파일: app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt
    • 작업: setupView()에서 유효한 creatorId 확인 후 토큰이 비어 있으면 showLoginActivity(), finish(), return으로 화면 초기화를 중단한다.
    • 검증 기준: 비로그인 상태에서는 탭/페이저/클릭 리스너 설정 전에 로그인 화면으로 이동하고 현재 화면은 종료된다.
  • Task 1.1: CreatorChannelActivity.kt 대화하기 클릭 guard 추가

    • 파일: app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt
    • 작업: tvChatButton 클릭 시 기존 ensureLoginAndAdultAuth로 국가별 인증/성인 콘텐츠 접근 조건을 확인하고, 통과 후 homeActionDelegate?.createChatRoom(characterId)를 실행한다.
    • 검증 기준: 한국 사용자 본인인증 미완료 상태 또는 성인 콘텐츠 표시 설정 비활성 상태에서는 채팅방 생성 API가 호출되지 않는다.
  • Task 1.2: CreatorChannelActivity.kt DM 클릭 로그인 guard 추가

    • 파일: app/src/main/java/kr/co/vividnext/sodalive/v2/creator/channel/CreatorChannelActivity.kt
    • 작업: 화면 레벨 로그인 보장을 전제로 기존 owner/non-owner DM 이동 분기를 유지한다.
    • 검증 기준: 로그인 상태에서 기존 owner/non-owner DM 이동 분기가 유지된다.
  • Task 1.3: 변경 검증 실행

    • 파일: docs/20260713_크리에이터_채널_채팅_DM_로그인_가드/plan-task.md
    • 작업: 소스 확인 및 가능한 Gradle 검증을 실행하고 결과를 기록한다.
    • 검증 기준: 관련 테스트 또는 컴파일 검증 결과를 기록한다.

Verification Log

  • 2026-07-13: CreatorChannelActivity.kt 소스 확인 결과 tvChatButtonensureLoginAndAdultAuth(isAdult = false) 통과 후 homeActionDelegate?.createChatRoom(characterId)를 호출하고, tvDmButtonSharedPreferenceManager.token.isBlank()일 때 showLoginActivity() 후 반환하며 기존 owner/non-owner 이동 경로를 유지한다.
  • 2026-07-13: ./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest" 실행 결과 Kotlin 컴파일은 통과했으나 기존 CreatorChannelActivitySourceTest > 팬Talk 섹션은 Figma ListComment layout과 bind로 렌더링한다CreatorChannelActivitySourceTest.kt:1894에서 실패했다. 실패 assertion은 item_creator_channel_home_fantalk.xml@drawable/ic_chevron_down_white 포함 여부로, 이번 변경 파일인 CreatorChannelActivity.kt의 클릭 guard 수정과 직접 관련 없는 기존 테스트 상태로 확인했다.
  • 2026-07-13: 사용자 추가 확인에 따라 대화하기 guard를 로그인-only에서 로그인+본인인증으로 변경했다. tvChatButtonensureLoginAndAuth를 호출하고, 해당 함수는 비로그인 시 로그인 화면, 한국 사용자 본인인증 미완료 시 auth_desc 본인인증 안내, 통과 시 채팅방 생성 콜백을 실행한다. isAdultContentVisible은 확인하지 않는다.
  • 2026-07-13: ./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest"를 재실행했다. CreatorChannelActivity.kt Kotlin 컴파일은 통과했으며, 테스트 결과는 동일하게 기존 FanTalk 레이아웃 assertion(CreatorChannelActivitySourceTest.kt:1894, @drawable/ic_chevron_down_white) 1건 실패로 종료되었다.
  • 2026-07-13: 사용자 추가 확인에 따라 크리에이터 채널 화면 자체를 로그인 필수로 변경했다. setupView()는 유효한 creatorId 확인 후 SharedPreferenceManager.token.isBlank()이면 showLoginActivity(), finish(), return으로 초기화를 중단한다. 대화하기는 기존 ensureLoginAndAdultAuth를 재사용해 국가별 인증/성인 콘텐츠 접근 조건을 확인한다.
  • 2026-07-13: 대화하기 호출부를 ensureLoginAndAdultAuth(isAdult = true)로 명시하고 ensureLoginAndAdultAuth 함수 시그니처는 기존 isAdult: Boolean 필수 파라미터 형태로 유지했다. ./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.v2.creator.channel.CreatorChannelActivitySourceTest" 재실행 결과 CreatorChannelActivity.kt Kotlin 컴파일은 통과했고, 기존 FanTalk 레이아웃 assertion(CreatorChannelActivitySourceTest.kt:1894, @drawable/ic_chevron_down_white) 1건 실패만 남았다.