Browse Source

feat: 通知栏标题

DoggyZhang 1 tháng trước cách đây
mục cha
commit
3470d33858

+ 3 - 0
app/src/main/java/com/adealink/weparty/module/im/IIMService.kt

@@ -2,8 +2,11 @@ package com.adealink.weparty.module.im
 
 import com.adealink.frame.startup.IAppStartUpTask
 import com.adealink.weparty.aab.IService
+import com.adealink.weparty.module.profile.data.UserInfo
 
 interface IIMService : IService<IIMService>, IAppStartUpTask {
 
     fun isLogin(): Boolean
+
+    fun updateIMSelfInfo(userInfo: UserInfo?)
 }

+ 8 - 0
app/src/main/java/com/adealink/weparty/module/im/IMModule.kt

@@ -3,6 +3,7 @@ package com.adealink.weparty.module.im
 import android.app.Application
 import com.adealink.frame.aab.BaseDynamicModule
 import com.adealink.weparty.R
+import com.adealink.weparty.module.profile.data.UserInfo
 
 object IMModule : BaseDynamicModule<IIMService>(IIMService::class), IIMService {
 
@@ -36,6 +37,9 @@ object IMModule : BaseDynamicModule<IIMService>(IIMService::class), IIMService {
             override fun isLogin(): Boolean {
                 return false
             }
+
+            override fun updateIMSelfInfo(userInfo: UserInfo?) {
+            }
         }
     }
 
@@ -63,4 +67,8 @@ object IMModule : BaseDynamicModule<IIMService>(IIMService::class), IIMService {
         return getService().isLogin()
     }
 
+    override fun updateIMSelfInfo(userInfo: UserInfo?) {
+        getService().updateIMSelfInfo(userInfo)
+    }
+
 }

+ 9 - 1
module/im/src/main/java/com/adealink/weparty/im/IMServiceImpl.kt

@@ -4,7 +4,6 @@ import android.app.Application
 import com.adealink.frame.base.AppBase
 import com.adealink.frame.log.Log
 import com.adealink.frame.spi.RegisterService
-import com.adealink.weparty.BuildConfig
 import com.adealink.weparty.im.constant.OFFICIAL_IMAGE_TEXT_BUSINESS_ID
 import com.adealink.weparty.im.constant.PLAYMATE_ORDER_BUSINESS_ID
 import com.adealink.weparty.im.constant.TAG_IM_PUSH
@@ -15,6 +14,8 @@ import com.adealink.weparty.im.session.mesasge.CustomMessageViewHolder
 import com.adealink.weparty.im.session.mesasge.OfficialImageTextMessageBean
 import com.adealink.weparty.im.session.mesasge.PlaymateOrderMessageBean
 import com.adealink.weparty.module.im.IIMService
+import com.adealink.weparty.module.profile.ProfileModule
+import com.adealink.weparty.module.profile.data.UserInfo
 import com.tencent.qcloud.tim.push.TIMPushListener
 import com.tencent.qcloud.tim.push.TIMPushManager
 import com.tencent.qcloud.tuicore.TUIConfig
