fix(live-room): 채팅 금지 입력 차단 안내를 즉시 노출한다
This commit is contained in:
@@ -39,6 +39,22 @@ struct LiveRoomViewV2: View {
|
|||||||
|
|
||||||
return max(keyboardHandler.keyboardHeight, 0)
|
return max(keyboardHandler.keyboardHeight, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var isChatInputDisabled: Bool {
|
||||||
|
viewModel.isChatFrozenForCurrentUser || viewModel.isNoChatting
|
||||||
|
}
|
||||||
|
|
||||||
|
private var chatInputBlockedMessage: String {
|
||||||
|
if viewModel.isChatFrozenForCurrentUser {
|
||||||
|
return I18n.LiveRoom.chatFreezeBlockedMessage
|
||||||
|
}
|
||||||
|
|
||||||
|
if viewModel.isNoChatting {
|
||||||
|
return "\(viewModel.remainingNoChattingTime)초 동안 채팅하실 수 없습니다"
|
||||||
|
}
|
||||||
|
|
||||||
|
return I18n.LiveRoom.chatFreezeBlockedMessage
|
||||||
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ZStack {
|
ZStack {
|
||||||
@@ -356,7 +372,7 @@ struct LiveRoomViewV2: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
LiveRoomInputChatView(
|
LiveRoomInputChatView(
|
||||||
isInputDisabled: viewModel.isChatFrozenForCurrentUser,
|
isInputDisabled: isChatInputDisabled,
|
||||||
sendMessage: {
|
sendMessage: {
|
||||||
viewModel.sendMessage(chatMessage: $0) {
|
viewModel.sendMessage(chatMessage: $0) {
|
||||||
viewModel.isShowingNewChat = false
|
viewModel.isShowingNewChat = false
|
||||||
@@ -366,7 +382,7 @@ struct LiveRoomViewV2: View {
|
|||||||
return true
|
return true
|
||||||
},
|
},
|
||||||
onDisabledInputTap: {
|
onDisabledInputTap: {
|
||||||
viewModel.errorMessage = I18n.LiveRoom.chatFreezeBlockedMessage
|
viewModel.errorMessage = chatInputBlockedMessage
|
||||||
viewModel.isShowErrorPopup = true
|
viewModel.isShowErrorPopup = true
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
41
docs/20260319_채팅금지상태알림방식수정.md
Normal file
41
docs/20260319_채팅금지상태알림방식수정.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# 20260319_채팅금지상태알림방식수정.md
|
||||||
|
|
||||||
|
## 개요
|
||||||
|
- 라이브룸 V2에서 `채팅 금지` 상태 알림 방식을 `채팅창 얼림` 상태와 동일한 UX로 맞춘다.
|
||||||
|
- 현재는 입력 후 전송 시점에만 차단 안내가 표시되므로, 입력창 터치 시점 안내로 변경한다.
|
||||||
|
|
||||||
|
## 완료 기준 (Acceptance Criteria)
|
||||||
|
- [x] AC1: `채팅 금지` 상태에서 입력창을 터치하면 즉시 토스트가 노출된다.
|
||||||
|
- [x] AC2: `채팅 금지` 상태에서 전송 버튼을 눌러도 입력창 터치와 동일한 차단 안내가 일관되게 동작한다.
|
||||||
|
- [x] AC3: 기존 `채팅창 얼림` 상태의 토스트 문구/노출 방식과 동일한 경로를 재사용한다.
|
||||||
|
- [x] AC4: 빌드 검증(`SodaLive`, `SodaLive-dev`)이 통과한다.
|
||||||
|
|
||||||
|
## 구현 체크리스트
|
||||||
|
- [x] `LiveRoomViewV2`와 입력 컴포넌트 연결 지점에서 `채팅 금지` 상태를 입력 비활성 조건에 포함한다.
|
||||||
|
- [x] `LiveRoomInputChatView`의 비활성 입력 터치 콜백 경로를 `채팅 금지` 상태에도 동일 적용한다.
|
||||||
|
- [x] 차단 안내 토스트 노출 경로를 단일화해 입력창 터치 시점 피드백이 보장되도록 조정한다.
|
||||||
|
- [x] `lsp_diagnostics` 및 `xcodebuild` 검증 결과를 기록한다.
|
||||||
|
|
||||||
|
## 검증 기록
|
||||||
|
- 2026-03-19 (초안 작성)
|
||||||
|
- 무엇/왜/어떻게: 사용자 요청(채팅 금지 알림 시점을 입력 터치 시점으로 변경)에 맞춘 최소 범위 작업 계획을 수립했다.
|
||||||
|
- 실행 명령/도구:
|
||||||
|
- `read(LiveRoomViewV2.swift, LiveRoomInputChatView.swift)`
|
||||||
|
- `grep("onDisabledInputTap|isInputDisabled|chatFreezeBlockedMessage", include:"*.swift")`
|
||||||
|
- 결과:
|
||||||
|
- 변경 지점 후보를 `LiveRoomViewV2` 입력 바인딩과 `LiveRoomInputChatView` 비활성 터치 처리로 식별했다.
|
||||||
|
|
||||||
|
- 2026-03-19 (구현 및 검증)
|
||||||
|
- 무엇/왜/어떻게: `채팅 금지` 상태를 `LiveRoomInputChatView` 비활성 조건에 포함하고, 비활성 입력 터치 시 토스트 메시지가 `채팅창 얼림`과 동일 경로(`isShowErrorPopup`)로 노출되도록 수정했다.
|
||||||
|
- 실행 명령/도구:
|
||||||
|
- `apply_patch(LiveRoomViewV2.swift)`
|
||||||
|
- `lsp_diagnostics(LiveRoomViewV2.swift)`
|
||||||
|
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" -configuration Debug build`
|
||||||
|
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" -configuration Debug build`
|
||||||
|
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive" test`
|
||||||
|
- `xcodebuild -workspace "SodaLive.xcworkspace" -scheme "SodaLive-dev" test`
|
||||||
|
- 결과:
|
||||||
|
- `LiveRoomViewV2`에서 `isChatFrozenForCurrentUser || isNoChatting`를 입력 비활성 조건으로 적용.
|
||||||
|
- 비활성 입력 터치 시 `chatInputBlockedMessage`를 통해 얼림/채팅금지 각각 맞는 문구를 토스트로 노출하도록 반영.
|
||||||
|
- 빌드: `SodaLive`, `SodaLive-dev` 모두 `** BUILD SUCCEEDED **` 확인.
|
||||||
|
- 테스트: 두 스킴 모두 `Scheme ... is not currently configured for the test action.`으로 자동 테스트 미구성 상태 확인.
|
||||||
Reference in New Issue
Block a user