From 96a3ef44f68faba5af3235b6400d5b1601124b47 Mon Sep 17 00:00:00 2001
From: klaus <klaus@vividnext.co.kr>
Date: Thu, 17 Oct 2024 15:01:05 +0900
Subject: [PATCH] =?UTF-8?q?=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EB=B0=A9=20-=20?=
 =?UTF-8?q?=ED=95=98=ED=8A=B8=20=ED=9B=84=EC=9B=90=EC=8B=9C=20=EC=B1=84?=
 =?UTF-8?q?=ED=8C=85=EC=9C=BC=EB=A1=9C=20=EC=95=8C=EB=A6=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../sodalive/live/room/LiveRoomActivity.kt    |  8 +++++
 .../sodalive/live/room/chat/LiveRoomChat.kt   | 34 +++++++++++++++++++
 .../drawable/bg_round_corner_4_7_ccff7488.xml |  8 +++++
 app/src/main/res/values/colors.xml            |  1 +
 4 files changed, 51 insertions(+)
 create mode 100644 app/src/main/res/drawable/bg_round_corner_4_7_ccff7488.xml

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 1d56880..64c06da 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
@@ -74,6 +74,7 @@ import kr.co.vividnext.sodalive.live.room.chat.LiveRoomChatRawMessage
 import kr.co.vividnext.sodalive.live.room.chat.LiveRoomChatRawMessageType
 import kr.co.vividnext.sodalive.live.room.chat.LiveRoomDonationChat
 import kr.co.vividnext.sodalive.live.room.chat.LiveRoomDonationStatusChat
+import kr.co.vividnext.sodalive.live.room.chat.LiveRoomHeartDonationChat
 import kr.co.vividnext.sodalive.live.room.chat.LiveRoomJoinChat
 import kr.co.vividnext.sodalive.live.room.chat.LiveRoomNormalChat
 import kr.co.vividnext.sodalive.live.room.chat.LiveRoomRouletteDonationChat
@@ -1124,7 +1125,12 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
                             agora.sendRawMessageToGroup(
                                 rawMessage = donationRawMessage.toByteArray(),
                                 onSuccess = {
+                                    val nickname = viewModel.getUserNickname(
+                                        SharedPreferenceManager.userId.toInt()
+                                    )
                                     handler.post {
+                                        chatAdapter.items.add(LiveRoomHeartDonationChat(nickname))
+                                        invalidateChat()
                                         addHeartAnimation()
                                         lifecycleScope.launch { viewModel.addHeartDonation() }
                                     }
@@ -1745,6 +1751,8 @@ class LiveRoomActivity : BaseActivity<ActivityLiveRoomBinding>(ActivityLiveRoomB
 
                             LiveRoomChatRawMessageType.HEART_DONATION -> {
                                 handler.post {
+                                    chatAdapter.items.add(LiveRoomHeartDonationChat(nickname))
+                                    invalidateChat()
                                     addHeartAnimation()
                                     lifecycleScope.launch { viewModel.addHeartDonation() }
                                 }
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChat.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChat.kt
index 9f51087..27947e6 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChat.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/chat/LiveRoomChat.kt
@@ -76,6 +76,7 @@ data class LiveRoomJoinChat(
         )
 
         (binding as ItemLiveRoomJoinChatBinding).tvJoin.text = spStr
+        binding.root.setBackgroundResource(R.drawable.bg_round_corner_4_7_cc004462)
     }
 }
 
@@ -399,3 +400,36 @@ data class LiveRoomRouletteDonationChat(
         itemBinding.root.setPadding(33)
     }
 }
+
+@Keep
+data class LiveRoomHeartDonationChat(
+    val nickname: String
+) : LiveRoomChat() {
+    override var type = LiveRoomChatType.JOIN
+    override fun bind(context: Context, binding: ViewBinding, onClickProfile: ((Long) -> Unit)?) {
+        val str = "'$nickname'님이 마음을 전했습니다\uD83D\uDC95"
+        val spStr = SpannableString(str)
+
+        spStr.setSpan(
+            ForegroundColorSpan(
+                ContextCompat.getColor(
+                    context,
+                    R.color.color_ffdc00
+                )
+            ),
+            str.indexOf("'") + 1,
+            str.indexOf("'님"),
+            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
+        )
+
+        spStr.setSpan(
+            StyleSpan(Typeface.BOLD),
+            str.indexOf("'"),
+            str.indexOf("'님"),
+            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
+        )
+
+        (binding as ItemLiveRoomJoinChatBinding).tvJoin.text = spStr
+        binding.root.setBackgroundResource(R.drawable.bg_round_corner_4_7_ccff7488)
+    }
+}
diff --git a/app/src/main/res/drawable/bg_round_corner_4_7_ccff7488.xml b/app/src/main/res/drawable/bg_round_corner_4_7_ccff7488.xml
new file mode 100644
index 0000000..8ad99a6
--- /dev/null
+++ b/app/src/main/res/drawable/bg_round_corner_4_7_ccff7488.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/color_ccff7488" />
+    <corners android:radius="4.7dp" />
+    <stroke
+        android:width="1dp"
+        android:color="@color/color_ccff7488" />
+</shape>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 7caa10c..166a016 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -125,4 +125,5 @@
     <color name="color_ff14d9">#FF14D9</color>
     <color name="color_333bb9f1">#333BB9F1</color>
     <color name="color_672bff">#672BFF</color>
+    <color name="color_ccff7488">#CCFF7488</color>
 </resources>