6.3 KiB
6.3 KiB
20260319_라이브룸채팅얼림터치동작수정.md
개요
LiveRoomActivity에서 비방장 청취자가 채팅 얼림 상태일 때 터치 시 경고 토스트가 안정적으로 노출되도록 보정한다.etChat.isEnabled = false로 인해 터치 이벤트가 막히는 문제를 해결하고, 입력/전송 차단 정책은 유지한다.etChat.setOnTouchListener의ClickableViewAccessibility경고가 표시되지 않도록performClick연계와 경고 억제를 반영한다.
완료 기준 (Acceptance Criteria)
- AC1: 비방장이 채팅 얼림 상태에서
et_chat을 터치하면screen_live_room_chat_freeze_warning토스트가 노출된다. - AC2: 비방장 + 채팅 얼림 상태에서 실제 채팅 입력과 전송은 계속 차단된다.
- AC3: 방장 또는 비얼림 상태에서는 기존 입력 동작이 유지된다.
- AC4: 경고 문구(ClickableViewAccessibility)가 코드 경로에서 재현되지 않는다.
- AC5: 문자열 리소스는 기존
screen_live_room_chat_freeze_warning을 재사용한다. - AC6: 수정 코드 컴파일/테스트가 성공한다.
구현 체크리스트
LiveRoomActivity의 입력 비활성/터치 처리 코드를 재확인한다.etChat터치 토스트 경로를 입력창 자체OnTouchListener로 보정한다.etChat은 enabled 유지 + focus/cursor 제어로 입력 차단을 유지한다.MotionEvent.ACTION_UP에서performClick호출을 추가해 접근성 경고 조건을 해소한다.@SuppressLint("ClickableViewAccessibility")를setupView에 적용해 IDE/Lint 경고 노출을 억제한다.- 검증 실행 결과를 문서 하단에 누적 기록한다.
영향 파일
app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.ktdocs/20260319_라이브룸채팅얼림터치동작수정.md
검증 기록
-
2026-03-19
- 무엇/왜/어떻게: 비방장 청취자 터치 시 얼림 토스트를 먼저 보장하기 위해 입력 컨테이너 클릭 기반 경고를 적용했다.
- 실행 명령/도구:
- 탐색:
task(subagent_type="explore")x3,task(subagent_type="librarian")x2 - 코드/리소스 확인:
grep("isChatFrozen|screen_live_room_chat_freeze_warning|setOnFocusChangeListener|etChat"),ast_grep_search,sg --lang kotlin -p ...,read(LiveRoomActivity.kt, activity_live_room.xml) - 정적 진단:
lsp_diagnostics(LiveRoomActivity.kt) - 빌드/테스트:
./gradlew :app:testDebugUnitTest :app:assembleDebug - 수동 스모크:
adb devices,adb shell monkey -p kr.co.vividnext.sodalive.debug -c android.intent.category.LAUNCHER 1,adb shell am start -W -n ...LiveRoomActivity --el roomId 1,adb shell run-as kr.co.vividnext.sodalive.debug am start --user 0 -n ...LiveRoomActivity --el roomId 1
- 탐색:
- 결과:
- 초기 수정에서
binding.rlInputChat.setOnClickListener로 토스트를 노출하도록 반영했다. - 문자열 리소스는 기존
screen_live_room_chat_freeze_warning을 재사용했고 신규 리소스 추가는 없었다. ./gradlew :app:testDebugUnitTest :app:assembleDebug는BUILD SUCCESSFUL이었다.lsp_diagnostics는 Kotlin LSP 미설정으로 실행 불가였다.- adb 직접
am start는 non-exported Activity 제약으로 실패했고run-as경로로 Activity 시작 로그를 확인했다.
- 초기 수정에서
-
2026-03-19
- 무엇/왜/어떻게:
etChat.isEnabled = false상태에서 부모(rlInputChat) 클릭이 전달되지 않아 토스트가 뜨지 않는 문제를 확인했고, 입력창은 enabled를 유지한 채 포커스 가능 여부로 입력 차단을 제어하도록 수정했다. 동시에etChat.setOnTouchListener에서 비방장+얼림 상태 터치를 직접 소비하며 토스트를 노출하도록 보정했다. - 실행 명령/도구:
- 분석:
read(LiveRoomActivity.kt),background_output(bg_7315e113) - 코드 반영:
apply_patch(LiveRoomActivity.kt, 본 문서) - 정적 진단:
lsp_diagnostics(LiveRoomActivity.kt) - 빌드/테스트:
./gradlew :app:testDebugUnitTest :app:assembleDebug - 수동 스모크:
adb devices,adb shell monkey -p kr.co.vividnext.sodalive.debug -c android.intent.category.LAUNCHER 1,adb shell run-as kr.co.vividnext.sodalive.debug am start --user 0 -n kr.co.vividnext.sodalive.debug/kr.co.vividnext.sodalive.live.room.LiveRoomActivity --el roomId 1
- 분석:
- 결과:
- 비방장+얼림 상태에서
etChat터치 시 경고 토스트가 뜨도록 이벤트 경로가 복구되었다. - 입력/전송 차단은
etChat.isFocusable/isFocusableInTouchMode/isCursorVisible=false와ivSend.isEnabled=false로 유지된다. ./gradlew :app:testDebugUnitTest :app:assembleDebug는BUILD SUCCESSFUL로 통과했다.lsp_diagnostics는 Kotlin LSP 미설정 환경으로 실행 불가 메시지를 반환했다.
- 비방장+얼림 상태에서
- 무엇/왜/어떻게:
-
2026-03-19
- 무엇/왜/어떻게:
etChat.setOnTouchListener구간에서 IDE 경고(Custom view EditText has setOnTouchListener called on it but does not override performClick)가 남아performClick()호출과@SuppressLint("ClickableViewAccessibility")를 추가해 경고 노출을 제거했다. - 실행 명령/도구:
- 코드 반영:
apply_patch(LiveRoomActivity.kt) - 정적 진단:
lsp_diagnostics(LiveRoomActivity.kt) - 린트 확인:
./gradlew :app:lintDebug,grep("ClickableViewAccessibility|performClick", lint-results-debug.txt) - 빌드/테스트:
./gradlew :app:testDebugUnitTest :app:assembleDebug - 수동 스모크:
adb devices,adb shell monkey -p kr.co.vividnext.sodalive.debug -c android.intent.category.LAUNCHER 1,adb shell run-as kr.co.vividnext.sodalive.debug am start --user 0 -n kr.co.vividnext.sodalive.debug/kr.co.vividnext.sodalive.live.room.LiveRoomActivity --el roomId 1
- 코드 반영:
- 결과:
LiveRoomActivity.kt:637의setOnTouchListener에서view.performClick()호출이 반영됐다.lint-results-debug.txt에서ClickableViewAccessibility와performClick관련 경고 매치를 찾지 못해 해당 경고가 재현되지 않았다.:app:lintDebug는 기존 선행 이슈(AndroidManifest.xml의MissingClass,com.facebook.FacebookActivity)로 실패했으며 이번 수정 경고와는 별개였다../gradlew :app:testDebugUnitTest :app:assembleDebug는BUILD SUCCESSFUL로 통과했다.
- 무엇/왜/어떻게: