diff --git a/android/src/main/java/com/jiguang/jmessageflutter/JmessageFlutterPlugin.java b/android/src/main/java/com/jiguang/jmessageflutter/JmessageFlutterPlugin.java index a25335c..baed9ad 100644 --- a/android/src/main/java/com/jiguang/jmessageflutter/JmessageFlutterPlugin.java +++ b/android/src/main/java/com/jiguang/jmessageflutter/JmessageFlutterPlugin.java @@ -216,6 +216,8 @@ public void onMethodCall(MethodCall call, Result result) { addGroupMembers(call, result); } else if (call.method.equals("removeGroupMembers")) { removeGroupMembers(call, result); + } else if (call.method.equals("getMessageHaveReadStatus")) { + getMessageHaveReadStatus(call, result); } else if (call.method.equals("exitGroup")) { exitGroup(call, result); } else if (call.method.equals("getGroupMembers")) { @@ -351,7 +353,7 @@ private void setDebugMode(MethodCall call, Result result) { return; } } - + private void userRegister(MethodCall call, final Result result) { HashMap map = call.arguments(); String username, password; @@ -1717,12 +1719,14 @@ public void gotResult(int status, String desc, List list) { } - private void updateGroupInfo(MethodCall call, final Result result) { + private void updateGroupInfo(final MethodCall call, final Result result) { HashMap map = call.arguments(); long groupId; + final String name; try { JSONObject params = new JSONObject(map); groupId = Long.parseLong(params.getString("id")); + name = params.getString("newName"); } catch (JSONException e) { e.printStackTrace(); handleResult(ERR_CODE_PARAMETER, ERR_MSG_PARAMETER, result); @@ -1733,7 +1737,18 @@ private void updateGroupInfo(MethodCall call, final Result result) { @Override public void gotResult(int status, String desc, GroupInfo groupInfo) { if (status == 0) { - handleResult(toJson(groupInfo), status, desc, result); + groupInfo.updateName(name, new BasicCallback(){ + + @Override + public void gotResult(int i, String s) { + if (i == 0) { + handleResult(new HashMap(), i, s, result); + }else{ + handleResult(i, s, result); + } + } + }); + } else { handleResult(status, desc, result); diff --git a/lib/jmessage_flutter.dart b/lib/jmessage_flutter.dart index 8a5f56f..98b99c3 100644 --- a/lib/jmessage_flutter.dart +++ b/lib/jmessage_flutter.dart @@ -53,7 +53,7 @@ typedef JMReceiveChatRoomMessageListener = void Function(List messageLi typedef JMReceiveApplyJoinGroupApprovalListener = void Function(JMReceiveApplyJoinGroupApprovalEvent event); typedef JMReceiveGroupAdminRejectListener = void Function(JMReceiveGroupAdminRejectEvent event); typedef JMReceiveGroupAdminApprovalListener = void Function(JMReceiveGroupAdminApprovalEvent event); -typedef JMMessageReceiptStatusChangeListener = void Function(JMConversationInfo conversation, ListserverMessageIdList); +typedef JMMessageReceiptStatusChangeListener = void Function(JMConversationInfo conversation, List serverMessageIdList); class JMEventHandlers { @@ -815,6 +815,28 @@ class JmessageFlutter { return JMNormalMessage.generateMessageFromJson(msgMap); } + /** + * 设置消息已读 + * + * @param target 聊天对象, JMSingle | JMGroup + * @param messageId 本地数据库中的消息id,非 serverMessageId + * + * */ + Future setHaveRead({ + @required dynamic type, /// (JMSingle | JMGroup | JMChatRoom) + @required String messageId, + }) async { + Map param = type.toJson(); + + param..addAll({ + 'messageId': messageId, + }); + + Map msgMap = await _channel.invokeMethod('setHaveRead', + param..removeWhere((key,value) => value == null)); + + return JMNormalMessage.generateMessageFromJson(msgMap); + } /** * 删除本地单条消息 @@ -1507,8 +1529,8 @@ class JmessageFlutter { await _channel.invokeMethod('processApplyJoinGroup',{ 'events': events, - 'isAgree': isAgree == 0 ? false : true, - 'isRespondInviter': isRespondInviter == 0 ? false : true, + 'isAgree': isAgree, + 'isRespondInviter': isRespondInviter, 'reason': reason }..removeWhere((key, value) => value == null)); @@ -2507,6 +2529,17 @@ class JMConversationInfo { return msg; } + Future setHaveRead({ + @required dynamic type, /// (JMSingle | JMGroup | JMChatRoom) + @required String messageId, + }) async { + JMFileMessage msg = await JmessageFlutter().setHaveRead( + type: target.targetType, + messageId: messageId + ); + return msg; + } + // getHistoryMessages Future getHistoryMessages({ @required int from,