From 1e8a96a52bb92130fa25897783167c84933eba1d Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 6 Nov 2025 17:35:08 +0900 Subject: [PATCH] =?UTF-8?q?fix(live-room):=20BIG=5FHEART=5FDONATION=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20heartMessage=203=EC=B4=88,=20HEAR?= =?UTF-8?q?T=5FDONATION=201.5=EC=B4=88=20=ED=91=9C=EC=8B=9C=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 왜: BIG_HEART_DONATION 수신 시 heartMessage 표시 시간이 요구사항(3초)에 맞지 않았음. 무엇: heartMessage 표시 로직을 닉네임+표시시간 큐로 변경하고, HEART(1.5초)/BIG_HEART(3초)를 각 호출부에서 반영. 영향: 애니메이션 로직 변경 없음. --- .../sodalive/live/room/LiveRoomActivity.kt | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt index a5fd2cf1..b2d5a1dc 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomActivity.kt @@ -1686,7 +1686,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB LiveRoomChatRawMessageType.HEART_DONATION -> { handler.post { - addHeartMessage(nickname) + addHeartMessage(nickname, 1500L) viewModel.addHeartDonation() addHeartAnimation() } @@ -1694,7 +1694,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB LiveRoomChatRawMessageType.BIG_HEART_DONATION -> { handler.post { - addHeartMessage(nickname) + addHeartMessage(nickname, 3000L) viewModel.addHeartDonation(heartCount = message.can) addBigHeartAnimation(fromMessage = true) } @@ -1835,7 +1835,8 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB // endregion // region heart - private val heartNicknameList = mutableListOf() + private val heartMessageQueue = mutableListOf>() // Pair + private var currentHeartMessageDurationMs: Long = 1500L private var heartNickname = "" set(value) { field = value @@ -1843,12 +1844,14 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB if (field.isNotBlank()) { showHeartMessage() handler.postDelayed({ - if (heartNicknameList.isNotEmpty()) { - heartNickname = heartNicknameList.removeAt(0) + if (heartMessageQueue.isNotEmpty()) { + val (nextNickname, durationMs) = heartMessageQueue.removeAt(0) + currentHeartMessageDurationMs = durationMs + heartNickname = nextNickname } else { hideHeartMessage() } - }, 1500) + }, currentHeartMessageDurationMs) } } @@ -2066,7 +2069,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB SharedPreferenceManager.userId.toInt() ) handler.post { - addHeartMessage(nickname) + addHeartMessage(nickname, 1500L) addHeartAnimation() viewModel.addHeartDonation() } @@ -2119,7 +2122,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB SharedPreferenceManager.userId.toInt() ) handler.post { - addHeartMessage(nickname) + addHeartMessage(nickname, 3000L) addBigHeartAnimation() viewModel.addHeartDonation(100) } @@ -2138,11 +2141,13 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB } } - private fun addHeartMessage(nickname: String) { + private fun addHeartMessage(nickname: String, durationMs: Long) { if (heartNickname.isBlank()) { + // 현재 표시 시간 먼저 설정 후 표시 시작 + currentHeartMessageDurationMs = durationMs heartNickname = nickname } else { - heartNicknameList.add(nickname) + heartMessageQueue.add(nickname to durationMs) } }