From ec096b5831f6da04708708006fa5d78372c3a61b Mon Sep 17 00:00:00 2001 From: klaus Date: Fri, 8 Mar 2024 00:51:43 +0900 Subject: [PATCH] =?UTF-8?q?=ED=9B=84=EC=9B=90=20-=20=EC=8B=9C=EA=B7=B8?= =?UTF-8?q?=EB=8B=88=EC=B2=98=20=ED=9B=84=EC=9B=90=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kr/co/vividnext/sodalive/live/LiveApi.kt | 2 +- .../vividnext/sodalive/live/LiveRepository.kt | 2 +- .../sodalive/live/room/LiveRoomActivity.kt | 41 +++++++++++++++---- .../sodalive/live/room/LiveRoomViewModel.kt | 4 +- .../live/room/chat/LiveRoomChatRawMessage.kt | 1 + .../main/res/layout/activity_live_room.xml | 12 ++++++ 6 files changed, 49 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt index e41099f..c086888 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveApi.kt @@ -160,7 +160,7 @@ interface LiveApi { fun donation( @Body request: LiveRoomDonationRequest, @Header("Authorization") authHeader: String - ): Single> + ): Single> @POST("/live/room/donation/refund/{id}") fun refundDonation( diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt index b3c5314..fd9a555 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/LiveRepository.kt @@ -163,7 +163,7 @@ class LiveRepository( can: Int, message: String, token: String - ): Single> { + ): Single> { return api.donation( request = LiveRoomDonationRequest( roomId = roomId, 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 dcca8c1..b0b5acb 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 @@ -30,6 +30,7 @@ import androidx.core.content.ContextCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import coil.transform.CircleCropTransformation +import com.bumptech.glide.Glide import com.github.dhaval2404.imagepicker.ImagePicker import com.google.gson.Gson import com.orhanobut.logger.Logger @@ -1254,16 +1255,18 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB private fun donation(can: Int, message: String) { val rawMessage = "${can}캔을 후원하셨습니다.\uD83D\uDCB0\uD83E\uDE99" - val donationRawMessage = Gson().toJson( - LiveRoomChatRawMessage( - type = LiveRoomChatRawMessageType.DONATION, - message = rawMessage, - can = can, - donationMessage = message - ) - ) - viewModel.donation(roomId, can, message) { + viewModel.donation(roomId, can, message) { signatureImage -> + val donationRawMessage = Gson().toJson( + LiveRoomChatRawMessage( + type = LiveRoomChatRawMessageType.DONATION, + message = rawMessage, + can = can, + signatureImageUrl = signatureImage, + donationMessage = message + ) + ) + agora.sendRawMessageToGroup( rawMessage = donationRawMessage.toByteArray(), onSuccess = { @@ -1283,6 +1286,7 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB ) invalidateChat() viewModel.addDonationCan(can) + showSignatureImage(signatureImage) } }, onFailure = { @@ -1389,6 +1393,9 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB ) invalidateChat() viewModel.addDonationCan(rawMessage.can) + showSignatureImage( + signatureImageUrl = rawMessage.signatureImageUrl ?: "" + ) } } @@ -1718,6 +1725,22 @@ class LiveRoomActivity : BaseActivity(ActivityLiveRoomB } } + private fun showSignatureImage(signatureImageUrl: String) { + if (signatureImageUrl.isNotBlank()) { + Glide + .with(this) + .asGif() + .load(signatureImageUrl) + .into(binding.ivSignature) + + binding.ivSignature.visibility = View.VISIBLE + handler.postDelayed({ + binding.ivSignature.setImageDrawable(null) + binding.ivSignature.visibility = View.GONE + }, 3500) + } + } + companion object { private const val noChattingTime = 180L } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt index 74bff62..884f036 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/LiveRoomViewModel.kt @@ -508,7 +508,7 @@ class LiveRoomViewModel( ) } - fun donation(roomId: Long, can: Int, message: String, onSuccess: () -> Unit) { + fun donation(roomId: Long, can: Int, message: String, onSuccess: (String) -> Unit) { _isLoading.postValue(true) compositeDisposable.add( repository.donation(roomId, can, message, "Bearer ${SharedPreferenceManager.token}") @@ -519,7 +519,7 @@ class LiveRoomViewModel( _isLoading.value = false if (it.success) { SharedPreferenceManager.can -= can - onSuccess() + onSuccess(it.data ?: "") } else { if (it.message != null) { _toastLiveData.postValue(it.message) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChatRawMessage.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChatRawMessage.kt index e04691e..0b4fcbe 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChatRawMessage.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChatRawMessage.kt @@ -6,6 +6,7 @@ data class LiveRoomChatRawMessage( @SerializedName("type") val type: LiveRoomChatRawMessageType, @SerializedName("message") val message: String, @SerializedName("can") val can: Int, + @SerializedName("signatureImageUrl") val signatureImageUrl: String? = null, @SerializedName("donationMessage") val donationMessage: String?, @SerializedName("isActiveRoulette") val isActiveRoulette: Boolean? = null ) diff --git a/app/src/main/res/layout/activity_live_room.xml b/app/src/main/res/layout/activity_live_room.xml index dad3c8c..d409c21 100644 --- a/app/src/main/res/layout/activity_live_room.xml +++ b/app/src/main/res/layout/activity_live_room.xml @@ -640,4 +640,16 @@ android:contentDescription="@null" android:src="@drawable/btn_message_send" /> + +