DoggyZhang 1 год назад
Родитель
Сommit
54cbe15833

+ 0 - 21
app/src/main/java/com/adealink/weparty/module/room/chat/data/ChatData.kt

@@ -1,7 +1,5 @@
 package com.adealink.weparty.module.room.chat.data
 
-import com.adealink.frame.locale.language.data.MultiLanguageString
-import com.google.gson.annotations.GsonNullable
 import com.google.gson.annotations.JsonAdapter
 import com.google.gson.annotations.Must
 import com.google.gson.annotations.SerializedName
@@ -76,22 +74,3 @@ data class RoomChatOpItem(
     val op: ChatOperate,
     val selected: Boolean
 )
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class SayHiConfig(
-    @GsonNullable
-    @SerializedName("content") val content: MultiLanguageString? = null,
-    @GsonNullable
-    @SerializedName("regionGifts") val regionGifts: Map<String, List<Long>>? = null
-) {
-    fun getContentBy(language: String?): String? {
-        return content?.getString(language)
-    }
-}
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class SayHiMessageData(
-    @SerializedName("toUid") val toUid: Long,
-    @SerializedName("giftId") val giftId: Long,
-    @SerializedName("giftIconUrl") val giftIconUrl: String
-)

+ 1 - 7
app/src/main/java/com/adealink/weparty/module/room/chat/data/Message.kt

