fix(creator): 팬Talk 액션 팝업을 정리한다
This commit is contained in:
@@ -35,9 +35,9 @@ Figma 참조:
|
||||
- 답글이 있으면 Figma처럼 좌측 라인과 답글 카드 영역을 표시한다.
|
||||
- 다른 유저의 글에는 `신고` 버튼만 표시하고, 기존 `UserProfileView`의 응원글 신고 기능과 동일하게 `CheersReportDialogView` 및 `ReportType.CHEERS` 흐름을 사용한다.
|
||||
- 내가 쓴 글 또는 내 채널의 타인 글에는 우측 액션으로 `ic_new_more` 더보기 버튼을 표시한다.
|
||||
- 내가 쓴 글의 더보기 메뉴에는 `수정하기`, `삭제하기`를 표시한다.
|
||||
- 내가 쓴 글이 아니지만 내 채널인 경우 더보기 메뉴에는 `삭제하기`만 표시한다.
|
||||
- `삭제하기`는 기존 FanTalk에서 사용하던 삭제 API와 동일하게 `ExplorerRepository.modifyCheers(..., isActive: false)`를 사용한다.
|
||||
- 내가 쓴 글의 더보기 메뉴에는 공용 `I18n` 문구 기준의 `수정`, `삭제` 액션을 표시한다.
|
||||
- 내가 쓴 글이 아니지만 내 채널인 경우 더보기 메뉴에는 공용 `I18n` 문구 기준의 `삭제` 액션만 표시한다.
|
||||
- `삭제` 액션은 기존 FanTalk에서 사용하던 삭제 API와 동일하게 `ExplorerRepository.modifyCheers(..., isActive: false)`를 사용한다.
|
||||
- `fanTalkCount == 0`이면 Figma empty view(`290:9001`)를 표시한다.
|
||||
- 내 채널인 경우 우측하단 글쓰기 floating button과 empty view 내부 `응원 남기기` 버튼을 모두 표시하지 않는다.
|
||||
- 크리에이터 채널 팬Talk 탭의 우측하단 plus button과 empty state `응원 남기기` 버튼에서 팬Talk 글 입력 화면으로 진입한다.
|
||||
@@ -54,6 +54,7 @@ Figma 참조:
|
||||
- 신고 API나 신고 dialog를 새로 만들지 않는다.
|
||||
- 삭제 API를 새로 만들지 않고 기존 FanTalk 삭제 흐름을 재사용한다.
|
||||
- 기존 구 UI `SodaDialog`를 V2 공용 모달로 대체하는 전역 리팩터링은 하지 않는다.
|
||||
- 신고 사유 선택 UI인 `CheersReportDialogView`는 기존 신고 플로우 재사용 범위로 유지하고, 이번 V2 popup dialog 전환 대상에서 제외한다.
|
||||
- Figma localhost asset URL을 앱 코드에 직접 사용하지 않는다.
|
||||
- `Pods/**`, `generated/**`, `build/**`는 수정하지 않는다.
|
||||
|
||||
@@ -133,15 +134,19 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
- `isMine || isOwnCreatorChannel`이면 우측에 `ic_new_more` 더보기 버튼을 표시한다.
|
||||
- `!isMine && !isOwnCreatorChannel`이면 우측에 `신고` 버튼만 표시한다.
|
||||
- 더보기 버튼을 터치하면 Figma `666:36114` 기준 anchored context popup을 표시한다.
|
||||
- 내가 쓴 글이면 `수정하기`, `삭제하기`를 표시한다.
|
||||
- 내가 쓴 글이 아니지만 내 채널이면 `삭제하기`만 표시한다.
|
||||
- `수정하기`를 터치하면 이번에 작성하는 팬Talk 쓰기 페이지를 수정 모드로 연다.
|
||||
- `삭제하기`는 확인 dialog 후 기존 삭제 API를 호출한다.
|
||||
- 팬Talk 목록과 답글 상세의 anchored context popup은 동일한 공용 popup 컴포넌트를 사용한다.
|
||||
- 팬Talk 목록 row의 anchored context popup은 `수정하기`, `삭제하기` 문구를 표시한다.
|
||||
- 내가 쓴 글이면 `수정하기`, `삭제하기` 액션을 표시한다.
|
||||
- 내가 쓴 글이 아니지만 내 채널이면 `삭제하기` 액션만 표시한다.
|
||||
- `수정하기` 액션을 터치하면 이번에 작성하는 팬Talk 쓰기 페이지를 수정 모드로 연다.
|
||||
- `삭제하기` 액션은 확인 dialog 후 기존 삭제 API를 호출한다.
|
||||
|
||||
### 5.6 Report and delete
|
||||
- 신고 버튼을 터치하면 기존 크리에이터 페이지의 응원글 신고와 동일하게 `CheersReportDialogView`를 표시한다.
|
||||
- 신고 confirm 시 `ReportRequest(type: .CHEERS, cheersId: fanTalkId, reason: reason)` 흐름을 사용한다.
|
||||
- 삭제 confirm dialog는 기존 `I18n.MemberChannel.cheersDeleteTitle`, `I18n.Common.confirmDeleteQuestion`, `I18n.Common.delete`, `I18n.Common.cancel`을 재사용한다.
|
||||
- 삭제 confirm dialog는 `SodaV2ActionModal`을 사용한다.
|
||||
- 팬Talk 탭 목록의 삭제 confirm dialog는 스크롤되는 탭 내부가 아니라 `CreatorChannelView`의 상위 wrapping `ZStack`에서 표시한다.
|
||||
- 삭제 API는 기존 FanTalk 삭제 흐름과 동일하게 `ExplorerRepository.modifyCheers(cheersId: fanTalkId, content: nil, isActive: false)`를 호출한다.
|
||||
- 삭제 성공 후 팬Talk 탭 첫 페이지를 다시 조회한다.
|
||||
|
||||
@@ -167,7 +172,7 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
### 5.9 FanTalk write/modify entry
|
||||
- 쓰기 페이지는 크리에이터 채널 팬Talk 탭에서 진입한다.
|
||||
- 진입 경로는 `fanTalkCount > 0`일 때 표시되는 우측하단 plus button과 `fanTalkCount == 0`일 때 empty state에 표시되는 `응원 남기기` 버튼이다.
|
||||
- 내가 쓴 글의 더보기 메뉴에서 `수정하기`를 터치하면 같은 쓰기 페이지를 수정 모드로 연다.
|
||||
- 내가 쓴 글의 더보기 메뉴에서 `수정하기` 액션을 터치하면 같은 쓰기 페이지를 수정 모드로 연다.
|
||||
- 수정 모드로 진입할 때는 수정 대상 `fanTalkId`와 기존 글 content를 반드시 함께 전달한다.
|
||||
- 내 채널인 경우 기존 규칙대로 plus button과 empty state `응원 남기기` 버튼을 모두 표시하지 않으므로 작성 모드로 진입할 수 없다.
|
||||
- 쓰기 route는 `AppStep`에 추가하고 `creatorId`, 작성/수정 mode, 수정 대상 `fanTalkId`, 초기 content, `onSuccess`를 전달할 수 있게 한다.
|
||||
@@ -214,6 +219,9 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
- 타인의 글이면서 내 채널이 아니면 `신고` 버튼만 표시되고 신고 confirm 시 기존 응원글 신고 API가 호출된다.
|
||||
- 내가 쓴 글은 `ic_new_more` 버튼과 `수정하기`, `삭제하기` 메뉴를 표시한다.
|
||||
- 내가 쓴 글이 아니지만 내 채널이면 `ic_new_more` 버튼과 `삭제하기` 메뉴만 표시한다.
|
||||
- 팬Talk 목록과 답글 상세의 anchored context popup은 동일한 공용 popup 컴포넌트를 사용한다.
|
||||
- 삭제 confirm dialog는 `SodaV2ActionModal`로 표시된다.
|
||||
- 팬Talk 탭 목록의 삭제 confirm dialog는 `CreatorChannelView` 상위 wrapping `ZStack`에서 표시되어 긴 목록 스크롤 위치와 무관하게 화면 기준으로 중앙 표시된다.
|
||||
- 삭제 confirm 시 기존 FanTalk 삭제 API가 호출되고 성공 후 첫 페이지가 갱신된다.
|
||||
- `fanTalkCount == 0`이면 Figma `290:9001` empty view가 표시된다.
|
||||
- 내 채널인 경우 empty view 내부 `응원 남기기` 버튼과 우측하단 글쓰기 floating button이 모두 표시되지 않는다.
|
||||
@@ -225,7 +233,7 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
- 입력 값이 있는 상태에서 취소 버튼을 터치하면 입력 종료 안내 모달이 표시된다.
|
||||
- 입력 종료 안내 모달의 dimmed를 터치하면 모달만 닫히고 입력 화면과 입력 값은 유지된다.
|
||||
- 작성 성공 후 팬Talk 탭 첫 페이지가 다시 조회된다.
|
||||
- 내가 쓴 글의 `수정하기` tap 시 같은 팬Talk 쓰기 페이지가 수정 모드로 열린다.
|
||||
- 내가 쓴 글의 `수정하기` 액션 tap 시 같은 팬Talk 쓰기 페이지가 수정 모드로 열린다.
|
||||
- 수정 모드 진입 시 수정 대상 `fanTalkId`와 기존 글 content가 함께 전달된다.
|
||||
- 수정 모드는 선택한 fanTalk의 기존 content를 입력값으로 표시한다.
|
||||
- 수정 성공 후 팬Talk 탭 첫 페이지가 다시 조회된다.
|
||||
@@ -240,6 +248,7 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
- 작성 API 재사용을 위해 기존 `ExplorerRepository.writeCheers`를 호출한다.
|
||||
- 수정 API 재사용을 위해 기존 `ExplorerRepository.modifyCheers`를 호출한다.
|
||||
- 신고 기능 재사용을 위해 기존 `ReportRepository`, `ReportRequest`, `CheersReportDialogView`를 사용한다.
|
||||
- `CheersReportDialogView`는 신고 사유 선택 전용 UI이므로 이번 확인형 V2 popup dialog 전환 범위에서 제외한다.
|
||||
- 신규 문구가 필요하면 `SodaLive/Sources/I18n/I18n.swift`에 ko/en/ja를 추가한다.
|
||||
- 프로젝트 설정 변경은 신규 Swift 파일 target 등록이 필요한 경우에만 수행한다.
|
||||
|
||||
@@ -261,3 +270,5 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
- 2026-07-06: `rg -n "no-op|수정 페이지는|수정 mutation|작성용 새 API|재사용 가능 여부|불가능한 것이 확인|미결정 사항|수정하기 tap은 수정 페이지" docs/20260704_크리에이터_채널_팬Talk_탭/prd.md docs/20260704_크리에이터_채널_팬Talk_탭/plan-task.md` 실행 결과 매칭이 없어 이전 충돌 문구가 남지 않았음을 확인했다.
|
||||
- 2026-07-06: 사용자 확인에 따라 수정 모드 진입 시 수정 대상 `fanTalkId`와 기존 글 content를 반드시 함께 전달하도록 PRD를 보완했다.
|
||||
- 2026-07-06: `rg '수정 모드.*fanTalkId|fanTalkId.*기존 글 content|fanTalkId.*초기 content|fanTalkId.*initialContent|기존 content.*content 초기값|수정 대상.*fanTalkId.*기존 글 content|fanTalkId.*0보다 커야' docs/20260704_크리에이터_채널_팬Talk_탭/prd.md docs/20260704_크리에이터_채널_팬Talk_탭/plan-task.md`로 수정 모드 route에 `fanTalkId`와 기존 글 content를 함께 전달한다는 조건을 확인했다.
|
||||
|
||||
- 2026-07-07: 사용자 후속 요청에 따라 팬Talk row 더보기의 삭제 확인 dialog는 팬Talk 탭 내부가 아니라 `CreatorChannelView` 상위 wrapping `ZStack`에서 표시한다. 삭제 확인 UI는 이번에 추가된 V2 공용 모달 `SodaV2ActionModal`을 사용하며, 팬Talk 리스트와 상세보기의 anchored context popup은 동일한 공용 컴포넌트와 동일한 `I18n` 문구를 사용한다. 신고 사유 선택 UI인 `CheersReportDialogView`는 기존 신고 플로우 재사용 범위로 유지하고 이번 확인형 V2 popup dialog 전환 범위에서 제외한다.
|
||||
|
||||
Reference in New Issue
Block a user