fix(i18n): 팬레터 탭 빈 상태를 다국어화한다
This commit is contained in:
@@ -24,6 +24,7 @@ Figma 참조:
|
||||
- 기존 홈 탭에는 최신 팬Talk 요약만 있고, 팬Talk 탭 전용 목록 API, 페이징, 답글 표시, 신고/삭제 액션이 없다.
|
||||
- 기존 프로필 FanTalk 구현은 구 API와 구 UI 구조를 사용하므로 V2 크리에이터 채널 탭에 그대로 붙이기 어렵다.
|
||||
- 팬Talk 탭의 글쓰기 floating button과 empty state `응원 남기기` 버튼이 실제 글 입력 화면으로 연결되지 않는다.
|
||||
- 팬레터 탭 empty 문구와 작성 버튼이 한국어로 하드코딩되어 앱 언어 설정에 맞게 표시되지 않는다.
|
||||
- 내가 쓴 팬Talk의 `수정하기` 액션이 실제 수정 화면으로 연결되지 않는다.
|
||||
- V2 화면에서 재사용할 수 있는 Figma 기준 액션 모달이 없어 입력 종료 안내 모달을 일관되게 표시하기 어렵다.
|
||||
|
||||
@@ -38,9 +39,9 @@ Figma 참조:
|
||||
- 내가 쓴 글의 더보기 메뉴에는 공용 `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 글 입력 화면으로 진입한다.
|
||||
- `fanTalkCount == 0`이면 Figma empty view(`290:9001`)를 표시하고 지정된 ko/en/ja 문구를 사용한다.
|
||||
- 내 채널인 경우 우측하단 글쓰기 floating button과 empty view 내부 `응원남기기` 버튼을 모두 표시하지 않는다.
|
||||
- 크리에이터 채널 팬Talk 탭의 우측하단 plus button과 empty state `응원남기기` 버튼에서 팬Talk 글 입력 화면으로 진입한다.
|
||||
- 팬Talk 글 입력 화면은 입력 값 없음, 입력 값 있음, 키보드 없음 상태를 Figma 기준으로 표시한다.
|
||||
- 입력 값이 없으면 보내기 버튼을 비활성화하고, 입력 값이 있으면 보내기 버튼을 활성화한다.
|
||||
- 입력 값이 있는 상태에서 취소 버튼을 터치하면 입력 종료 안내 모달을 표시한다.
|
||||
@@ -152,9 +153,16 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
|
||||
### 5.7 Empty and writing button
|
||||
- `fanTalkCount == 0`이면 Figma `290:9001` 기준 empty view를 표시한다.
|
||||
- Empty 문구는 `아직 응원이 없습니다.\n처음으로 크리에이터를 응원해 보세요!`를 표시한다.
|
||||
- Empty view에는 `+` 아이콘과 `응원 남기기` 텍스트가 있는 capsule button을 표시한다.
|
||||
- 단, 내 채널인 경우 empty view 내부 `응원 남기기` 버튼을 표시하지 않는다.
|
||||
- Empty 문구는 아래 언어별 값을 사용한다. `\n`은 명시적 줄바꿈이다.
|
||||
- 한국어: `아직 응원이 없습니다.\n처음으로 크리에이터를 응원해 보세요!`
|
||||
- 영어: `No fan letters yet.\nBe the first to send one!`
|
||||
- 일본어: `まだファンレターがありません。\n最初のファンレターを送ってみましょう!`
|
||||
- Empty view에는 `+` 아이콘과 아래 언어별 텍스트가 있는 capsule button을 표시한다.
|
||||
- 한국어: `응원남기기`
|
||||
- 영어: `Send a fan letter`
|
||||
- 일본어: `ファンレターを送る`
|
||||
- Empty view의 작성 버튼은 `Color.gray800` 배경과 white 아이콘·텍스트를 사용한다.
|
||||
- 단, 내 채널인 경우 empty view 내부 `응원남기기` 버튼을 표시하지 않는다.
|
||||
- `fanTalkCount > 0`이면 홈 탭 plus button 위치에 글쓰기 floating button을 표시한다.
|
||||
- 단, 내 채널인 경우 글쓰기 floating button을 표시하지 않는다.
|
||||
- 글쓰기 floating button은 `CreatorChannelFloatingActionMenu` 내부 `floatingButton`과 동일한 66pt 원형 버튼, 38pt 아이콘, `Color.soda400` 배경을 사용한다.
|
||||
@@ -171,10 +179,10 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
|
||||
### 5.9 FanTalk write/modify entry
|
||||
- 쓰기 페이지는 크리에이터 채널 팬Talk 탭에서 진입한다.
|
||||
- 진입 경로는 `fanTalkCount > 0`일 때 표시되는 우측하단 plus button과 `fanTalkCount == 0`일 때 empty state에 표시되는 `응원 남기기` 버튼이다.
|
||||
- 진입 경로는 `fanTalkCount > 0`일 때 표시되는 우측하단 plus button과 `fanTalkCount == 0`일 때 empty state에 표시되는 `응원남기기` 버튼이다.
|
||||
- 내가 쓴 글의 더보기 메뉴에서 `수정하기` 액션을 터치하면 같은 쓰기 페이지를 수정 모드로 연다.
|
||||
- 수정 모드로 진입할 때는 수정 대상 `fanTalkId`와 기존 글 content를 반드시 함께 전달한다.
|
||||
- 내 채널인 경우 기존 규칙대로 plus button과 empty state `응원 남기기` 버튼을 모두 표시하지 않으므로 작성 모드로 진입할 수 없다.
|
||||
- 내 채널인 경우 기존 규칙대로 plus button과 empty state `응원남기기` 버튼을 모두 표시하지 않으므로 작성 모드로 진입할 수 없다.
|
||||
- 쓰기 route는 `AppStep`에 추가하고 `creatorId`, 작성/수정 mode, 수정 대상 `fanTalkId`, 초기 content, `onSuccess`를 전달할 수 있게 한다.
|
||||
- 작성 모드에서는 `fanTalkId`와 초기 content를 전달하지 않거나 비어 있는 값으로 전달한다.
|
||||
- 수정 모드에서는 `fanTalkId`가 0보다 커야 하고 초기 content가 기존 글 content와 같아야 한다.
|
||||
@@ -224,10 +232,11 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
- 팬Talk 탭 목록의 삭제 confirm dialog는 `CreatorChannelView` 상위 wrapping `ZStack`에서 표시되어 긴 목록 스크롤 위치와 무관하게 화면 기준으로 중앙 표시된다.
|
||||
- 삭제 confirm 시 기존 FanTalk 삭제 API가 호출되고 성공 후 첫 페이지가 갱신된다.
|
||||
- `fanTalkCount == 0`이면 Figma `290:9001` empty view가 표시된다.
|
||||
- 내 채널인 경우 empty view 내부 `응원 남기기` 버튼과 우측하단 글쓰기 floating button이 모두 표시되지 않는다.
|
||||
- Empty 문구와 작성 버튼이 지정된 ko/en/ja 값 및 줄바꿈으로 표시된다.
|
||||
- 내 채널인 경우 empty view 내부 `응원남기기` 버튼과 우측하단 글쓰기 floating button이 모두 표시되지 않는다.
|
||||
- `fanTalkCount > 0`이고 내 채널이 아니면 우측하단 글쓰기 floating button이 표시된다.
|
||||
- `fanTalkCount > 0`이고 내 채널이 아니면 우측하단 글쓰기 floating button tap 시 팬Talk 글 입력 화면으로 이동한다.
|
||||
- `fanTalkCount == 0`이고 내 채널이 아니면 empty state `응원 남기기` 버튼 tap 시 팬Talk 글 입력 화면으로 이동한다.
|
||||
- `fanTalkCount == 0`이고 내 채널이 아니면 empty state `응원남기기` 버튼 tap 시 팬Talk 글 입력 화면으로 이동한다.
|
||||
- 팬Talk 글 입력 화면은 입력 값이 없을 때 보내기 버튼을 비활성화한다.
|
||||
- 팬Talk 글 입력 화면은 입력 값이 있을 때 보내기 버튼을 활성화한다.
|
||||
- 입력 값이 있는 상태에서 취소 버튼을 터치하면 입력 종료 안내 모달이 표시된다.
|
||||
@@ -250,6 +259,7 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
- 신고 기능 재사용을 위해 기존 `ReportRepository`, `ReportRequest`, `CheersReportDialogView`를 사용한다.
|
||||
- `CheersReportDialogView`는 신고 사유 선택 전용 UI이므로 이번 확인형 V2 popup dialog 전환 범위에서 제외한다.
|
||||
- 신규 문구가 필요하면 `SodaLive/Sources/I18n/I18n.swift`에 ko/en/ja를 추가한다.
|
||||
- Empty 문구와 `응원남기기` 버튼은 View에 직접 작성하지 않고 기존 크리에이터 채널 I18n 구조의 `pick(ko:en:ja:)` 값으로 관리한다.
|
||||
- 프로젝트 설정 변경은 신규 Swift 파일 target 등록이 필요한 경우에만 수행한다.
|
||||
|
||||
## 8. Assumptions
|
||||
@@ -272,3 +282,5 @@ data class CreatorChannelFanTalkReplyResponse(
|
||||
- 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 전환 범위에서 제외한다.
|
||||
- 2026-08-14: 사용자 인터뷰로 팬레터 탭 empty 문구와 `응원남기기` 버튼의 ko/en/ja 값을 확정했다. 기존 작성 route와 내 채널 버튼 숨김 규칙은 유지하며 이번 작업에서는 Swift 구현을 수행하지 않는다.
|
||||
- 2026-08-14: 사용자 요청에 따라 팬레터 탭 empty 작성 버튼은 `Color.gray800` 배경과 white 아이콘·텍스트를 사용하도록 확정했다. 홈 후원·팬레터 empty 버튼은 white/black, 후원 탭 empty 버튼은 기존 `Color.soda400`/white를 유지한다.
|
||||
|
||||
Reference in New Issue
Block a user