feat:消息头像修改:小秘书、公会消息

This commit is contained in:
Max
2023-11-27 15:34:19 +08:00
parent be14ac50e1
commit 4c80cda20a
11 changed files with 128 additions and 7 deletions

View File

@@ -23,6 +23,7 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.ViewModelProvider;
import com.chwl.core.settings.SettingsModel;
import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil;
import com.netease.nim.uikit.common.util.string.StringUtil;
@@ -280,6 +281,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
ThreadPoolManager.instance().init();
IMBroadcastManager.get().onCreate();
ImageLoadUtilsV2.init(context);
SettingsModel.get().checkSysAccount();
}
@Override

View File

@@ -16,6 +16,7 @@ import androidx.multidex.MultiDex;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.request.target.ViewTarget;
import com.chwl.app.support.IMUserInfoProvider;
import com.example.lib_utils.LanguageUtils;
import com.coorchice.library.utils.LogUtils;
import com.hjq.toast.ToastUtils;
@@ -486,7 +487,7 @@ public class XChatApplication extends BaseApp {
private static void initNimUIKit() {
// 初始化
NimUIKit.init(BasicConfig.INSTANCE.getAppContext());
NimUIKit.init(BasicConfig.INSTANCE.getAppContext(), new IMUserInfoProvider(), null);
}
/**

View File

@@ -0,0 +1,26 @@
package com.chwl.app.support
import com.chwl.core.settings.SettingsModel
import com.netease.nim.uikit.impl.provider.DefaultUserInfoProvider
class IMUserInfoProvider : DefaultUserInfoProvider() {
override fun getUserAvatar(account: String?): String? {
if (account == null) {
return null
}
val sysAccount = SettingsModel.get().localSysAccount
return when (account) {
sysAccount.secretaryUid -> {
"https://img.hiyoo.fun/secret_message_avatar.png"
}
sysAccount.hallMessageUid -> {
"https://img.hiyoo.fun/hall_message_avatar.png"
}
else -> {
super.getUserAvatar(account)
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -9,6 +9,14 @@ import io.reactivex.Single;
public interface ISettingsModel extends IModel {
/**
* 系统账号
* @return
*/
SysAccount getLocalSysAccount();
void checkSysAccount();
/**
*
* @param uid

View File

@@ -1,5 +1,7 @@
package com.chwl.core.settings;
import com.chwl.core.utils.TextUtils;
import com.chwl.library.common.util.SPUtils;
import com.google.gson.JsonElement;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.RequestCallback;
@@ -17,6 +19,7 @@ import io.reactivex.Single;
import io.reactivex.SingleOnSubscribe;
import io.reactivex.SingleSource;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
@@ -26,7 +29,7 @@ import retrofit2.http.Query;
public class SettingsModel implements ISettingsModel {
private SysAccount sysAccount;
private static SettingsModel instance;
private final Api api;
@@ -45,6 +48,25 @@ public class SettingsModel implements ISettingsModel {
return instance;
}
@Override
public SysAccount getLocalSysAccount() {
if (sysAccount == null) {
sysAccount = SPUtils.getParcelable("sys_account", SysAccount.class, new SysAccount());
}
return sysAccount;
}
@Override
public void checkSysAccount() {
SysAccount account = getLocalSysAccount();
if (account == null || account.isEmpty()) {
Disposable d = getSysAccount().compose(RxHelper.handleSchedulers()).subscribe(sysAccount -> {
this.sysAccount = sysAccount;
SPUtils.putParcelable("sys_account", sysAccount);
});
}
}
@Override
public Single<ServiceResult<String>> showLocation(long uid, boolean showLocation) {
return api.showLocation(uid, showLocation);
@@ -83,7 +105,7 @@ public class SettingsModel implements ISettingsModel {
@Override
public Single<String> setAttentionMsgNotify(boolean attentionMsgNotify) {
return api.apiAttentionMsgNotify(AuthModel.get().getCurrentUid(), attentionMsgNotify)
return api.apiAttentionMsgNotify(AuthModel.get().getCurrentUid(), attentionMsgNotify)
.compose(RxHelper.handleIgnoreData());
}

View File

@@ -1,5 +1,10 @@
package com.chwl.core.settings.bean;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import lombok.Data;
/**
@@ -7,7 +12,7 @@ import lombok.Data;
* create by lvzebiao @2019/12/25
*/
@Data
public class SysAccount {
public class SysAccount implements Parcelable {
/**
* 小秘书uid
*/
@@ -17,4 +22,46 @@ public class SysAccount {
*/
private String systemMessageUid;
/**
* 工会消息UID
*/
private String hallMessageUid;
public SysAccount() {
}
public SysAccount(Parcel parcel) {
secretaryUid = parcel.readString();
systemMessageUid = parcel.readString();
hallMessageUid = parcel.readString();
}
public boolean isEmpty() {
return secretaryUid == null || systemMessageUid == null || hallMessageUid == null;
}
public static final Creator<SysAccount> CREATOR = new Creator<SysAccount>() {
@Override
public SysAccount createFromParcel(Parcel in) {
return new SysAccount(in);
}
@Override
public SysAccount[] newArray(int size) {
return new SysAccount[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(@NonNull Parcel parcel, int i) {
parcel.writeString(secretaryUid);
parcel.writeString(systemMessageUid);
parcel.writeString(hallMessageUid);
}
}

View File

@@ -11,6 +11,14 @@ import java.util.List;
public interface IUserInfoProvider<T extends UserInfo> {
/**
* 获取用户头像
*
* @param account
* @return
*/
String getUserAvatar(String account);
/**
* 同步获取userInfo
*

View File

@@ -52,8 +52,7 @@ public class HeadImageView extends CircleImageView {
* @param account 用户账号
*/
public void loadBuddyAvatar(String account) {
final UserInfo userInfo = NimUIKit.getUserInfoProvider().getUserInfo(account);
doLoadImage(userInfo != null ? userInfo.getAvatar() : null, DEFAULT_AVATAR_RES_ID, DEFAULT_AVATAR_THUMB_SIZE);
doLoadImage(NimUIKit.getUserInfoProvider().getUserAvatar(account), DEFAULT_AVATAR_RES_ID, DEFAULT_AVATAR_THUMB_SIZE);
}
/**

View File

@@ -16,6 +16,15 @@ import java.util.List;
public class DefaultUserInfoProvider implements IUserInfoProvider<NimUserInfo> {
@Override
public String getUserAvatar(String account) {
NimUserInfo user = getUserInfo(account);
if (user != null) {
return user.getAvatar();
}
return null;
}
@Override
public NimUserInfo getUserInfo(String account) {
NimUserInfo user = NimUserInfoCache.getInstance().getUserInfo(account);
@@ -51,7 +60,6 @@ public class DefaultUserInfoProvider implements IUserInfoProvider<NimUserInfo> {
}
/**
*
* @param accounts 账号id 集合
* size最大150, 大于150自行处理分页再请求
* @param callback 回调