Skip to content

Commit 00ca017

Browse files
committed
fix:最近会话,撤回消息
fix:最近会话,撤回消息
1 parent 6f0f6a3 commit 00ca017

File tree

3 files changed

+52
-42
lines changed

3 files changed

+52
-42
lines changed

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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() {
@@ -1493,10 +1494,8 @@ public void onResult(int code, List<IMMessage> result, Throwable exception) {
14931494
if (code == ResponseCode.RES_SUCCESS) {
14941495
if (result != null && result.size() > 0) {
14951496
Object a = ReactCache.createMessageList(result);
1496-
if (a != null) {
1497-
promise.resolve(a);
1498-
return;
1499-
}
1497+
promise.resolve(a);
1498+
return;
15001499

15011500
}
15021501
}
@@ -1525,11 +1524,7 @@ public int onResult(int code, List<IMMessage> messageList, Set<String> timedItem
15251524
promise.reject("" + code, "");
15261525
} else {
15271526
Object a = ReactCache.createMessageList(messageList);
1528-
if (a != null) {
1529-
promise.resolve(a);
1530-
} else {
1531-
promise.reject("" + code, "");
1532-
}
1527+
promise.resolve(a);
15331528
}
15341529
return 0;
15351530
}

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: 38 additions & 28 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;
@@ -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,11 +712,12 @@ 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;
@@ -799,6 +808,7 @@ private MemberPushOption createMemPushOption(List<String> selectedMembers, IMMes
799808
memberPushOption.setForcePushList(selectedMembers);
800809
return memberPushOption;
801810
}
811+
802812
private boolean isOriginImageHasDownloaded(final IMMessage message) {
803813

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

0 commit comments

Comments
 (0)