@@ -206,9 +206,6 @@ interface AtUserContent {
 data class TextMsgContent(@SerializedName("text") val text: String) :
     DataBindingSpanContent(MessageType.TEXT), AtUserContent {
 
-    @SerializedName("sayHiGifts")
-    var sayHiGifts: List<SayHiMessageData>? = null
-
     override fun existAtMe(): Boolean {
         val atUserList = getDataSpanBy(DataBindingSpanType.AT_USER)
         return atUserList.find {
@@ -294,8 +291,6 @@ data class EnterNotificationMsgContent(
     @SerializedName("currencySeller") val currencySeller: Boolean = false,
 ) : Content(MessageType.ENTER_NOTIFICATION) {
 
-    var clickSayHi: Boolean = false
-
     override fun isValid(): Boolean = userNick.isNotEmpty()
 
     override fun areItemsTheSame(newItem: Content): Boolean {
@@ -315,11 +310,10 @@ data class EnterNotificationMsgContent(
                 && this.highPotential == other.highPotential
                 && this.userNick == other.userNick
                 && this.currencySeller == other.currencySeller
-                && this.clickSayHi == other.clickSayHi
     }
 
     override fun toString(): String {
-        return "EnterNotificationMsgContent(name='$userNick') ${super.toString()}, isClickSayHi:$clickSayHi"
+        return "EnterNotificationMsgContent(name='$userNick') ${super.toString()}"
     }
 }
 

+ 0 - 20
module/room/src/main/java/com/adealink/weparty/room/chat/ChatMessageFragment.kt

@@ -44,7 +44,6 @@ import com.adealink.weparty.module.room.RoomModule
 import com.adealink.weparty.module.room.chat.data.EmotionMsgContent
 import com.adealink.weparty.module.room.chat.data.Message
 import com.adealink.weparty.module.room.chat.data.MessageType
-import com.adealink.weparty.module.room.chat.data.SayHiMessageData
 import com.adealink.weparty.module.room.chat.data.TextMsgContent
 import com.adealink.weparty.module.room.chat.livemessage.LiveMessageAdapter
 import com.adealink.weparty.module.room.chat.livemessage.LiveMessageRecyclerHelper
@@ -83,7 +82,6 @@ import com.adealink.weparty.room.chat.listener.IMessageOperaListener
 import com.adealink.weparty.room.chat.viewmodel.ChatMessageViewModel
 import com.adealink.weparty.room.databinding.DialogMessageOperatorLayoutBinding
 import com.adealink.weparty.room.databinding.FragmentChatMessageBinding
-import com.adealink.weparty.room.gift.SendGiftFromChatDialog
 import com.adealink.weparty.room.luckynumber.PLAY_SWITCH_OPEN
 import com.adealink.weparty.room.member.RoomMemberInfoFragment
 import com.adealink.weparty.room.member.listener.IMemberMedalListener
@@ -292,7 +290,6 @@ class ChatMessageFragment : BaseFragment(R.layout.fragment_chat_message), IMessa
     override fun loadData() {
         super.loadData()
         loadMessages()
-        chatMessageViewModel.loadSayHiConfig(true)
     }
 
     private fun loadMessages() {
@@ -391,23 +388,6 @@ class ChatMessageFragment : BaseFragment(R.layout.fragment_chat_message), IMessa
         popup.show(view)
     }
 
-    override fun showSayHi(): Boolean {
-        return chatMessageViewModel.sayHiConfig != null
-    }
-
-    override fun sayHi(toUid: Long, message: Message) {
-        chatMessageViewModel.sayHi(toUid, message)
-    }
-
-    override fun sendSayHiGift(sayHiData: SayHiMessageData) {
-        activity?.let { act ->
-            showDialogFragment<SendGiftFromChatDialog>(act.supportFragmentManager, Bundle().apply {
-                putLong(Room.SendGiftFromChatDialog.EXTRA_TO_UID, sayHiData.toUid)
-                putLong(Room.SendGiftFromChatDialog.EXTRA_GIFT_ID, sayHiData.giftId)
-            })
-        }
-    }
-
     override fun getAndDownloadEmotionResultPath(
         emotionType: Int,
         emotionId: Int,

+ 3 - 21
module/room/src/main/java/com/adealink/weparty/room/chat/adapter/EnterNotificationViewBinder.kt

@@ -8,19 +8,16 @@ import android.view.View
 import android.view.ViewGroup
 import com.adealink.frame.aab.util.getCompatDrawable
 import com.adealink.frame.aab.util.getCompatString
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
+import com.adealink.frame.ext.safeSetSpan
+import com.adealink.frame.util.DisplayUtil
 import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
 import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
 import com.adealink.weparty.commonui.widget.CenterImageSpan
 import com.adealink.weparty.commonui.widget.ColorClickSpan
-import com.adealink.frame.ext.safeSetSpan
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.weparty.module.profile.ProfileModule
 import com.adealink.weparty.module.profile.view.UserNameTextView
-import com.adealink.weparty.room.R
 import com.adealink.weparty.module.room.chat.data.EnterNotificationMsgContent
 import com.adealink.weparty.module.room.chat.data.Message
+import com.adealink.weparty.room.R
 import com.adealink.weparty.room.chat.listener.ITextMessageOperaListener
 import com.adealink.weparty.room.databinding.ItemEnterNotificationBinding
 import com.adealink.weparty.R as APP_R
@@ -43,21 +40,6 @@ class EnterNotificationViewBinder(
         fun update(message: Message) {
             val content = message.content as? EnterNotificationMsgContent ?: return
             setEnterRoomText(content)
-
-            if (!content.clickSayHi
-                && content.uid != ProfileModule.getMyUid()
-                && content.showNewTag
-                && l.showSayHi()
-            ) {
-                binding.ivSayHi.show()
-                binding.ivSayHi.setOnClickListener {
-                    content.clickSayHi = true
-                    binding.ivSayHi.gone()
-                    l.sayHi(content.uid, message)
-                }
-            } else {
-                binding.ivSayHi.gone()
-            }
         }
 
         private fun setEnterRoomText(content: EnterNotificationMsgContent) {

+ 0 - 17
module/room/src/main/java/com/adealink/weparty/room/chat/adapter/TextMessageViewBinder.kt

@@ -6,13 +6,10 @@ import android.view.ViewGroup
 import androidx.fragment.app.Fragment
 import com.adealink.frame.aab.util.getCompatColor
 import com.adealink.frame.ext.safeSubList
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
 import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
 import com.adealink.weparty.commonui.text.DataBindingSpanHelper
 import com.adealink.weparty.commonui.text.span.AtUserDataBindingSpan
 import com.adealink.weparty.commonui.text.span.DataBindingSpan
-import com.adealink.weparty.module.profile.ProfileModule
 import com.adealink.weparty.module.profile.data.UserInfo
 import com.adealink.weparty.module.profile.view.UserNameTextView
 import com.adealink.weparty.module.room.chat.data.Message
@@ -89,20 +86,6 @@ class TextMessageViewBinder(
             }
             binding.memberInfoView.updateRoomRoleLabel(memberRoomRoleLister.getMemberRole(sendUid))
 
-            //附带的送礼信息(仅消息发送者能看到)
-            if (message.sendUid != ProfileModule.getMyUid() || content.sayHiGifts.isNullOrEmpty()) {
-                binding.ivSendGift.gone()
-            } else {
-                binding.ivSendGift.show()
-                val sayHiData = content.sayHiGifts?.firstOrNull()
-                binding.ivSendGift.setImageUrl(sayHiData?.giftIconUrl)
-                binding.ivSendGift.setOnClickListener {
-                    sayHiData?.let {
-                        l.sendSayHiGift(it)
-                    }
-                }
-            }
-
         }
 
         private fun setMsgText(content: TextMsgContent) {

+ 0 - 9
module/room/src/main/java/com/adealink/weparty/room/chat/listener/IMessageOperaListener.kt

@@ -2,7 +2,6 @@ package com.adealink.weparty.room.chat.listener
 
 import android.view.View
 import com.adealink.weparty.module.room.chat.data.Message
-import com.adealink.weparty.module.room.chat.data.SayHiMessageData
 
 /**
  * Created by sunxiaodong on 2021/4/19.
@@ -13,14 +12,6 @@ interface ITextMessageOperaListener {
     fun onAvatarClick(uid: Long)
 
     fun popupMessageOpWindow(view: View, message: Message)
-
-
-    //新人入场sayHi
-    fun showSayHi(): Boolean
-
-    fun sayHi(toUid: Long, message: Message)
-
-    fun sendSayHiGift(sayHiData: SayHiMessageData)
 }
 
 interface ISystemMessageOperaListener {

+ 0 - 90
module/room/src/main/java/com/adealink/weparty/room/chat/viewmodel/ChatMessageViewModel.kt

@@ -1,14 +1,10 @@
 package com.adealink.weparty.room.chat.viewmodel
 
 import android.text.Editable
-import android.text.SpannableStringBuilder
 import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
-import com.adealink.frame.aab.util.getCompatString
 import com.adealink.frame.base.Rlt
-import com.adealink.frame.data.json.froJsonErrorNull
 import com.adealink.frame.data.json.toJsonErrorNull
-import com.adealink.frame.locale.language.languageManager
 import com.adealink.frame.log.Log
 import com.adealink.frame.mvvm.livedata.ExtLiveData
 import com.adealink.frame.mvvm.livedata.ExtMutableLiveData
@@ -18,12 +14,7 @@ import com.adealink.frame.network.ISocketNotify
 import com.adealink.frame.network.data.Res
 import com.adealink.frame.oss.data.UploadFile
 import com.adealink.weparty.App
-import com.adealink.weparty.commonui.text.DataBindingSpanHelper
-import com.adealink.weparty.commonui.text.span.AtUserDataBindingSpan
 import com.adealink.weparty.config.GlobalConfigType
-import com.adealink.weparty.config.IGlobalConfigListener
-import com.adealink.weparty.config.globalConfigManager
-import com.adealink.weparty.module.gift.GiftModule
 import com.adealink.weparty.module.operation.OperationModule
 import com.adealink.weparty.module.profile.ProfileModule
 import com.adealink.weparty.module.room.RoomModule
@@ -31,19 +22,13 @@ import com.adealink.weparty.module.room.chat.data.ChatOperate
 import com.adealink.weparty.module.room.chat.data.ChatOperateReq
 import com.adealink.weparty.module.room.chat.data.ChatOperateRes
 import com.adealink.weparty.module.room.chat.data.ChatStatusNotify
-import com.adealink.weparty.module.room.chat.data.EnterNotificationMsgContent
 import com.adealink.weparty.module.room.chat.data.Message
-import com.adealink.weparty.module.room.chat.data.MessageType
 import com.adealink.weparty.module.room.chat.data.PictureCheckReq
-import com.adealink.weparty.module.room.chat.data.SayHiConfig
-import com.adealink.weparty.module.room.chat.data.SayHiMessageData
-import com.adealink.weparty.module.room.chat.data.TextMsgContent
 import com.adealink.weparty.module.room.data.AdminPermissionSettingMap
 import com.adealink.weparty.module.room.data.AtMeMessage
 import com.adealink.weparty.module.room.data.TAG_BELL_INVITED
 import com.adealink.weparty.module.room.viewmodel.IChatMessageViewModel
 import com.adealink.weparty.module.room.viewmodel.chat.IAdminPermissionViewModel
-import com.adealink.weparty.room.R
 import com.adealink.weparty.room.chat.data.MessageContentCompetitiveWordsError
 import com.adealink.weparty.room.chat.data.MessageContentInvalidError
 import com.adealink.weparty.room.chat.data.TAG_ROOM_CHAT
@@ -65,7 +50,6 @@ import kotlinx.coroutines.launch
  */
 class ChatMessageViewModel : BaseViewModel(),
     IChatMessageViewModel,
-    IGlobalConfigListener,
     IAdminPermissionViewModel {
 
     override val messagesLD: LiveData<List<Message>> = MutableLiveData()
@@ -83,7 +67,6 @@ class ChatMessageViewModel : BaseViewModel(),
     val atMeMsgLD = ExtMutableLiveData<AtMeMessage?>()
     val historyInputLD = MutableLiveData<Editable?>()
     var luckNumberStatusLD: LiveData<String> = MutableLiveData()
-    var sayHiConfig: SayHiConfig? = null
 
     private val roomSocketService by lazy {
         App.instance.networkService.getSocketService(RoomSocketService::class.java)
@@ -140,7 +123,6 @@ class ChatMessageViewModel : BaseViewModel(),
         App.instance.networkService.subscribeNotify(adminRoomPrivilegeNotify)
         chatMessageManager.onRoomIn(joinController.getJoinedRoomId())
         chatMessageManager.addListener(this)
-        globalConfigManager.addListener(GlobalConfigType.GLOBAL_WELCOME_NEW_SAY_HI, this)
     }
 
     override fun sendChatMessage(message: Message): LiveData<Rlt<Any>> {
@@ -349,7 +331,6 @@ class ChatMessageViewModel : BaseViewModel(),
         App.instance.networkService.unSubscribeNotify(roomClearRoomChatDataNotify)
         App.instance.networkService.unSubscribeNotify(adminRoomPrivilegeNotify)
         chatMessageManager.removeListener(this)
-        globalConfigManager.removeListener(GlobalConfigType.GLOBAL_WELCOME_NEW_SAY_HI, this)
     }
 
     override fun onMessageChanged(messages: List<Message>) {
@@ -380,12 +361,6 @@ class ChatMessageViewModel : BaseViewModel(),
         return chatMessageManager.getLastAtMeMessage()
     }
 
-    fun loadSayHiConfig(forceNet: Boolean) {
-        viewModelScope.launch {
-            globalConfigManager.getGlobalConfig(forceNet, GlobalConfigType.GLOBAL_WELCOME_NEW_SAY_HI)
-        }
-    }
-
     fun loadLuckNumberConfig() {
         viewModelScope.launch {
             val roomId = RoomModule.getJoinedRoomId() ?: return@launch
@@ -413,71 +388,6 @@ class ChatMessageViewModel : BaseViewModel(),
         luckNumberStatusLD.send(luckNumberState)
     }
 
-
-    fun sayHi(toUid: Long, message: Message) {
-        //更新sayHi Message状态
-        (message.content as? EnterNotificationMsgContent)?.let { content ->
-            content.clickSayHi = true
-            chatMessageManager.updateMessage(message)
-        }
-        //发送sayHi消息
-        if (toUid == 0L) {
-            Log.d(TAG_ROOM_CHAT, "sayHi return, for toUid is 0")
-            return
-        }
-        viewModelScope.launch {
-            val toUserInfo = (ProfileModule.getUserInfoByUid(toUid) as? Rlt.Success)?.data
-            if (toUserInfo == null) {
-                Log.d(TAG_ROOM_CHAT, "sayHi return, for toUserInfo is null")
-                return@launch
-            }
-            val config = sayHiConfig
-            val ssb = SpannableStringBuilder()
-            //添加@信息
-            ssb.append(
-                DataBindingSpanHelper.newSpannable(
-                    AtUserDataBindingSpan(toUid, toUserInfo.name)
-                )
-            )
-            //添加欢迎语
-            ssb.append(
-                config?.getContentBy(languageManager?.getLanguageCode()) ?: getCompatString(R.string.room_chat_message_say_hi)
-            )
-            //添加礼物
-            val msgContent = TextMsgContent(ssb.toString()).apply {
-                var giftId: Long? = null
-                if (!toUserInfo.region.isNullOrEmpty()) {
-                    giftId = config?.regionGifts?.get(toUserInfo.region)?.randomOrNull()
-                }
-                if (giftId != null) {
-                    (GiftModule.getGift(giftId) as? Rlt.Success)?.let {
-                        it.data?.let { info ->
-                            sayHiGifts = listOf(SayHiMessageData(toUid, giftId, info.iconUrl))
-                        }
-                    }
-                }
-            }
-            //检查是否有数据绑定的Span信息
-            msgContent.fillDataBindingSpansBy(ssb)
-            sendChatMessage(
-                Message.crateMessage(
-                    MessageType.TEXT,
-                    msgContent
-                )
-            )
-        }
-    }
-
-    override fun onConfigGet(configType: GlobalConfigType, config: List<String>) {
-        if (configType == GlobalConfigType.GLOBAL_WELCOME_NEW_SAY_HI) {
-            val configJson = config.firstOrNull()
-            if (!configJson.isNullOrEmpty()) {
-                sayHiConfig = froJsonErrorNull(configJson, SayHiConfig::class.java)
-            }
-        }
-
-    }
-
     override fun clearRoomChat(): LiveData<Rlt<Boolean>> {
         val liveData = OnceMutableLiveData<Rlt<Boolean>>()
         viewModelScope.launch {

BIN
module/room/src/main/res/drawable-xhdpi/room_chat_message_say_hi_ic.png


+ 1 - 15
module/room/src/main/res/layout/item_enter_notification.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:paddingStart="12dp"
@@ -26,24 +25,11 @@
             android:textSize="13sp"
             app:layout_constrainedWidth="true"
             app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toStartOf="@id/iv_say_hi"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHorizontal_bias="0"
             app:layout_constraintHorizontal_chainStyle="packed"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_say_hi"
-            android:layout_width="30dp"
-            android:layout_height="20dp"
-            android:layout_marginStart="10dp"
-            android:visibility="gone"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@id/tv_enter_room"
-            app:layout_constraintTop_toTopOf="parent"
-            app:srcCompat="@drawable/room_chat_message_say_hi_ic"
-            tools:visibility="visible" />
-
     </LinearLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 1 - 17
module/room/src/main/res/layout/item_message_text.xml

@@ -37,29 +37,13 @@
             android:textColorHighlight="@color/transparent"
             android:textSize="13sp"
             app:layout_constrainedWidth="true"
-            app:layout_constraintEnd_toStartOf="@id/iv_send_gift"
+            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHorizontal_bias="0"
             app:layout_constraintHorizontal_chainStyle="packed"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
             tools:text="Don’t make me laugh!You bad guy a and make me laugh!!! Don’t make me laugh!You bad guy a and make me laugh!!!" />
 
-        <com.adealink.frame.image.view.NetworkImageView
-            android:id="@+id/iv_send_gift"
-            android:layout_width="38dp"
-            android:layout_height="28dp"
-            android:layout_marginStart="10dp"
-            android:visibility="gone"
-            app:actualImageScaleType="fitCenter"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toEndOf="@id/msg"
-            app:layout_constraintTop_toTopOf="parent"
-            app:roundedCornerRadius="4dp"
-            app:roundingBorderColor="@color/white"
-            app:roundingBorderWidth="1dp"
-            tools:visibility="visible" />
-
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 </androidx.constraintlayout.widget.ConstraintLayout>