Skip to content

Commit d37cf14

Browse files
author
zhanq
committed
完善设置已读消息回执
1 parent 24e9634 commit d37cf14

File tree

4 files changed

+57
-22
lines changed

4 files changed

+57
-22
lines changed

android/src/io/jchat/android/JMessageModule.java

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2087,10 +2087,14 @@ public void gotResult(int status, String desc) {
20872087

20882088
@ReactMethod
20892089
public void setMsgHaveRead(ReadableMap map, final Callback successCallback, final Callback failCallback) {
2090+
final WritableMap failMap = Arguments.createMap();
20902091
try {
20912092
String type = map.getString(Constant.TYPE);
20922093
if (TextUtils.isEmpty(type)) {
2093-
mJMessageUtils.handleError(failCallback, ERR_CODE_PARAMETER, ERR_MSG_PARAMETER);
2094+
failMap.putInt(Constant.CODE, ERR_CODE_PARAMETER);
2095+
failMap.putString(Constant.DESCRIPTION, ERR_MSG_PARAMETER);
2096+
failCallback.invoke(failMap);
2097+
return;
20942098
}
20952099
Conversation conversation;
20962100
switch (type) {
@@ -2099,37 +2103,49 @@ public void setMsgHaveRead(ReadableMap map, final Callback successCallback, fina
20992103
String appKey = map.getString(Constant.APP_KEY);
21002104
//如果appKey为空则默认取本应用appKey下对应userName用户的会话。
21012105
if (TextUtils.isEmpty(userName)) {
2102-
mJMessageUtils.handleError(failCallback, ERR_CODE_PARAMETER, ERR_MSG_PARAMETER);
2106+
failMap.putInt(Constant.CODE, ERR_CODE_PARAMETER);
2107+
failMap.putString(Constant.DESCRIPTION, ERR_MSG_PARAMETER);
2108+
failCallback.invoke(failMap);
2109+
return;
21032110
}
21042111
conversation = JMessageClient.getSingleConversation(userName, appKey);
21052112
break;
21062113
case Constant.TYPE_GROUP:
21072114
String groupId = map.getString(Constant.GROUP_ID);
21082115
if (TextUtils.isEmpty(groupId)) {
2109-
mJMessageUtils.handleError(failCallback, ERR_CODE_PARAMETER, ERR_MSG_PARAMETER);
2116+
failMap.putInt(Constant.CODE, ERR_CODE_PARAMETER);
2117+
failMap.putString(Constant.DESCRIPTION, ERR_MSG_PARAMETER);
2118+
failCallback.invoke(failMap);
2119+
return;
21102120
}
21112121
conversation = JMessageClient.getGroupConversation(Long.parseLong(groupId));
21122122
break;
21132123
case Constant.TYPE_CHAT_ROOM:
21142124
String roomId = map.getString(Constant.ROOM_ID);
21152125
if (TextUtils.isEmpty(roomId)) {
2116-
mJMessageUtils.handleError(failCallback, ERR_CODE_PARAMETER, ERR_MSG_PARAMETER);
2126+
failMap.putInt(Constant.CODE, ERR_CODE_PARAMETER);
2127+
failMap.putString(Constant.DESCRIPTION, ERR_MSG_PARAMETER);
2128+
failCallback.invoke(failMap);
2129+
return;
21172130
}
21182131
conversation = JMessageClient.getChatRoomConversation(Long.parseLong(roomId));
21192132
break;
21202133
default:
21212134
conversation = null;
2122-
mJMessageUtils.handleError(failCallback, ERR_CODE_PARAMETER, ERR_MSG_PARAMETER);
21232135
break;
21242136
}
21252137
if (conversation == null) {
2126-
mJMessageUtils.handleError(failCallback, ERR_CODE_CONVERSATION, ERR_MSG_CONVERSATION);
2138+
failMap.putInt(Constant.CODE, ERR_CODE_CONVERSATION);
2139+
failMap.putString(Constant.DESCRIPTION, ERR_MSG_CONVERSATION);
2140+
failCallback.invoke(failMap);
21272141
return;
21282142
}
21292143
String messageId = map.getString(Constant.ID);
21302144
Message message = conversation.getMessage(Integer.parseInt(messageId));
21312145
if (message == null) {
2132-
mJMessageUtils.handleError(failCallback, ERR_CODE_MESSAGE, ERR_MSG_MESSAGE);
2146+
failMap.putInt(Constant.CODE, ERR_CODE_MESSAGE);
2147+
failMap.putString(Constant.DESCRIPTION, ERR_MSG_MESSAGE);
2148+
failCallback.invoke(failMap);
21332149
return;
21342150
}
21352151
if (message.haveRead()) {
@@ -2139,14 +2155,18 @@ public void setMsgHaveRead(ReadableMap map, final Callback successCallback, fina
21392155
@Override
21402156
public void gotResult(int code, String message) {
21412157
if (code == 0) {
2142-
mJMessageUtils.handleCallback(code, message, successCallback, failCallback);
2158+
successCallback.invoke();
21432159
} else {
2144-
mJMessageUtils.handleError(failCallback, code, message);
2160+
failMap.putInt(Constant.CODE, code);
2161+
failMap.putString(Constant.DESCRIPTION, message);
2162+
failCallback.invoke(failMap);
21452163
}
21462164
}
21472165
});
21482166
}catch (Throwable throwable){
2149-
mJMessageUtils.handleError(failCallback, ERR_CODE_EXCEPTION, throwable.getMessage());
2167+
failMap.putInt(Constant.CODE, ERR_CODE_EXCEPTION);
2168+
failMap.putString(Constant.DESCRIPTION, throwable.getMessage());
2169+
failCallback.invoke(failMap);
21502170
}
21512171
}
21522172

document/API.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1764,18 +1764,20 @@ JMessage.resetUnreadMessageCount({ type: 'single', username: 'username', appKey:
17641764
#### 示例
17651765
17661766
```js
1767-
JMessageModule.setMsgHaveRead(params,(result) => {
1767+
JMessageModule.setMsgHaveRead(params,(successCallback) =>{},(failCallback) => {
17681768
var code = result.code
17691769
var desc = result.description
17701770
}
17711771
)
17721772
```
17731773
17741774
#### 参数说明
1775-
- username: 用户的username。
1776-
- appKey: 用户所属应用的appkey。
1777-
- id: 本会话中指定local message id。为空时使用serverMessageId
1778-
- serverMessageId: 本会话中指定server message id。不可为空
1775+
- type: 会话类型。可以为 'single' 或 'group' 或 'chatRoom'。
1776+
- username: 对方用户的用户名。当 `type` 为 'single' 时,`username` 为必填。
1777+
- appKey: 对方用户所属应用的 AppKey。如果不填,默认为当前应用。
1778+
- groupId: 对象群组 id。当 `type` 为 'group' 时,`groupId` 为必填。
1779+
- roomId: 对象聊天室 id。当 `type` 为 'chatRoom' 时,`roomId` 为必填。
1780+
- id: mssageId。必填,不填则无法设置消息已读
17791781
17801782
## 聊天室
17811783

example/app/routes/Chat/index.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,13 @@ export default class Chat extends Component {
202202

203203
console.log("收到消息"+JSON.stringify(message));
204204
const readParams = {
205-
// ...message,
205+
type: "single",
206206
username: message.from.username,
207207
appKey: message.from.appKey,
208208
id: message.id,
209-
serverMessageId: message.serverMessageId
210209
}
211210

212-
JMessage.setMsgHaveRead(readParams,(result) => {})
211+
JMessage.setMsgHaveRead(readParams,(successCallback) => {},(failCallback) => {})
213212

214213
if (this.conversation.type === 'single') {
215214
if (message.target.type === 'user') {

index.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -864,15 +864,29 @@ export default class JMessage {
864864
/**
865865
* 设置消息已读
866866
* @param {object} params = {
867+
* 必填,不可为空
868+
* ‘type’: String single/group/chatroom
869+
*
870+
* type为single时,除了下面的其他值可缺省
867871
* 'username': String
868872
* 'appKey': String
869873
* 'id': String
870-
* 'serverMessageId': String
874+
*
875+
* type为group时,除了下面的其他值可缺省
876+
* 'groupId': String
877+
*
878+
* type为chatroom时,除了下面的其他值可缺省
879+
* 'roomId': String
880+
*
881+
* 必填,不可为空
882+
* 'id': String
883+
*
871884
* }
872-
* @param {function} result = function ({'code': '错误码', 'description': '错误信息'}) {}
885+
* @param {function} successCallback = function () {}
886+
* @param {function} failCallback = function ({'code': '错误码', 'description': '错误信息'}) {}
873887
*/
874-
static setMsgHaveRead(params,result){
875-
JMessageModule.setMsgHaveRead(params,result)
888+
static setMsgHaveRead(params,successCallback,failCallback){
889+
JMessageModule.setMsgHaveRead(params,successCallback,failCallback)
876890
}
877891

878892
/**

0 commit comments

Comments
 (0)