Skip to content

Commit 504c571

Browse files
guangyaoguangyao
authored andcommitted
2 parents 3e47dc9 + 2e70ffe commit 504c571

File tree

4 files changed

+69
-45
lines changed

4 files changed

+69
-45
lines changed

android/src/main/java/com/netease/im/MessageUtil.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,13 @@ public class MessageUtil {
2929
return false;
3030
}
3131

32+
public static boolean shouldIgnoreRevoke(IMMessage message) {//TODO;
33+
if (message.getMsgType() == MsgTypeEnum.custom && message.getAttachment() != null
34+
&& (message.getAttachment() instanceof RedPacketAttachement
35+
|| message.getAttachment() instanceof BankTransferAttachment)) {
36+
// 红包 转账 不允许转发
37+
return true;
38+
}
39+
return false;
40+
}
3241
}

android/src/main/java/com/netease/im/RNNeteaseImModule.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1232,7 +1232,7 @@ public int onResult(int code, IMMessage message) {
12321232
if (result == 0) {
12331233
showTip("请选择消息");
12341234
} else if (result == 1) {
1235-
showTip("该类型不支持转发");
1235+
showTip("该类型消息不支持转发");
12361236
} else {
12371237
promise.resolve(ResponseCode.RES_SUCCESS + "");
12381238
}
@@ -1247,6 +1247,7 @@ public int onResult(int code, IMMessage message) {
12471247
* @param messageId
12481248
* @param promise
12491249
*/
1250+
@ReactMethod
12501251
public void revokeMessage(String messageId, final Promise promise) {
12511252
LogUtil.i(TAG, "revokeMessage" + messageId);
12521253
sessionService.queryMessage(messageId, new SessionService.OnMessageQueryListener() {
@@ -1269,6 +1270,8 @@ public int onResult(int code, IMMessage message) {
12691270
});
12701271
if (result == 0) {
12711272
showTip("请选择消息");
1273+
}else if (result == 1) {
1274+
showTip("该类型消息不支持撤销");
12721275
}
12731276
return 0;
12741277
}
@@ -1493,10 +1496,8 @@ public void onResult(int code, List<IMMessage> result, Throwable exception) {
14931496
if (code == ResponseCode.RES_SUCCESS) {
14941497
if (result != null && result.size() > 0) {
14951498
Object a = ReactCache.createMessageList(result);
1496-
if (a != null) {
1497-
promise.resolve(a);
1498-
return;
1499-
}
1499+
promise.resolve(a);
1500+
return;
15001501

15011502
}
15021503
}
@@ -1525,11 +1526,7 @@ public int onResult(int code, List<IMMessage> messageList, Set<String> timedItem
15251526
promise.reject("" + code, "");
15261527
} else {
15271528
Object a = ReactCache.createMessageList(messageList);
1528-
if (a != null) {
1529-
promise.resolve(a);
1530-
} else {
1531-
promise.reject("" + code, "");
1532-
}
1529+
promise.resolve(a);
15331530
}
15341531
return 0;
15351532
}

android/src/main/java/com/netease/im/ReactCache.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,15 +145,20 @@ public static Object createRecentList(List<RecentContact> recents, int unreadNum
145145
String content = contact.getContent();
146146
switch (contact.getMsgType()) {
147147
case text:
148-
return contact.getContent();
148+
content = contact.getContent();
149+
break;
149150
case image:
150-
return "[图片]";
151+
content = "[图片]";
152+
break;
151153
case video:
152-
return "[视频]";
154+
content = "[视频]";
155+
break;
153156
case audio:
154-
return "[语音消息]";
157+
content = "[语音消息]";
158+
break;
155159
case location:
156-
return "[位置]";
160+
content = "[位置]";
161+
break;
157162
case tip:
158163
List<String> uuids = new ArrayList<>();
159164
uuids.add(contact.getRecentMessageId());

android/src/main/java/com/netease/im/session/SessionService.java

Lines changed: 43 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.netease.im.ReactCache;
1111
import com.netease.im.login.LoginService;
1212
import com.netease.im.session.extension.BankTransferAttachment;
13+
import com.netease.im.session.extension.CustomAttachment;
14+
import com.netease.im.session.extension.CustomAttachmentType;
1315
import com.netease.im.session.extension.DefaultCustomAttachment;
1416
import com.netease.im.session.extension.RedPacketAttachement;
1517
import com.netease.im.session.extension.RedPacketOpenAttachement;
@@ -28,6 +30,7 @@
2830
import com.netease.nimlib.sdk.msg.MsgService;
2931
import com.netease.nimlib.sdk.msg.MsgServiceObserve;
3032
import com.netease.nimlib.sdk.msg.attachment.FileAttachment;
33+
import com.netease.nimlib.sdk.msg.attachment.MsgAttachment;
3134
import com.netease.nimlib.sdk.msg.constant.AttachStatusEnum;
3235
import com.netease.nimlib.sdk.msg.constant.MsgDirectionEnum;
3336
import com.netease.nimlib.sdk.msg.constant.MsgStatusEnum;
@@ -122,8 +125,8 @@ public void onIncomingMessage(@NonNull List<IMMessage> messages) {
122125
if (addedListItems.size() > 0) {
123126
updateShowTimeItem(addedListItems, false);
124127
}
125-
126-
refreshMessageList(addedListItems);
128+
List<IMMessage> r = onQuery(messages);
129+
refreshMessageList(r);
127130

128131
}
129132

@@ -308,8 +311,7 @@ private void onMessageStatusChange(IMMessage message, boolean isSend) {
308311
List<IMMessage> list = new ArrayList<>(1);
309312
list.add(message);
310313
Object a = ReactCache.createMessageList(list);
311-
if (a != null)
312-
ReactCache.emit(ReactCache.observeMsgStatus, a);
314+
ReactCache.emit(ReactCache.observeMsgStatus, a);
313315
}
314316
}
315317

@@ -428,11 +430,18 @@ public void onResult(int code, List<IMMessage> result, Throwable exception) {
428430
final int size = result.size();
429431
boolean isLimit = size >= limit;
430432
List<IMMessage> r = onQuery(result);
431-
if (result.size() < size && isLimit) {
432-
fistMessage = result.get(0);
433-
queryMessageListEx(fistMessage, direction, result.size() - size, onMessageQueryListListener);
433+
434+
if (r.size() == 0) {
435+
queryMessageListEx(fistMessage, direction, size - r.size(), onMessageQueryListListener);
436+
} else {
437+
onMessageQueryListListener.onResult(code, r, timedItems);
438+
439+
if (r.size() < size && isLimit) {
440+
fistMessage = result.get(0);
441+
// queryMessageListEx(fistMessage, direction, size - r.size(), onMessageQueryListListener);
442+
}
434443
}
435-
onMessageQueryListListener.onResult(code, r, timedItems);
444+
436445
return;
437446
}
438447
}
@@ -444,24 +453,24 @@ public void onResult(int code, List<IMMessage> result, Throwable exception) {
444453
List<IMMessage> onQuery(List<IMMessage> result) {//TODO
445454

446455

447-
// for (int i = result.size() - 1; i >= 0; i--) {
448-
// IMMessage message = result.get(i);
449-
// if (message == null) {
450-
// result.remove(i);
451-
// }
452-
// MsgAttachment attachment = message.getAttachment();
453-
// if (attachment != null) {
454-
// if (message.getMsgType() == MsgTypeEnum.custom) {
455-
// CustomAttachment customAttachment = (CustomAttachment) attachment;
456-
// if (customAttachment.getType() == CustomAttachmentType.RedPacketOpen) {
457-
// RedPacketOpenAttachement rpOpen = (RedPacketOpenAttachement) attachment;
458-
// if (!rpOpen.isSelf()) {
459-
// result.remove(i);
460-
// }
461-
// }
462-
// }
463-
// }
464-
// }
456+
for (int i = result.size() - 1; i >= 0; i--) {
457+
IMMessage message = result.get(i);
458+
if (message == null) {
459+
result.remove(i);
460+
}
461+
MsgAttachment attachment = message.getAttachment();
462+
if (attachment != null) {
463+
if (message.getMsgType() == MsgTypeEnum.custom) {
464+
CustomAttachment customAttachment = (CustomAttachment) attachment;
465+
if (customAttachment.getType() == CustomAttachmentType.RedPacketOpen) {
466+
RedPacketOpenAttachement rpOpen = (RedPacketOpenAttachement) attachment;
467+
if (!rpOpen.isSelf()) {
468+
result.remove(i);
469+
}
470+
}
471+
}
472+
}
473+
}
465474
return result;
466475
}
467476

@@ -536,8 +545,7 @@ private void refreshMessageList(List<IMMessage> messageList) {
536545
return;
537546
}
538547
Object a = ReactCache.createMessageList(messageList);
539-
if (a != null)
540-
ReactCache.emit(ReactCache.observeReceiveMessage, a);
548+
ReactCache.emit(ReactCache.observeReceiveMessage, a);
541549
}
542550

543551
/**
@@ -704,15 +712,19 @@ public int sendForwardMessage(IMMessage selectMessage, final String sessionId, f
704712
return 2;
705713
}
706714

707-
void revokMessage(IMMessage message){
715+
void revokMessage(IMMessage message) {
708716
WritableMap msg = Arguments.createMap();
709717
msg.putString("_id", message.getUuid());
710-
ReactCache.emit(ReactCache.observeDeleteMessage,msg);
718+
ReactCache.emit(ReactCache.observeDeleteMessage, msg);
711719
}
720+
712721
public int revokeMessage(final IMMessage selectMessage, final OnSendMessageListener onSendMessageListener) {
713722
if (selectMessage == null) {
714723
return 0;
715724
}
725+
if (MessageUtil.shouldIgnoreRevoke(selectMessage)) {
726+
return 1;
727+
}
716728
getMsgService().revokeMessage(selectMessage).setCallback(new RequestCallbackWrapper<Void>() {
717729
@Override
718730
public void onResult(int code, Void aVoid, Throwable throwable) {
@@ -799,6 +811,7 @@ private MemberPushOption createMemPushOption(List<String> selectedMembers, IMMes
799811
memberPushOption.setForcePushList(selectedMembers);
800812
return memberPushOption;
801813
}
814+
802815
private boolean isOriginImageHasDownloaded(final IMMessage message) {
803816

804817
if (message.getAttachStatus() == AttachStatusEnum.transferred) {

0 commit comments

Comments
 (0)