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 -> {
handler.post {
addHeartMessage(nickname)
addHeartMessage(nickname, 1500L)
viewModel.addHeartDonation()
addHeartAnimation()
}
@@ -1694,7 +1694,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(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<ActivityLiveRoomBinding>(ActivityLiveRoomB
// endregion
// 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 = ""
set(value) {
field = value
@@ -1843,12 +1844,14 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(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<ActivityLiveRoomBinding>(ActivityLiveRoomB
SharedPreferenceManager.userId.toInt()
)
handler.post {
addHeartMessage(nickname)
addHeartMessage(nickname, 1500L)
addHeartAnimation()
viewModel.addHeartDonation()
}
@@ -2119,7 +2122,7 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
SharedPreferenceManager.userId.toInt()
)
handler.post {
addHeartMessage(nickname)
addHeartMessage(nickname, 3000L)
addBigHeartAnimation()
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()) {
// 현재 표시 시간 먼저 설정 후 표시 시작
currentHeartMessageDurationMs = durationMs
heartNickname = nickname
} else {
heartNicknameList.add(nickname)
heartMessageQueue.add(nickname to durationMs)
}
}