diff --git a/CHANGELOG.md b/CHANGELOG.md index 37ef682..e1bc425 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -103,4 +103,6 @@ ### 1.5.1 * fix: Add connection ack and return nodeId ### 1.5.2 - * fix: Add search channel and message method \ No newline at end of file + * fix: Add search channel and message method +### 1.5.3 + * fix: Compatibility message extension editing content is empty, parsing error issue \ No newline at end of file diff --git a/example/lib/chat.dart b/example/lib/chat.dart index 0bcf952..9882b36 100644 --- a/example/lib/chat.dart +++ b/example/lib/chat.dart @@ -319,9 +319,12 @@ class ChatListDataState extends State { '清空记录', style: TextStyle(color: Color.fromARGB(255, 4, 80, 194)), ), - onPressed: () { - WKIM.shared.messageManager - .clearWithChannel(channelID, channelType); + onPressed: () async { + var v = await WKIM.shared.messageManager + .getMaxExtraVersionWithChannel(channelID, channelType); + print(v); + // WKIM.shared.messageManager + // .clearWithChannel(channelID, channelType); }), ], ), @@ -360,7 +363,23 @@ class ChatListDataState extends State { ), MaterialButton( onPressed: () { - getLast(); + WKMsgExtra extra = WKMsgExtra(); + extra.messageID = "112"; + extra.channelID = channelID; + extra.channelType = channelType; + extra.readed = 1; + extra.extraVersion = 100871; + List list = []; + list.add(extra); + WKMsgExtra extra1 = WKMsgExtra(); + extra1.messageID = "1122"; + extra1.channelID = channelID; + extra1.channelType = channelType; + extra1.readed = 1; + extra1.extraVersion = 100872; + list.add(extra1); + WKIM.shared.messageManager.saveRemoteExtraMsg(list); + // getLast(); }, color: Colors.brown, child: diff --git a/example/lib/http.dart b/example/lib/http.dart index e4c7df4..c497227 100644 --- a/example/lib/http.dart +++ b/example/lib/http.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'dart:io'; import 'package:dio/dio.dart'; +import 'package:dio/io.dart'; import 'package:example/const.dart'; import 'package:wukongimfluttersdk/entity/conversation.dart'; import 'package:wukongimfluttersdk/entity/msg.dart'; @@ -10,7 +11,17 @@ class HttpUtils { static String apiURL = "https://api.githubim.com"; static Future login(String uid, String token) async { + final httpClient = HttpClient(); + httpClient.badCertificateCallback = + (X509Certificate cert, String host, int port) { + // 信任所有证书 + return true; + }; final dio = Dio(); + dio.httpClientAdapter = DefaultHttpClientAdapter() + ..onHttpClientCreate = (client) { + return httpClient; + }; final response = await dio.post("$apiURL/user/token", data: { 'uid': uid, 'token': token, @@ -21,7 +32,17 @@ class HttpUtils { } static Future getIP() async { + final httpClient = HttpClient(); + httpClient.badCertificateCallback = + (X509Certificate cert, String host, int port) { + // 信任所有证书 + return true; + }; final dio = Dio(); + dio.httpClientAdapter = DefaultHttpClientAdapter() + ..onHttpClientCreate = (client) { + return httpClient; + }; String ip = ''; final response = await dio.get('$apiURL/route'); if (response.statusCode == HttpStatus.ok) { @@ -32,7 +53,17 @@ class HttpUtils { static syncConversation(String lastSsgSeqs, int msgCount, int version, Function(WKSyncConversation) back) async { + final httpClient = HttpClient(); + httpClient.badCertificateCallback = + (X509Certificate cert, String host, int port) { + // 信任所有证书 + return true; + }; final dio = Dio(); + dio.httpClientAdapter = DefaultHttpClientAdapter() + ..onHttpClientCreate = (client) { + return httpClient; + }; final response = await dio.post('$apiURL/conversation/sync', data: { "uid": UserInfo.uid, // 当前登录用户uid "version": version, // 当前客户端的会话最大版本号(从保存的结果里取最大的version,如果本地没有数据则传0), @@ -84,7 +115,17 @@ class HttpUtils { int limit, int pullMode, Function(WKSyncChannelMsg) back) async { + final httpClient = HttpClient(); + httpClient.badCertificateCallback = + (X509Certificate cert, String host, int port) { + // 信任所有证书 + return true; + }; final dio = Dio(); + dio.httpClientAdapter = DefaultHttpClientAdapter() + ..onHttpClientCreate = (client) { + return httpClient; + }; final response = await dio.post('$apiURL/channel/messagesync', data: { "login_uid": UserInfo.uid, // 当前登录用户uid "channel_id": channelID, // 频道ID diff --git a/lib/db/channel.dart b/lib/db/channel.dart index 141fe6c..12f2542 100644 --- a/lib/db/channel.dart +++ b/lib/db/channel.dart @@ -114,7 +114,7 @@ class ChannelDB { Future> search(String keyword) async { List list = []; var sql = - "select t.*,cm.member_name,cm.member_remark from (select ${WKDBConst.tableChannel}.*,max( ${WKDBConst.tableChannelMember}.id) mid from ${WKDBConst.tableChannel}, ${WKDBConst.tableChannelMember} where ${WKDBConst.tableChannel}.channel_id=${WKDBConst.tableChannelMember}.channel_id and ${WKDBConst.tableChannel}.channel_type=${WKDBConst.tableChannelMember}.channel_type and (${WKDBConst.tableChannel}.channel_name like ? or ${WKDBConst.tableChannel}.channel_remark like ? or ${WKDBConst.tableChannelMember}.member_name like ? or ${WKDBConst.tableChannelMember}.member_remark like ?) group by ${WKDBConst.tableChannel}.channel_id,${WKDBConst.tableChannel}.channel_type) t,${WKDBConst.tableChannelMember} cm where t.channel_id=cm.channel_id and t.channel_type=cm.channel_type and t.mid=cm.id"; + "select t.*,cm.member_name,cm.member_remark from (select ${WKDBConst.tableChannel}.*,max(${WKDBConst.tableChannelMember}.id) mid from ${WKDBConst.tableChannel}, ${WKDBConst.tableChannelMember} where ${WKDBConst.tableChannel}.channel_id=${WKDBConst.tableChannelMember}.channel_id and ${WKDBConst.tableChannel}.channel_type=${WKDBConst.tableChannelMember}.channel_type and (${WKDBConst.tableChannel}.channel_name like ? or ${WKDBConst.tableChannel}.channel_remark like ? or ${WKDBConst.tableChannelMember}.member_name like ? or ${WKDBConst.tableChannelMember}.member_remark like ?) group by ${WKDBConst.tableChannel}.channel_id,${WKDBConst.tableChannel}.channel_type) t,${WKDBConst.tableChannelMember} cm where t.channel_id=cm.channel_id and t.channel_type=cm.channel_type and t.mid=cm.id"; List> results = await WKDBHelper.shared .getDB()! .rawQuery( diff --git a/lib/db/const.dart b/lib/db/const.dart index 5a33636..e083e44 100644 --- a/lib/db/const.dart +++ b/lib/db/const.dart @@ -51,13 +51,17 @@ class WKDBConst { msg.localExtraMap = readDynamic(data, 'extra'); if (msg.content != '') { dynamic contentJson = jsonDecode(msg.content); - msg.messageContent = WKIM.shared.messageManager - .getMessageModel(msg.contentType, contentJson); + if (contentJson != null && contentJson != '') { + msg.messageContent = WKIM.shared.messageManager + .getMessageModel(msg.contentType, contentJson); + } } if (msg.wkMsgExtra!.contentEdit != '') { dynamic json = jsonDecode(msg.wkMsgExtra!.contentEdit); - msg.wkMsgExtra!.messageContent = WKIM.shared.messageManager - .getMessageModel(WkMessageContentType.text, json); + if (json != null && json != '') { + msg.wkMsgExtra!.messageContent = WKIM.shared.messageManager + .getMessageModel(WkMessageContentType.text, json); + } } return msg; diff --git a/pubspec.yaml b/pubspec.yaml index af6fbd3..1191bca 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ description: wukong IM flutter sdk # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.5.2 +version: 1.5.3 homepage: https://github.com/WuKongIM/WuKongIMFlutterSDK environment: