From c8a895e9259dab0524af9ea450f1d5be81fdf4d1 Mon Sep 17 00:00:00 2001 From: hrxiang Date: Fri, 23 Jul 2021 18:01:34 +0800 Subject: [PATCH] init --- android/build.gradle | 12 ++--- .../manager/MessageManager.java | 13 +++-- .../flutter_openim_sdk/util/CommonUtil.java | 7 ++- lib/src/enum/message_type.dart | 2 +- lib/src/listener/advanced_msg_listener.dart | 2 +- lib/src/manager/im_manager.dart | 13 ++--- lib/src/manager/im_message_manager.dart | 35 ++++++++++++- lib/src/models/message.dart | 52 +++++++++---------- 8 files changed, 90 insertions(+), 46 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 12f4ba1..040fccc 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -7,8 +7,8 @@ buildscript { maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' } -// maven { url 'http://47.112.160.66:8081/repository/maven-releases'} - maven { url 'http://127.0.0.1:8081/repository/maven-releases' } + maven { url 'http://47.112.160.66:8081/repository/maven-releases'} +// maven { url 'http://127.0.0.1:8081/repository/maven-releases' } google() mavenCentral() } @@ -24,8 +24,8 @@ rootProject.allprojects { maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' } -// maven { url 'http://47.112.160.66:8081/repository/maven-releases'} - maven { url 'http://127.0.0.1:8081/repository/maven-releases' } + maven { url 'http://47.112.160.66:8081/repository/maven-releases'} +// maven { url 'http://127.0.0.1:8081/repository/maven-releases' } google() mavenCentral() } @@ -45,6 +45,6 @@ android { } } dependencies { - implementation 'io.openim:client:0.0.7@aar' -// implementation 'io.openim:client-sdk:1.0.0@aar'//graoupId:artifactId:version@aar +// implementation 'io.openim:client:0.0.7@aar' + implementation 'io.openim:client-sdk:0.0.2@aar'//graoupId:artifactId:version@aar } \ No newline at end of file diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java b/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java index 6827a78..4997b6d 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java @@ -54,7 +54,7 @@ public class MessageManager { } public void deleteMessages(MethodCall methodCall, MethodChannel.Result result) { -// Open_im_sdk.deleteMessages(new BaseImpl(result), CommonUtil.getSDKJsonParam(methodCall)); +// Open_im_sdk.deleteMessages(new BaseListener(result), CommonUtil.getSDKJsonParam(methodCall)); } public void insertSingleMessageToLocalStorage(MethodCall methodCall, MethodChannel.Result result) { @@ -65,7 +65,7 @@ public class MessageManager { } public void findMessages(MethodCall methodCall, MethodChannel.Result result) { - Open_im_sdk.findMessages(new BaseListener(result), CommonUtil.getFindMessageIds(methodCall)); + Open_im_sdk.findMessages(new BaseListener(result), CommonUtil.getMessageIdList(methodCall)); } public void markSingleMessageHasRead(MethodCall methodCall, MethodChannel.Result result) { @@ -77,7 +77,14 @@ public class MessageManager { } public void markC2CMessageAsRead(MethodCall methodCall, MethodChannel.Result result) { -// Open_im_sdk.markC2CMessageAsRead(new BaseImpl(result), CommonUtil.getSingleMessageUserid(methodCall)); + Open_im_sdk.markC2CMessageAsRead(new BaseListener(result), + CommonUtil.getSingleMessageUserid(methodCall), + CommonUtil.getMessageIdList(methodCall)); + } + + public void typingStatusUpdate(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.typingStatusUpdate(CommonUtil.getSingleMessageUserid(methodCall), + CommonUtil.getSingleMessageTyping(methodCall)); } public void createTextMessage(MethodCall methodCall, MethodChannel.Result result) { diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java b/android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java index a5403fd..8ee3be3 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java @@ -199,7 +199,11 @@ public class CommonUtil { return getParamValue(methodCall, KEY_SINGLE_MESSAGE_SENDER); } - public static String getFindMessageIds(MethodCall methodCall) { + public static String getSingleMessageTyping(MethodCall methodCall) { + return getParamValue(methodCall, KEY_SINGLE_MESSAGE_TYPING); + } + + public static String getMessageIdList(MethodCall methodCall) { return getSDKJsonParam(methodCall, KEY_FIND_MESSAGE_IDS); } @@ -288,6 +292,7 @@ public class CommonUtil { final static String KEY_SINGLE_MESSAGE_CONTENT = "message"; final static String KEY_SINGLE_MESSAGE_USERID = "userID"; final static String KEY_SINGLE_MESSAGE_SENDER = "sender"; + final static String KEY_SINGLE_MESSAGE_TYPING = "typing"; //group chat final static String KEY_GROUP_MESSAGE_GROUPID = "groupID"; // find message diff --git a/lib/src/enum/message_type.dart b/lib/src/enum/message_type.dart index 657e9ee..95fd296 100644 --- a/lib/src/enum/message_type.dart +++ b/lib/src/enum/message_type.dart @@ -9,7 +9,7 @@ class MessageType { static const merger = 107; static const revoke = 111; static const has_read_receipt = 112; - static const typing = 112; + static const typing = 113; /// static const accept_friend = 201; diff --git a/lib/src/listener/advanced_msg_listener.dart b/lib/src/listener/advanced_msg_listener.dart index 116a9a1..41809b0 100644 --- a/lib/src/listener/advanced_msg_listener.dart +++ b/lib/src/listener/advanced_msg_listener.dart @@ -9,7 +9,7 @@ class AdvancedMsgListener { void onRecvNewMessage(Message msg) {} - void onRecvC2CReadReceipt(Message msg) {} + void onRecvC2CReadReceipt(HaveReadInfo info) {} void onRecvMessageRevoked(String msgId) {} } diff --git a/lib/src/manager/im_manager.dart b/lib/src/manager/im_manager.dart index 62a6d86..08f73c5 100644 --- a/lib/src/manager/im_manager.dart +++ b/lib/src/manager/im_manager.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:developer'; import 'package:flutter/services.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; @@ -138,11 +139,11 @@ class IMManager { } else if (call.method == ListenerType.advancedMsgListener) { var type = call.arguments['type']; var id = call.arguments['data']['id']; - + var value = call.arguments['data']['message']; + log('====================type:$type $value'); switch (type) { case 'onRecvNewMessage': - var msg = Message.fromJson( - _formatJson(call.arguments['data']['message'])); + var msg = Message.fromJson(_formatJson(value)); for (var listener in messageManager.advancedMsgListeners) { if (listener.id == id) { listener.onRecvNewMessage(msg); @@ -150,17 +151,17 @@ class IMManager { } break; case 'onRecvMessageRevoked': - var msgId = call.arguments['data']['message']; for (var listener in messageManager.advancedMsgListeners) { if (listener.id == id) { - listener.onRecvMessageRevoked(msgId); + listener.onRecvMessageRevoked(value); } } break; case 'onRecvC2CReadReceipt': + var info = HaveReadInfo.fromJson(_formatJson(value)); for (var listener in messageManager.advancedMsgListeners) { if (listener.id == id) { - listener.onRecvC2CReadReceipt(Message()); + listener.onRecvC2CReadReceipt(info); } } break; diff --git a/lib/src/manager/im_message_manager.dart b/lib/src/manager/im_message_manager.dart index 7f14e0a..4db74a0 100644 --- a/lib/src/manager/im_message_manager.dart +++ b/lib/src/manager/im_message_manager.dart @@ -36,7 +36,7 @@ class MessageManager { } /// send a message to user or to group - /// + /// userID: receiver's user ID Future sendMessage({ required Message message, String? userID, @@ -55,6 +55,7 @@ class MessageManager { } /// find all history message + /// userID: the user id of the chat partner Future> getHistoryMessageList({ String? userID, String? groupID, @@ -93,6 +94,8 @@ class MessageManager { } /// + /// @params userID: receiver's user ID + /// @params sender: current user ID Future insertSingleMessageToLocalStorage({ String? userID, Message? message, @@ -117,6 +120,7 @@ class MessageManager { } /// + /// @params userID: receiver's userID Future markSingleMessageHasRead({required String userID}) { return _channel.invokeMethod( 'markSingleMessageHasRead', _buildParam({'userID': userID})); @@ -128,6 +132,35 @@ class MessageManager { 'markGroupMessageHasRead', _buildParam({'groupID': groupID})); } + /// + /// @params userID: receiver's user ID + Future markC2CMessageAsRead({ + required String userID, + required List messageIDList, + }) { + return _channel.invokeMethod( + 'markC2CMessageAsRead', + _buildParam({ + "messageIDList": messageIDList, + "userID": userID, + })); + } + + /// + /// @params userID: receiver's user ID + /// @params status: default no + Future typingStatusUpdate({ + required String userID, + bool typing = false, + }) { + return _channel.invokeMethod( + 'typingStatusUpdate', + _buildParam({ + "typing": typing ? 'yes' : 'no', + "userID": userID, + })); + } + /// Future createTextMessage({required String text}) { return _channel diff --git a/lib/src/models/message.dart b/lib/src/models/message.dart index 1ef2a59..884726b 100644 --- a/lib/src/models/message.dart +++ b/lib/src/models/message.dart @@ -368,43 +368,41 @@ class AtElem { } } -class RevokeMessage { - String? serverMsgID; - String? sendID; - String? senderNickname; - String? recvID; - String? groupID; +class HaveReadInfo { + String? uid; + List? msgIDList; + int? readTime; + int? msgFrom; int? contentType; - int? sendTime; + int? sessionType; - RevokeMessage( - {this.serverMsgID, - this.sendID, - this.senderNickname, - this.recvID, - this.groupID, + HaveReadInfo( + {this.uid, + this.msgIDList, + this.readTime, + this.msgFrom, this.contentType, - this.sendTime}); + this.sessionType}); - RevokeMessage.fromJson(Map json) { - serverMsgID = json['serverMsgID']; - sendID = json['sendID']; - senderNickname = json['senderNickname']; - recvID = json['recvID']; - groupID = json['groupID']; + HaveReadInfo.fromJson(Map json) { + uid = json['uid']; + if (json['msgIDList'] is List) { + msgIDList = (json['msgIDList'] as List).map((e) => '$e').toList(); + } + readTime = json['readTime']; + msgFrom = json['msgFrom']; contentType = json['contentType']; - sendTime = json['sendTime']; + sessionType = json['sessionType']; } Map toJson() { final Map data = new Map(); - data['serverMsgID'] = this.serverMsgID; - data['sendID'] = this.sendID; - data['senderNickname'] = this.senderNickname; - data['recvID'] = this.recvID; - data['groupID'] = this.groupID; + data['uid'] = this.uid; + data['msgIDList'] = this.msgIDList; + data['readTime'] = this.readTime; + data['msgFrom'] = this.msgFrom; data['contentType'] = this.contentType; - data['sendTime'] = this.sendTime; + data['sessionType'] = this.sessionType; return data; } }