浏览代码

修复bug

Pq 3 年之前
父节点
当前提交
b432c12cfc
共有 1 个文件被更改,包括 28 次插入5 次删除
  1. 28 5
      rong_im/kit/src/main/java/io/rong/imkit/userinfo/RongUserInfoManager.java

+ 28 - 5
rong_im/kit/src/main/java/io/rong/imkit/userinfo/RongUserInfoManager.java

@@ -157,9 +157,9 @@ public class RongUserInfoManager {
      *
      *
      * @param groupUserInfoProvider 群组用户信息提供者。
      * @param groupUserInfoProvider 群组用户信息提供者。
      * @param isCacheGroupUserInfo  设置是否由 IMKit 来缓存 GroupUserInfo。<br>
      * @param isCacheGroupUserInfo  设置是否由 IMKit 来缓存 GroupUserInfo。<br>
-     *                         如果 App 提供的 GroupUserInfoProvider。
-     *                         每次都需要通过网络请求数据,而不是将数据缓存到本地,会影响信息的加载速度;<br>
-     *                         此时最好将本参数设置为 true,由 IMKit 来缓存信息。
+     *                              如果 App 提供的 GroupUserInfoProvider。
+     *                              每次都需要通过网络请求数据,而不是将数据缓存到本地,会影响信息的加载速度;<br>
+     *                              此时最好将本参数设置为 true,由 IMKit 来缓存信息。
      */
      */
     public void setGroupUserInfoProvider(UserDataProvider.GroupUserInfoProvider groupUserInfoProvider, boolean isCacheGroupUserInfo) {
     public void setGroupUserInfoProvider(UserDataProvider.GroupUserInfoProvider groupUserInfoProvider, boolean isCacheGroupUserInfo) {
         mUserDataDelegate.setGroupUserInfoProvider(groupUserInfoProvider);
         mUserDataDelegate.setGroupUserInfoProvider(groupUserInfoProvider);
@@ -190,7 +190,7 @@ public class RongUserInfoManager {
         if (mIsCacheUserInfo && mLocalDataSource != null) {
         if (mIsCacheUserInfo && mLocalDataSource != null) {
             user = mLocalDataSource.getUserInfo(userId, mAllUsers);
             user = mLocalDataSource.getUserInfo(userId, mAllUsers);
         }
         }
-        if (user == null && mUserDataDelegate != null) {
+        if (checkIsUpdateUser(user) && mUserDataDelegate != null) {
             UserInfo userInfo = mUserDataDelegate.getUserInfo(userId);
             UserInfo userInfo = mUserDataDelegate.getUserInfo(userId);
             if (userInfo != null) {
             if (userInfo != null) {
                 user = new User(userInfo.getUserId(), userInfo.getName() == null ? "" : userInfo.getName(),
                 user = new User(userInfo.getUserId(), userInfo.getName() == null ? "" : userInfo.getName(),
@@ -209,6 +209,29 @@ public class RongUserInfoManager {
         }
         }
     }
     }
 
 
+    private boolean checkIsUpdateUser(User user) {
+        if (user == null) {
+            return true;
+        }
+        if (TextUtils.isEmpty(user.id) || TextUtils.isEmpty(user.portraitUrl) || TextUtils.isEmpty(user.name)) {
+            return true;
+        }
+
+        return false;
+    }
+
+    private boolean checkIsUpdateGroup(Group group) {
+        if (group == null) {
+            return true;
+        }
+        if (TextUtils.isEmpty(group.id) || TextUtils.isEmpty(group.portraitUrl) || TextUtils.isEmpty(group.name)) {
+            return true;
+        }
+
+        return false;
+    }
+
+
     public LiveData<User> getUserInfoLiveData(final String userId) {
     public LiveData<User> getUserInfoLiveData(final String userId) {
         final MediatorLiveData userLiveData = new MediatorLiveData<>();
         final MediatorLiveData userLiveData = new MediatorLiveData<>();
         userLiveData.addSource(UserDatabase.getDatabaseCreated(), new Observer<Boolean>() {
         userLiveData.addSource(UserDatabase.getDatabaseCreated(), new Observer<Boolean>() {
@@ -237,7 +260,7 @@ public class RongUserInfoManager {
         if (mIsCacheGroupInfo && mLocalDataSource != null) {
         if (mIsCacheGroupInfo && mLocalDataSource != null) {
             group = mLocalDataSource.getGroupInfo(groupId);
             group = mLocalDataSource.getGroupInfo(groupId);
         }
         }
-        if (group == null && mUserDataDelegate != null) {
+        if (checkIsUpdateGroup(group) && mUserDataDelegate != null) {
             group = mUserDataDelegate.getGroupInfo(groupId);
             group = mUserDataDelegate.getGroupInfo(groupId);
             if (mIsCacheGroupInfo && group != null && mLocalDataSource != null) {
             if (mIsCacheGroupInfo && group != null && mLocalDataSource != null) {
                 mLocalDataSource.refreshGroupInfo(group);
                 mLocalDataSource.refreshGroupInfo(group);