|
|
@@ -11,7 +11,9 @@ import com.adealink.frame.mvvm.livedata.OnceMutableLiveData
|
|
|
import com.adealink.frame.mvvm.viewmodel.BaseViewModel
|
|
|
import com.adealink.weparty.commonui.toast.util.debugToast
|
|
|
import com.adealink.weparty.im.R
|
|
|
+import com.adealink.weparty.im.constant.ChatLimitError
|
|
|
import com.adealink.weparty.im.constant.IM_IN_BLACKLIST
|
|
|
+import com.adealink.weparty.im.constant.IM_USER_CHAT_LIMIT
|
|
|
import com.adealink.weparty.im.constant.IM_USER_NOT_FIND
|
|
|
import com.adealink.weparty.im.constant.InBlackError
|
|
|
import com.adealink.weparty.im.constant.UserNotFindError
|
|
|
@@ -19,6 +21,10 @@ import com.adealink.weparty.im.session.comp.input.InputAction
|
|
|
import com.adealink.weparty.im.session.comp.input.InputMachineTransaction
|
|
|
import com.adealink.weparty.im.session.comp.input.InputState
|
|
|
import com.adealink.weparty.im.session.comp.input.SessionInputMachine
|
|
|
+import com.adealink.weparty.im.session.mesasge.PlaymateSayWelcomeTextMessageBean
|
|
|
+import com.adealink.weparty.im.session.mesasge.PlaymateSayWelcomeVoiceMessageBean
|
|
|
+import com.adealink.weparty.module.im.data.sendIMMessageLD
|
|
|
+import com.adealink.weparty.module.playmate.PlaymateModule
|
|
|
import com.tencent.qcloud.tuicore.TUIConstants
|
|
|
import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean
|
|
|
import com.tencent.qcloud.tuikit.timcommon.component.interfaces.IUIKitCallback
|
|
|
@@ -27,6 +33,7 @@ import com.tencent.qcloud.tuikit.tuichat.component.progress.ProgressPresenter
|
|
|
import com.tencent.qcloud.tuikit.tuichat.presenter.ChatPresenter
|
|
|
import kotlinx.coroutines.launch
|
|
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
|
|
+import com.adealink.weparty.R as APP_R
|
|
|
|
|
|
|
|
|
data class SessionInputState(
|
|
|
@@ -129,6 +136,8 @@ class SessionInputViewModel : BaseViewModel() {
|
|
|
callback: IUIKitCallback<TUIMessageBean>?
|
|
|
): String? {
|
|
|
return suspendCancellableCoroutine { continuation ->
|
|
|
+ val lastMessage = presenter.loadedMessageList?.lastOrNull()
|
|
|
+
|
|
|
presenter.sendMessage(
|
|
|
message,
|
|
|
retry,
|
|
|
@@ -137,6 +146,8 @@ class SessionInputViewModel : BaseViewModel() {
|
|
|
override fun onSuccess(data: TUIMessageBean?) {
|
|
|
callback?.onSuccess(data)
|
|
|
sendMessageResultLD.send(Rlt.Success(data))
|
|
|
+ sendIMMessageLD.postValue(message)
|
|
|
+ onSendMessageSuccess(lastMessage, message)
|
|
|
}
|
|
|
|
|
|
override fun onError(module: String?, errCode: Int, errMsg: String?) {
|
|
|
@@ -151,6 +162,10 @@ class SessionInputViewModel : BaseViewModel() {
|
|
|
} else if (errCode == IM_USER_NOT_FIND) {
|
|
|
errorMessage = getCompatString(R.string.im_send_msg_error_user_not_find)
|
|
|
error = UserNotFindError()
|
|
|
+ } else if (errCode == IM_USER_CHAT_LIMIT) {
|
|
|
+ errorMessage =
|
|
|
+ getCompatString(APP_R.string.playmate_user_push_chat_limit)
|
|
|
+ error = ChatLimitError()
|
|
|
}
|
|
|
callback?.onError(errCode, errorMessage, message)
|
|
|
sendMessageResultLD.send(Rlt.Failed(error))
|
|
|
@@ -169,6 +184,19 @@ class SessionInputViewModel : BaseViewModel() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private fun onSendMessageSuccess(lastMessage: TUIMessageBean?, sendMessage: TUIMessageBean) {
|
|
|
+ val uid = chatInfo?.id
|
|
|
+ if (uid.isNullOrEmpty() || lastMessage == null) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (lastMessage is PlaymateSayWelcomeTextMessageBean
|
|
|
+ || lastMessage is PlaymateSayWelcomeVoiceMessageBean
|
|
|
+ ) {
|
|
|
+ //上一条消息是陪玩欢迎消息
|
|
|
+ PlaymateModule.reportWelcomeReply(uid)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
fun sendPhotoVideoMessage(original: Uri?, transcodeUri: Uri? = null) {
|
|
|
presenter?.sendPhotoVideoMessages(original, transcodeUri)
|
|
|
}
|