Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions android/src/main/java/com/im/easemob/ChatManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,20 @@ public void markAllMessagesAsRead(ReadableMap params, Promise promise) {
EMClient.getInstance().chatManager().getConversation(conversationId, chatType, true).markAllMessagesAsRead();
promise.resolve(null);
}

@ReactMethod
public void markMessageAsRead(final ReadableMap params, final Promise promise) {
if (CheckUtil.checkParamKey(params, new String[]{ "from", "messageId"}, promise)) {
return;
}
try {
EMClient.getInstance().chatManager().ackMessageRead(params.getString("from"), params.getString("messageId"));
promise.resolve(true);
} catch (Exception e) {
e.printStackTrace();
promise.reject(e);
}
}

private EMMessage buildSendMessage(Context context, ReadableMap params) {
EMMessage.Type messageType = EasemobConverter.toMessageType(params.getInt("messageType"));
Expand Down
4 changes: 3 additions & 1 deletion android/src/main/java/com/im/easemob/EasemobListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import static com.im.easemob.IMConstant.GROUP_MANAGER_DELEGATE;
import static com.im.easemob.IMConstant.GROUP_OWNER_DID_UPDATE;
import static com.im.easemob.IMConstant.MESSAGE_DID_RECEIVE;
import static com.im.easemob.IMConstant.MESSAGE_DID_READ;
import static com.im.easemob.IMConstant.USER_ACCOUNT_DID_LOGIN_FROM_OTHER_DEVICE;
import static com.im.easemob.IMConstant.USER_ACCOUNT_DID_REMOVE_FROM_SERVER;
import static com.im.easemob.IMConstant.USER_DID_JOIN_GROUP;
Expand Down Expand Up @@ -217,7 +218,8 @@ public void onCmdMessageReceived(List<EMMessage> list) {

@Override
public void onMessageRead(List<EMMessage> list) {

EasemobHelper.getInstance().sendEvent(CHAT_MANAGER_DELEGATE, MESSAGE_DID_READ, EasemobConverter
.convertList(list));
}

@Override
Expand Down
1 change: 1 addition & 0 deletions android/src/main/java/com/im/easemob/IMConstant.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public static class EMMessageDirection {
}

public static final String MESSAGE_DID_RECEIVE = "messageDidReceive";
public static final String MESSAGE_DID_READ = "messageDidRead";
public static final String CMD_MESSAGE_DID_RECEIVE = "cmdMessageDidReceive";
public static final String CONVERSATION_LIST_DID_UPDATE = "conversationListDidUpdate";

Expand Down
16 changes: 16 additions & 0 deletions ios/easemob/ChatManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,22 @@ @implementation ChatManager
}
}

RCT_EXPORT_METHOD(markMessageAsRead:(NSString *)params
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject) {
NSDictionary *allParams = [params jsonStringToDictionary];
NSString *from = [allParams objectForKey:@"from"];
NSString *messageId = [allParams objectForKey:@"messageId"];

[[EMClient sharedClient].chatManager sendMessageReadAck:messageId toUser:from completion:^(EMError *aError){
if(!aError){
resolve(@"{}");
}else{
reject([NSString stringWithFormat:@"%ld", (NSInteger)aError.code], aError.errorDescription, nil);
}
}];
}

RCT_EXPORT_METHOD(deleteAllMessages:(NSString *)params
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject) {
Expand Down
8 changes: 8 additions & 0 deletions ios/easemob/ChatManagerDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,14 @@ - (void)cmdMessagesDidReceive:(NSArray *)aCmdMessages {
[Client sendEventByType:eventType subType:@"cmdMessageDidReceive" data:dicArray];
}

- (void) messagesDidRead:(NSArray *)aMessages {
NSMutableArray *dicArray = [NSMutableArray array];
[aMessages enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
[dicArray addObject:[obj objectToDictionary]];
}];
[Client sendEventByType:eventType subType:@"messageDidRead" data:dicArray];
}

- (void)conversationListDidUpdate:(NSArray *)aConversationList {
NSMutableArray *dicArray = [NSMutableArray array];
[aConversationList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
Expand Down
5 changes: 5 additions & 0 deletions src/eventemitter.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ export const setMessageDidReceive = setCallback(ChatManager, 'messageDidReceive'
*/
export const setCmdMessageDidReceive = setCallback(ChatManager, 'cmdMessageDidReceive');

/**
* 设置消息已读事件回调。
*/
export const setMessageDidRead = setCallback(ChatManager,'messageDidRead');

/**
* 设置离开群组事件回调。
*/
Expand Down