feat:消息头像修改:小秘书、公会消息
This commit is contained in:
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
26
app/src/main/java/com/chwl/app/support/IMUserInfoProvider.kt
Normal file
26
app/src/main/java/com/chwl/app/support/IMUserInfoProvider.kt
Normal 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 |
BIN
app/src/main/res/mipmap-xxhdpi/ic_find_new.webp
Normal file
BIN
app/src/main/res/mipmap-xxhdpi/ic_find_new.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
@@ -9,6 +9,14 @@ import io.reactivex.Single;
|
||||
|
||||
public interface ISettingsModel extends IModel {
|
||||
|
||||
/**
|
||||
* 系统账号
|
||||
* @return
|
||||
*/
|
||||
SysAccount getLocalSysAccount();
|
||||
|
||||
void checkSysAccount();
|
||||
|
||||
/**
|
||||
*
|
||||
* @param uid
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -11,6 +11,14 @@ import java.util.List;
|
||||
|
||||
public interface IUserInfoProvider<T extends UserInfo> {
|
||||
|
||||
/**
|
||||
* 获取用户头像
|
||||
*
|
||||
* @param account
|
||||
* @return
|
||||
*/
|
||||
String getUserAvatar(String account);
|
||||
|
||||
/**
|
||||
* 同步获取userInfo
|
||||
*
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -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 回调
|
||||
|
Reference in New Issue
Block a user