From 65f0a819ac3b85ff92879e18ee04fb34580ba4b6 Mon Sep 17 00:00:00 2001 From: SL Date: Tue, 9 Jul 2024 14:53:46 +0800 Subject: [PATCH] fix:update send message api --- example/lib/chat.dart | 10 +++---- lib/entity/msg.dart | 9 +++++- lib/manager/connect_manager.dart | 8 +++--- lib/manager/message_manager.dart | 46 +++++++++++++++++++------------ lib/model/wk_message_content.dart | 1 + 5 files changed, 47 insertions(+), 27 deletions(-) diff --git a/example/lib/chat.dart b/example/lib/chat.dart index dfc6569..3a9768a 100644 --- a/example/lib/chat.dart +++ b/example/lib/chat.dart @@ -1,5 +1,3 @@ -import 'dart:ffi'; - import 'package:example/const.dart'; import 'package:flutter/material.dart'; import 'package:wukongimfluttersdk/entity/channel.dart'; @@ -9,7 +7,6 @@ import 'package:wukongimfluttersdk/proto/proto.dart'; import 'package:wukongimfluttersdk/type/const.dart'; import 'package:wukongimfluttersdk/wkim.dart'; -import 'custom_message.dart'; import 'msg.dart'; class ChatPage extends StatelessWidget { @@ -399,8 +396,11 @@ class ChatListDataState extends State { mentionInfo.uids = ['uid_1', 'uid_2']; text.mentionInfo = mentionInfo; // CustomMsg customMsg = CustomMsg(content); - WKIM.shared.messageManager.sendMessageWithSetting( - text, WKChannel(channelID, channelType), setting); + var option = WKSendOptions(); + option.setting = setting; + WKIM.shared.messageManager.sendWithOption( + text, WKChannel(channelID, channelType), option); + // WKImageContent imageContent = WKImageContent(100, 200); // imageContent.localPath = 'addskds'; // WKIM.shared.messageManager.sendMessage( diff --git a/lib/entity/msg.dart b/lib/entity/msg.dart index 59d6cc0..099da46 100644 --- a/lib/entity/msg.dart +++ b/lib/entity/msg.dart @@ -72,7 +72,7 @@ class WKMsg { } class MessageHeader { - bool redDot = false; // 是否显示红点 + bool redDot = true; // 是否显示红点 bool noPersist = false; // 是否不存储 bool syncOnce = false; // 是否只同步一次 } @@ -295,3 +295,10 @@ class WKMentionInfo { bool mentionAll = false; List? uids; } + +class WKSendOptions { + MessageHeader header = MessageHeader(); + Setting setting = Setting(); + int expire = 0; + String topicID = ""; +} diff --git a/lib/manager/connect_manager.dart b/lib/manager/connect_manager.dart index bfdc078..5f8508c 100644 --- a/lib/manager/connect_manager.dart +++ b/lib/manager/connect_manager.dart @@ -403,6 +403,7 @@ class WKConnectionManager { packet.clientSeq = wkMsg.clientSeq; packet.clientMsgNO = wkMsg.clientMsgNO; packet.topic = wkMsg.topicID; + packet.expire = wkMsg.expireTime; packet.payload = wkMsg.content; _addSendingMsg(packet); _sendPacket(packet); @@ -500,11 +501,10 @@ class WKConnectionManager { int isDelete = 0; if (jsonObject != null) { var visibles = jsonObject['visibles']; - if (visibles != null) { + if (visibles != null && visibles is List) { bool isIncludeLoginUser = false; - var uids = visibles as List; - for (int i = 0, size = uids.length; i < size; i++) { - if (uids[i] == WKIM.shared.options.uid) { + for (int i = 0, size = visibles.length; i < size; i++) { + if (visibles[i] == WKIM.shared.options.uid) { isIncludeLoginUser = true; break; } diff --git a/lib/manager/message_manager.dart b/lib/manager/message_manager.dart index eac571a..572a7b5 100644 --- a/lib/manager/message_manager.dart +++ b/lib/manager/message_manager.dart @@ -68,7 +68,7 @@ class WKMessageManager { } // var entities = WKDBConst.readString(json, 'entities'); var jsonArray = json['entities']; - if (jsonArray != null) { + if (jsonArray != null && jsonArray is List) { // var jsonArray = jsonDecode(entities); List list = []; for (var entityJson in jsonArray) { @@ -87,7 +87,7 @@ class WKMessageManager { var mentionInfo = WKMentionInfo(); var mentionAll = WKDBConst.readInt(mentionJson, 'all'); var uidList = mentionJson['uids']; - if (uidList != null) { + if (uidList != null && uidList is List) { List uids = []; for (var uid in uidList) { uids.add(uid); @@ -554,25 +554,20 @@ class WKMessageManager { } sendMessage(WKMessageContent messageContent, WKChannel channel) async { - var header = MessageHeader(); - header.redDot = true; - sendMessageWithSettingAndHeader(messageContent, channel, Setting(), header); + sendWithOption(messageContent, channel, WKSendOptions()); } - sendMessageWithSetting( - WKMessageContent messageContent, WKChannel channel, Setting setting) { - var header = MessageHeader(); - header.redDot = true; - sendMessageWithSettingAndHeader(messageContent, channel, setting, header); - } - - sendMessageWithSettingAndHeader(WKMessageContent messageContent, - WKChannel channel, Setting setting, MessageHeader header) async { + sendWithOption(WKMessageContent messageContent, WKChannel channel, + WKSendOptions options) async { WKMsg wkMsg = WKMsg(); - wkMsg.setting = setting; - wkMsg.header = header; + wkMsg.setting = options.setting; + wkMsg.header = options.header; wkMsg.messageContent = messageContent; - wkMsg.topicID = messageContent.topicId; + wkMsg.topicID = options.topicID; + wkMsg.expireTime = options.expire; + if (wkMsg.expireTime > 0) { + wkMsg.expireTimestamp = wkMsg.timestamp + wkMsg.expireTime; + } wkMsg.channelID = channel.channelID; wkMsg.channelType = channel.channelType; wkMsg.fromUID = WKIM.shared.options.uid!; @@ -633,6 +628,23 @@ class WKMessageManager { } } + @Deprecated('use sendWithOption') + sendMessageWithSetting( + WKMessageContent messageContent, WKChannel channel, Setting setting) { + var header = MessageHeader(); + header.redDot = true; + sendMessageWithSettingAndHeader(messageContent, channel, setting, header); + } + + @Deprecated('use sendWithOption') + sendMessageWithSettingAndHeader(WKMessageContent messageContent, + WKChannel channel, Setting setting, MessageHeader header) async { + var options = WKSendOptions(); + options.setting = setting; + options.header = header; + sendWithOption(messageContent, channel, options); + } + String _getSendPayload(WKMsg wkMsg) { dynamic json = wkMsg.messageContent!.encodeJson(); json['type'] = wkMsg.contentType; diff --git a/lib/model/wk_message_content.dart b/lib/model/wk_message_content.dart index a7bc331..bc7dfc9 100644 --- a/lib/model/wk_message_content.dart +++ b/lib/model/wk_message_content.dart @@ -3,6 +3,7 @@ import 'package:wukongimfluttersdk/entity/msg.dart'; class WKMessageContent { var contentType = 0; String content = ""; + @Deprecated('Mark with WKSendOptions') String topicId = ""; WKReply? reply; List? entities;