|
@@ -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);
|