fix:修复私聊未互相关注也可以发消息bug
This commit is contained in:
@@ -830,13 +830,17 @@ public class MessageListPanelEx {
|
||||
if (messages == null) {
|
||||
return;
|
||||
}
|
||||
List<IMMessage> tempMessages = new ArrayList<>();
|
||||
boolean isEmptyTextMessage = true;
|
||||
for (IMMessage message : messages) {
|
||||
if (message.getMsgType() == MsgTypeEnum.text) {
|
||||
tempMessages.add(message);
|
||||
String messageContext = message.getContent();
|
||||
if (!messageContext.equals("我对你很感兴趣并关注了你~快来和我成为好友一起玩吧")) {
|
||||
isEmptyTextMessage = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
EventBus.getDefault().post(new MessageSizeEvent(tempMessages.size()));
|
||||
}
|
||||
EventBus.getDefault().post(new MessageSizeEvent(isEmptyTextMessage));
|
||||
if (onMessageFilterListener != null) {
|
||||
messages = onMessageFilterListener.filterLoadedMessage(messages);
|
||||
}
|
||||
|
@@ -625,6 +625,7 @@ public class NimP2PMessageActivity extends NewBaseMessageActivity {
|
||||
tvAttention.setVisibility(View.GONE);
|
||||
tvAttention.setOnClickListener(null);
|
||||
toast(event.isPraise() ? R.string.attention_success : R.string.cancel_fan_success);
|
||||
messageFragment.reloadChatLimitIfLimited();
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
|
@@ -19,6 +19,7 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
|
||||
import com.netease.nim.uikit.api.UIKitOptions;
|
||||
import com.netease.nim.uikit.api.model.main.CustomPushContentProvider;
|
||||
@@ -590,10 +591,72 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onReloadInputPanel(MessageSizeEvent event) {
|
||||
if (inputPanel != null) {
|
||||
if (event.getSize() > 0) {
|
||||
if (!event.textMessageIsEmpty) {
|
||||
tvChatLimit.setVisibility(View.GONE);
|
||||
inputPanel.setLimitLevel(true, "");
|
||||
} else {
|
||||
loadChatLimit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
public Observable<Boolean> checkPermission(String... mPerms) {
|
||||
return rxPermissions.request(mPerms);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@SuppressLint("CheckResult")
|
||||
public void onNimAudioChatEvent(NimAudioChatEvent event) {
|
||||
checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.RECORD_AUDIO)
|
||||
.subscribe(result -> {
|
||||
if (result) {
|
||||
event.getSuccess().accept(result);
|
||||
} else {
|
||||
SingleToastUtil.showToast(getString(R.string.ask_again));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@SuppressLint("CheckResult")
|
||||
public void onNimImageActionEvent(NimImageActionEvent event) {
|
||||
checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.CAMERA)
|
||||
.subscribe(result -> {
|
||||
if (result) {
|
||||
event.getSuccess().accept(result);
|
||||
} else {
|
||||
SingleToastUtil.showToast(getString(R.string.ask_again));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setLimitLevel(int limitLevel) {
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
public void setCurrentLevel(int currentLevel) {
|
||||
}
|
||||
|
||||
public void reloadChatLimitIfLimited() {
|
||||
if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.CREATED)) {
|
||||
return;
|
||||
}
|
||||
if (inputPanel == null) {
|
||||
return;
|
||||
}
|
||||
if (!inputPanel.getLimitLevel()) {
|
||||
loadChatLimit();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
private void loadChatLimit(){
|
||||
IMCustomModel.get().getPrivateChatLimit(sessionId).subscribe(((privateChatLimitInfo, throwable) -> {
|
||||
if (throwable != null) {
|
||||
throwable.printStackTrace();
|
||||
@@ -645,49 +708,3 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
public Observable<Boolean> checkPermission(String... mPerms) {
|
||||
return rxPermissions.request(mPerms);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@SuppressLint("CheckResult")
|
||||
public void onNimAudioChatEvent(NimAudioChatEvent event) {
|
||||
checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.RECORD_AUDIO)
|
||||
.subscribe(result -> {
|
||||
if (result) {
|
||||
event.getSuccess().accept(result);
|
||||
} else {
|
||||
SingleToastUtil.showToast(getString(R.string.ask_again));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@SuppressLint("CheckResult")
|
||||
public void onNimImageActionEvent(NimImageActionEvent event) {
|
||||
checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
||||
Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.CAMERA)
|
||||
.subscribe(result -> {
|
||||
if (result) {
|
||||
event.getSuccess().accept(result);
|
||||
} else {
|
||||
SingleToastUtil.showToast(getString(R.string.ask_again));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void setLimitLevel(int limitLevel) {
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
public void setCurrentLevel(int currentLevel) {
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -3,17 +3,11 @@ package com.nnbc123.core.room.event;
|
||||
import java.io.Serializable;
|
||||
|
||||
public class MessageSizeEvent implements Serializable {
|
||||
private int size;
|
||||
|
||||
public int getSize() {
|
||||
return size;
|
||||
}
|
||||
// 文本消息是否空(忽略了关注提醒文本消息)
|
||||
public boolean textMessageIsEmpty;
|
||||
|
||||
public void setSize(int size) {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public MessageSizeEvent(int size) {
|
||||
this.size = size;
|
||||
public MessageSizeEvent(boolean textMessageIsEmpty) {
|
||||
this.textMessageIsEmpty = textMessageIsEmpty;
|
||||
}
|
||||
}
|
||||
|
@@ -959,6 +959,10 @@ public class InputPanel implements IEmoticonSelectedListener, IAudioRecordCallba
|
||||
setEditTextState();
|
||||
}
|
||||
|
||||
public boolean getLimitLevel() {
|
||||
return isChat;
|
||||
}
|
||||
|
||||
private void setEditTextState() {
|
||||
if (!isChat) {
|
||||
messageEditText.setHint(hintText);
|
||||
|
Reference in New Issue
Block a user