初步替换IM接口

This commit is contained in:
2025-09-08 15:13:17 +08:00
parent 1d632fb757
commit 1a41cb7aef
20 changed files with 846 additions and 773 deletions

View File

@@ -1,24 +1,26 @@
package com.aiosman.ravenow.utils
import com.tencent.imsdk.v2.V2TIMCallback
import com.tencent.imsdk.v2.V2TIMManager
import com.tencent.imsdk.v2.V2TIMUserFullInfo
import com.tencent.imsdk.v2.V2TIMValueCallback
import io.openim.android.sdk.OpenIMClient
import io.openim.android.sdk.listener.OnBase
import io.openim.android.sdk.models.UserInfo
import io.openim.android.sdk.models.UserInfoReq
import kotlin.coroutines.suspendCoroutine
object TrtcHelper {
suspend fun loadUnreadCount(): Long {
return suspendCoroutine { continuation ->
V2TIMManager.getConversationManager()
.getTotalUnreadMessageCount(object : V2TIMValueCallback<Long> {
override fun onSuccess(t: Long?) {
continuation.resumeWith(Result.success(t ?: 0))
OpenIMClient.getInstance().conversationManager
.getTotalUnreadMsgCount(object : OnBase<String> {
override fun onSuccess(data: String?) {
// OpenIM 返回的是字符串格式的数字
val count = data?.toLongOrNull() ?: 0L
continuation.resumeWith(Result.success(count))
}
override fun onError(code: Int, desc: String?) {
continuation.resumeWith(Result.failure(Exception("Error $code: $desc")))
override fun onError(code: Int, error: String?) {
continuation.resumeWith(Result.failure(Exception("Error $code: $error")))
}
});
})
}
}
@@ -26,19 +28,20 @@ object TrtcHelper {
avatar: String?,
nickName: String?
) {
val info = V2TIMUserFullInfo()
nickName?.let { info.setNickname(it) }
avatar?.let { info.faceUrl = it }
val infoReq = UserInfoReq()
nickName?.let { infoReq.nickname = it }
avatar?.let { infoReq.faceURL = it }
return suspendCoroutine { continuation ->
V2TIMManager.getInstance().setSelfInfo(info, object : V2TIMCallback {
override fun onError(code: Int, desc: String?) {
continuation.resumeWith(Result.failure(Exception("Error $code: $desc")))
//(OnBase<String> base, UserInfoReq userInfoReq
OpenIMClient.getInstance().userInfoManager.setSelfInfo(object : OnBase<String> {
override fun onError(code: Int, error: String?) {
continuation.resumeWith(Result.failure(Exception("Error $code: $error")))
}
override fun onSuccess() {
override fun onSuccess(data: String?) {
continuation.resumeWith(Result.success(Unit))
}
})
},infoReq)
}
}
}