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:
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user