@@ -33,6 +34,9 @@ class IMServiceImpl : IIMService {
 
     override fun appOnCreateMainTask(application: Application) {
         TUIConfig.enableOpenTencentPage = !AppBase.isRelease
+        val myUserInfo = ProfileModule.getMyUserInfo()
+        TUIConfig.setSelfFaceUrl(myUserInfo?.avatar)
+        TUIConfig.setSelfNickName(myUserInfo?.nickName)
 
         //注册自定义消息类型
         TUIChatConfigs.registerCustomMessage(
@@ -80,4 +84,8 @@ class IMServiceImpl : IIMService {
         return imLoginManager.isLogin()
     }
 
+    override fun updateIMSelfInfo(userInfo: UserInfo?) {
+        imLoginManager.updateSelfUserInfo(userInfo)
+    }
+
 }

+ 3 - 0
module/im/src/main/java/com/adealink/weparty/im/manager/login/ILoginManager.kt

@@ -2,6 +2,7 @@ package com.adealink.weparty.im.manager.login
 
 import android.app.Application
 import com.adealink.frame.frame.IBaseFrame
+import com.adealink.weparty.module.profile.data.UserInfo
 
 interface ILoginManager : IBaseFrame<ILoginListener> {
 
@@ -11,4 +12,6 @@ interface ILoginManager : IBaseFrame<ILoginListener> {
 
     fun isLogin(): Boolean
 
+    fun updateSelfUserInfo(userInfo: UserInfo?)
+
 }

+ 35 - 2
module/im/src/main/java/com/adealink/weparty/im/manager/login/LoginManager.kt

@@ -13,16 +13,21 @@ import com.adealink.weparty.im.constant.TAG_IM_LOGIN
 import com.adealink.weparty.im.data.UserInfo.Companion.loginUserInfo
 import com.adealink.weparty.im.datasource.remote.IMHttpService
 import com.adealink.weparty.im.manager.LoginWrapper
-import com.adealink.weparty.im.service.TIMAppService
 import com.adealink.weparty.im.util.TUIUtils
 import com.adealink.weparty.module.account.AccountModule
 import com.adealink.weparty.module.account.data.UserKickReason
 import com.adealink.weparty.module.im.IMConfig
+import com.adealink.weparty.module.profile.ProfileModule
+import com.adealink.weparty.module.profile.data.Gender
+import com.adealink.weparty.module.profile.data.UserInfo
+import com.tencent.imsdk.v2.V2TIMCallback
+import com.tencent.imsdk.v2.V2TIMManager
+import com.tencent.imsdk.v2.V2TIMUserFullInfo
+import com.tencent.qcloud.tuicore.TUIConfig
 import com.tencent.qcloud.tuicore.TUILogin
 import com.tencent.qcloud.tuicore.interfaces.TUICallback
 import com.tencent.qcloud.tuicore.interfaces.TUILoginConfig
 import com.tencent.qcloud.tuicore.interfaces.TUILoginListener
-import com.tencent.qcloud.tuikit.timcommon.BuildConfig
 import kotlinx.coroutines.launch
 
 val imLoginManager: ILoginManager by lazy { LoginManager() }
@@ -91,6 +96,8 @@ class LoginManager : BaseFrame<ILoginListener>(),
                     override fun onSuccess() {
                         Log.i(TAG_IM_LOGIN, "login onSuccess, uid: $uid")
                         TUILogin.addLoginListener(mLoginListener)
+
+                        updateSelfUserInfo(ProfileModule.getMyUserInfo())
                     }
 
                     override fun onError(errorCode: Int, errorMessage: String?) {
@@ -124,6 +131,32 @@ class LoginManager : BaseFrame<ILoginListener>(),
         return TUILogin.isUserLogined()
     }
 
+    override fun updateSelfUserInfo(userInfo: UserInfo?) {
+        userInfo ?: return
+        launch {
+            TUIConfig.setSelfNickName(userInfo.nickName)
+            TUIConfig.setSelfFaceUrl(userInfo.avatar)
+
+            val v2TIMUserFullInfo = V2TIMUserFullInfo()
+            v2TIMUserFullInfo.faceUrl = userInfo.avatar
+            v2TIMUserFullInfo.setNickname(userInfo.nickName)
+            v2TIMUserFullInfo.birthday = userInfo.birthday ?: 0
+            v2TIMUserFullInfo.gender = userInfo.gender ?: Gender.UNKNOWN.gender
+            V2TIMManager.getInstance().setSelfInfo(v2TIMUserFullInfo, object : V2TIMCallback {
+                override fun onError(code: Int, desc: String?) {
+                    Log.e(TAG_IM_LOGIN, "updateSelfUserInfo fail, code:$code, desc:$desc")
+                }
+
+                override fun onSuccess() {
+                    Log.d(TAG_IM_LOGIN, "updateSelfUserInfo success")
+                    TUIConfig.setSelfNickName(userInfo.nickName)
+                    TUIConfig.setSelfFaceUrl(userInfo.avatar)
+                }
+            })
+        }
+    }
+
+
     private fun logout() {
         try {
             TUILogin.logout(object : TUICallback() {

+ 2 - 0
module/profile/src/main/java/com/adealink/weparty/profile/viewmodel/ProfileViewModel.kt

@@ -17,6 +17,7 @@ import com.adealink.weparty.image.PHOTO_WALL_IMAGE_MAX_HEIGHT
 import com.adealink.weparty.image.PHOTO_WALL_IMAGE_MAX_SIZE_KB
 import com.adealink.weparty.image.PHOTO_WALL_IMAGE_MAX_WIDTH
 import com.adealink.weparty.image.PHOTO_WALL_IMAGE_MIN_QUALITY
+import com.adealink.weparty.module.im.IMModule
 import com.adealink.weparty.module.image.data.PhotoData
 import com.adealink.weparty.module.profile.ProfileModule
 import com.adealink.weparty.module.profile.data.EditUserInfo
@@ -161,6 +162,7 @@ class ProfileViewModel : BaseViewModel(), IProfileViewModel, IProfileListener {
 
                 is Rlt.Success -> {
                     profileManager.getUserInfoByUid(ProfileModule.getMyUid(), false)
+                    IMModule.updateIMSelfInfo(ProfileModule.getMyUserInfo())
                 }
             }
             liveData.send(rlt)