fix(live-room): BIG_HEART_DONATION 메시지 heartMessage 3초, HEART_DONATION 1.5초 표시 적용

왜: BIG_HEART_DONATION 수신 시 heartMessage 표시 시간이 요구사항(3초)에 맞지 않았음. 무엇: heartMessage 표시 로직을 닉네임+표시시간 큐로 변경하고, HEART(1.5초)/BIG_HEART(3초)를 각 호출부에서 반영. 영향: 애니메이션 로직 변경 없음.
This commit is contained in:
2025-11-06 17:35:08 +09:00
parent c0d998345d
commit 1e8a96a52b

View File

@@ -1686,7 +1686,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
LiveRoomChatRawMessageType.HEART_DONATION -> { LiveRoomChatRawMessageType.HEART_DONATION -> {
handler.post { handler.post {
addHeartMessage(nickname) addHeartMessage(nickname, 1500L)
viewModel.addHeartDonation() viewModel.addHeartDonation()
addHeartAnimation() addHeartAnimation()
} }
@@ -1694,7 +1694,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
LiveRoomChatRawMessageType.BIG_HEART_DONATION -> { LiveRoomChatRawMessageType.BIG_HEART_DONATION -> {
handler.post { handler.post {
addHeartMessage(nickname) addHeartMessage(nickname, 3000L)
viewModel.addHeartDonation(heartCount = message.can) viewModel.addHeartDonation(heartCount = message.can)
addBigHeartAnimation(fromMessage = true) addBigHeartAnimation(fromMessage = true)
} }
@@ -1835,7 +1835,8 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
// endregion // endregion
// region heart // region heart
private val heartNicknameList = mutableListOf<String>() private val heartMessageQueue = mutableListOf<Pair<String, Long>>() // Pair<nickname, durationMs>
private var currentHeartMessageDurationMs: Long = 1500L
private var heartNickname = "" private var heartNickname = ""
set(value) { set(value) {
field = value field = value
@@ -1843,12 +1844,14 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
if (field.isNotBlank()) { if (field.isNotBlank()) {
showHeartMessage() showHeartMessage()
handler.postDelayed({ handler.postDelayed({
if (heartNicknameList.isNotEmpty()) { if (heartMessageQueue.isNotEmpty()) {
heartNickname = heartNicknameList.removeAt(0) val (nextNickname, durationMs) = heartMessageQueue.removeAt(0)
currentHeartMessageDurationMs = durationMs
heartNickname = nextNickname
} else { } else {
hideHeartMessage() hideHeartMessage()
} }
}, 1500) }, currentHeartMessageDurationMs)
} }
} }
@@ -2066,7 +2069,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
SharedPreferenceManager.userId.toInt() SharedPreferenceManager.userId.toInt()
) )
handler.post { handler.post {
addHeartMessage(nickname) addHeartMessage(nickname, 1500L)
addHeartAnimation() addHeartAnimation()
viewModel.addHeartDonation() viewModel.addHeartDonation()
} }
@@ -2119,7 +2122,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
SharedPreferenceManager.userId.toInt() SharedPreferenceManager.userId.toInt()
) )
handler.post { handler.post {
addHeartMessage(nickname) addHeartMessage(nickname, 3000L)
addBigHeartAnimation() addBigHeartAnimation()
viewModel.addHeartDonation(100) viewModel.addHeartDonation(100)
} }
@@ -2138,11 +2141,13 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
} }
} }
private fun addHeartMessage(nickname: String) { private fun addHeartMessage(nickname: String, durationMs: Long) {
if (heartNickname.isBlank()) { if (heartNickname.isBlank()) {
// 현재 표시 시간 먼저 설정 후 표시 시작
currentHeartMessageDurationMs = durationMs
heartNickname = nickname heartNickname = nickname
} else { } else {
heartNicknameList.add(nickname) heartMessageQueue.add(nickname to durationMs)
} }
} }