From 9c11e66fd542f472443ad60a6a0d5ea684ad191e Mon Sep 17 00:00:00 2001 From: anonymous Date: Fri, 27 Oct 2023 15:38:08 +0800 Subject: [PATCH] feat: Upgrade to 2.3.3 --- CHANGELOG.md | 10 + example/pubspec.lock | 36 +- .../life_cycle/base_life_cycle.dart | 56 +- .../life_cycle/chat_life_cycle.dart | 11 +- .../view_models/tui_chat_global_model.dart | 320 +++-------- .../message/message_service_implement.dart | 528 ++++-------------- lib/ui/utils/sound_record.dart | 20 +- lib/ui/utils/time_ago.dart | 40 +- .../tim_uikit_chat_history_message_list.dart | 9 +- .../tim_uikit_chat_sound_elem.dart | 65 +-- pubspec.lock | 50 +- pubspec.yaml | 10 +- 12 files changed, 326 insertions(+), 829 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de4a940..b17f96e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +# 2.3.3 + +## New Features + +* Added a new lifecycle hook, `messageListShouldMount`. + +## Bug Fixes + +* Fixed an issue on time tag creator. + # 2.3.2 ## Improvements diff --git a/example/pubspec.lock b/example/pubspec.lock index 4391ca4..36cb781 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -85,26 +85,26 @@ packages: dependency: transitive description: name: cached_network_image - sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15 + sha256: f98972704692ba679db144261172a8e20feb145636c617af0eb4022132a6797f url: "https://pub.dev" source: hosted - version: "3.2.3" + version: "3.3.0" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7 + sha256: "56aa42a7a01e3c9db8456d9f3f999931f1e05535b5a424271e9a38cabf066613" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.0" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0 + sha256: "759b9a9f8f6ccbb66c185df805fac107f05730b1dab9c64626d1008cca532257" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" camera: dependency: transitive description: @@ -237,18 +237,18 @@ packages: dependency: transitive description: name: dart_internal - sha256: dae3976f383beddcfcd07ad5291a422df2c8c0a8a03c52cda63ac7b4f26e0f4e + sha256: "689dccc3d5f62affd339534cca548dce12b3a6b32f0f10861569d3025efc0567" url: "https://pub.dev" source: hosted - version: "0.2.8" + version: "0.2.9" desktop_drop: dependency: transitive description: name: desktop_drop - sha256: "4ca4d960f4b11c032e9adfd2a0a8ac615bc3fddb4cbe73dcf840dd8077582186" + sha256: d55a010fe46c8e8fcff4ea4b451a9ff84a162217bdb3b2a0aa1479776205e15d url: "https://pub.dev" source: hosted - version: "0.4.1" + version: "0.4.4" device_info_plus: dependency: transitive description: @@ -414,14 +414,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_blurhash: - dependency: transitive - description: - name: flutter_blurhash - sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6" - url: "https://pub.dev" - source: hosted - version: "0.7.0" flutter_cache_manager: dependency: transitive description: @@ -796,10 +788,10 @@ packages: dependency: transitive description: name: octo_image - sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143" + sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "2.0.0" open_file: dependency: transitive description: @@ -1211,7 +1203,7 @@ packages: path: ".." relative: true source: path - version: "2.3.0" + version: "2.3.3-preview.0" tencent_cloud_uikit_core: dependency: transitive description: @@ -1565,5 +1557,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0-185.0.dev <3.2.0" + dart: ">=3.1.0-185.0.dev <3.3.0" flutter: ">=3.13.0" diff --git a/lib/business_logic/life_cycle/base_life_cycle.dart b/lib/business_logic/life_cycle/base_life_cycle.dart index ef1f7f4..e7a377a 100644 --- a/lib/business_logic/life_cycle/base_life_cycle.dart +++ b/lib/business_logic/life_cycle/base_life_cycle.dart @@ -1,50 +1,46 @@ import 'package:flutter/cupertino.dart'; -import 'package:tencent_im_base/tencent_im_base.dart'; import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_class.dart'; +import 'package:tencent_im_base/tencent_im_base.dart'; typedef MessageFunction = Future Function(V2TimMessage message); typedef MessageFunctionNullCallback = Function(V2TimValueCallback res); -typedef MessageFunctionOptional = Future Function( - V2TimMessage message); +typedef MessageFunctionOptional = Future Function(V2TimMessage message); -typedef MessageListFunction = Future> Function( - List messageList); +typedef MessageListFunction = Future> Function(List messageList); + +typedef MessageListFunctionAsync = List Function(List messageList); typedef FutureBool = Future; -typedef AddFriendFunction = Function( - String userID, String? remark, String? friendGroup, String? addWording); +typedef AddFriendFunction = Function(String userID, String? remark, String? friendGroup, String? addWording); -typedef ConversationListFunction = Future> Function( - List conversationList); +typedef ConversationListFunction = Future> Function(List conversationList); -typedef FriendListFunction = Future> Function( - List friendList); +typedef FriendListFunction = Future> Function(List friendList); -typedef FriendInfoFunction = Future Function( - V2TimFriendInfo? friendInfo); +typedef FriendInfoFunction = Future Function(V2TimFriendInfo? friendInfo); /// Here is the default life cycle hooks implementation for all the hooks in TUIKit. abstract class DefaultLifeCycle { - static Future> defaultConversationListSolution( - List list) async { + static Future> defaultConversationListSolution(List list) async { return list; } - static Future> defaultFriendListSolution( - List list) async { + static Future> defaultFriendListSolution(List list) async { return list; } - static Future defaultMessageSolution( - V2TimMessage message) async { + static Future defaultMessageSolution(V2TimMessage message) async { return message; } - static Future> defaultMessageListSolution( - List list) async { + static Future> defaultMessageListSolution(List list) async { + return list; + } + + static List defaultMessageListSolutionAsync(List list) { return list; } @@ -56,31 +52,23 @@ abstract class DefaultLifeCycle { return true; } - static defaultNullCallbackSolution(dynamic) { - } + static defaultNullCallbackSolution(dynamic) {} - static Future defaultAddFriend( - String userID, String? remark, String? friendGroup, String? addWording, - [BuildContext? context]) async { + static Future defaultAddFriend(String userID, String? remark, String? friendGroup, String? addWording, [BuildContext? context]) async { return true; } - static Future defaultAddGroup(String groupID, String message, - [BuildContext? context]) async { + static Future defaultAddGroup(String groupID, String message, [BuildContext? context]) async { return true; } - static Future defaultFriendInfoSolution( - V2TimFriendInfo? friendInfo) async { + static Future defaultFriendInfoSolution(V2TimFriendInfo? friendInfo) async { return friendInfo; } static Future defaultPopBackRemind() async { // You have to implement the exact life cycle hook in this case. - TIMUIKitClass.onTIMCallback(TIMCallback( - type: TIMCallbackType.INFO, - infoRecommendText: TIM_t("请传入离开群组生命周期函数,提供返回首页或其他页面的导航方法。"), - infoCode: 6661402)); + TIMUIKitClass.onTIMCallback(TIMCallback(type: TIMCallbackType.INFO, infoRecommendText: TIM_t("请传入离开群组生命周期函数,提供返回首页或其他页面的导航方法。"), infoCode: 6661402)); return; } } diff --git a/lib/business_logic/life_cycle/chat_life_cycle.dart b/lib/business_logic/life_cycle/chat_life_cycle.dart index 15ed3e4..d7d0bea 100644 --- a/lib/business_logic/life_cycle/chat_life_cycle.dart +++ b/lib/business_logic/life_cycle/chat_life_cycle.dart @@ -34,16 +34,19 @@ class ChatLifeCycle { /// Before rendering a message to message list. bool Function(V2TimMessage msg) messageShouldMount; + /// Before all message will be rendered on the message list. + /// You may add or delete some messages here. + MessageListFunctionAsync messageListShouldMount; + ChatLifeCycle({ - this.shouldClearHistoricalMessageList = - DefaultLifeCycle.defaultAsyncBooleanSolution, + this.shouldClearHistoricalMessageList = DefaultLifeCycle.defaultAsyncBooleanSolution, this.shouldDeleteMessage = DefaultLifeCycle.defaultAsyncBooleanSolution, this.messageDidSend = DefaultLifeCycle.defaultNullCallbackSolution, - this.didGetHistoricalMessageList = - DefaultLifeCycle.defaultMessageListSolution, + this.didGetHistoricalMessageList = DefaultLifeCycle.defaultMessageListSolution, this.messageWillSend = DefaultLifeCycle.defaultMessageSolution, this.modifiedMessageWillMount = DefaultLifeCycle.defaultMessageSolution, this.newMessageWillMount = DefaultLifeCycle.defaultMessageSolution, this.messageShouldMount = DefaultLifeCycle.defaultBooleanSolution, + this.messageListShouldMount = DefaultLifeCycle.defaultMessageListSolutionAsync, }); } diff --git a/lib/business_logic/view_models/tui_chat_global_model.dart b/lib/business_logic/view_models/tui_chat_global_model.dart index 327e6fa..561eb07 100644 --- a/lib/business_logic/view_models/tui_chat_global_model.dart +++ b/lib/business_logic/view_models/tui_chat_global_model.dart @@ -4,6 +4,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'dart:math'; + import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_class.dart'; @@ -14,18 +15,13 @@ import 'package:tencent_cloud_chat_uikit/data_services/message/message_services. import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart'; import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart'; import 'package:tencent_cloud_chat_uikit/ui/constants/history_message_constant.dart'; -import 'package:tencent_cloud_chat_uikit/ui/utils/message.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/logger.dart'; +import 'package:tencent_cloud_chat_uikit/ui/utils/message.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/platform.dart'; enum ConvType { none, c2c, group } -enum HistoryMessagePosition { - bottom, - inTwoScreen, - awayTwoScreen, - notShowLatest -} +enum HistoryMessagePosition { bottom, inTwoScreen, awayTwoScreen, notShowLatest } class CurrentConversation { final String conversationID; @@ -49,8 +45,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { ChatLifeCycle? _lifeCycle; bool _isDownloading = false; - final List> _waitingDownloadList = - List.empty(growable: true); // example {"savePath":"","url":"",msgId:""} + final List> _waitingDownloadList = List.empty(growable: true); // example {"savePath":"","url":"",msgId:""} int _totalUnreadCount = 0; String localKeyPrefix = "TUIKit_conversation_stored_"; String localMsgIDListKey = "TUIKit_conversation_list"; @@ -63,8 +58,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { TIMUIKitChatConfig chatConfig = const TIMUIKitChatConfig(); List? _groupApplicationList; String Function(V2TimMessage message)? _abstractMessageBuilder; - final Map _c2cMessageEditStatusMap = - Map.from({}); // 0 normal 1 sending + final Map _c2cMessageEditStatusMap = Map.from({}); // 0 normal 1 sending final Map _c2cMessageFromUserActiveMap = Map.from({}); final Map _c2cMessageActiveTimer = Map.from({}); bool _showC2cMessageEditStatus = true; @@ -91,8 +85,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { onRecvMessageModified: (V2TimMessage newMsg) { onMessageModified(newMsg); }, - onMessageDownloadProgressCallback: - (V2TimMessageDownloadProgress messageProgress) { + onMessageDownloadProgressCallback: (V2TimMessageDownloadProgress messageProgress) { onMessageDownloadProgressCallback(messageProgress); }, ); @@ -188,24 +181,15 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { int get unreadCountForConversation => _unreadCountForConversation; - List get groupApplicationList => - _groupApplicationList ?? []; + List get groupApplicationList => _groupApplicationList ?? []; - String Function(V2TimMessage message)? get abstractMessageBuilder => - _abstractMessageBuilder; + String Function(V2TimMessage message)? get abstractMessageBuilder => _abstractMessageBuilder; - Map get messageReadReceiptMap => - _messageReadReceiptMap; + Map get messageReadReceiptMap => _messageReadReceiptMap; - String get currentSelectedConv => _currentConversationList.isNotEmpty - ? _currentConversationList[_currentConversationList.length - 1] - .conversationID - : ""; + String get currentSelectedConv => _currentConversationList.isNotEmpty ? _currentConversationList[_currentConversationList.length - 1].conversationID : ""; - ConvType? get currentSelectedConvType => _currentConversationList.isNotEmpty - ? _currentConversationList[_currentConversationList.length - 1] - .conversationType - : null; + ConvType? get currentSelectedConvType => _currentConversationList.isNotEmpty ? _currentConversationList[_currentConversationList.length - 1].conversationType : null; setCurrentConversation(CurrentConversation value) { _currentConversationList.add(value); @@ -214,9 +198,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { clearCurrentConversation() { // Only keep the last 20 messages when existing a chat. - _messageListMap[currentSelectedConv] = - (_messageListMap[currentSelectedConv] ?? []).sublist( - max(0, ((_messageListMap[currentSelectedConv] ?? []).length - 20))); + _messageListMap[currentSelectedConv] = (_messageListMap[currentSelectedConv] ?? []).sublist(max(0, ((_messageListMap[currentSelectedConv] ?? []).length - 20))); _currentConversationList.removeLast(); // notifyListeners(); } @@ -239,8 +221,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { _c2cMessageEditStatusMap[userID] = 0; } } - _c2cMessageStatusShowTimer[userID] = - Timer.periodic(const Duration(seconds: 5), (timer) { + _c2cMessageStatusShowTimer[userID] = Timer.periodic(const Duration(seconds: 5), (timer) { _c2cMessageEditStatusMap[userID] = 0; Timer? t = _c2cMessageStatusShowTimer[userID]; if (t != null && t.isActive) { @@ -282,23 +263,17 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { chatConfig = config; } - initMessageMapFromLocalDatabase( - List conversations) async { + initMessageMapFromLocalDatabase(List conversations) async { int index = 0; for (V2TimConversation? conversationItem in conversations) { if (conversationItem == null || conversationItem.type == null) { return; } - final conversationID = conversationItem.userID ?? - conversationItem.groupID ?? - conversationItem.conversationID; - if (messageListMap[conversationID] == null || - messageListMap[conversationID]!.isEmpty) { + final conversationID = conversationItem.userID ?? conversationItem.groupID ?? conversationItem.conversationID; + if (messageListMap[conversationID] == null || messageListMap[conversationID]!.isEmpty) { index++; Future.delayed(Duration(milliseconds: 500 * index), () { - preloadMessageForConversation( - conversationID: conversationID, - conversationType: ConvType.values[conversationItem.type!]); + preloadMessageForConversation(conversationID: conversationID, conversationType: ConvType.values[conversationItem.type!]); }); } } @@ -309,12 +284,8 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { required String conversationID, }) async { final response = await _messageService.getHistoryMessageList( - count: 10, - getType: HistoryMsgGetTypeEnum.V2TIM_GET_LOCAL_OLDER_MSG, - userID: conversationType == ConvType.c2c ? conversationID : null, - groupID: conversationType == ConvType.group ? conversationID : null); - if (_messageListMap[conversationID] == null || - _messageListMap[conversationID]!.isEmpty) { + count: 10, getType: HistoryMsgGetTypeEnum.V2TIM_GET_LOCAL_OLDER_MSG, userID: conversationType == ConvType.c2c ? conversationID : null, groupID: conversationType == ConvType.group ? conversationID : null); + if (_messageListMap[conversationID] == null || _messageListMap[conversationID]!.isEmpty) { _messageListMap[conversationID] = response; } } @@ -332,15 +303,9 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { prefs.remove(localMsgIDListKey); } - Future updateMessageFromController( - {required String msgID, - required String conversationID, - required ConvType conversationType}) async { + Future updateMessageFromController({required String msgID, required String conversationID, required ConvType conversationType}) async { final TUIChatModelTools tools = serviceLocator(); - V2TimMessage? newMessage = await tools.getExistingMessageByID( - msgID: msgID, - conversationID: conversationID, - conversationType: conversationType); + V2TimMessage? newMessage = await tools.getExistingMessageByID(msgID: msgID, conversationID: conversationID, conversationType: conversationType); if (newMessage != null) { onMessageModified(newMessage, currentSelectedConv); } @@ -363,14 +328,10 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } _preLoadImage(List msgList) { - List needPreViewList = - msgList.sublist(0, max(0, min(5, msgList.length - 1))); + List needPreViewList = msgList.sublist(0, max(0, min(5, msgList.length - 1))); for (var msgItem in needPreViewList) { V2TimImage? getImageFromList(V2TimImageTypesEnum imgType) { - V2TimImage? img = MessageUtils.getImageFromImgList( - msgItem.imageElem?.imageList, - HistoryMessageDartConstant.imgPriorMap[imgType] ?? - HistoryMessageDartConstant.oriImgPrior); + V2TimImage? img = MessageUtils.getImageFromImgList(msgItem.imageElem?.imageList, HistoryMessageDartConstant.imgPriorMap[imgType] ?? HistoryMessageDartConstant.oriImgPrior); return img; } @@ -380,12 +341,9 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { ImageConfiguration configuration = const ImageConfiguration(); final image = FileImage(File((originalImg.localUrl!))); - image.resolve(configuration).addListener( - ImageStreamListener((ImageInfo image, bool synchronousCall) { + image.resolve(configuration).addListener(ImageStreamListener((ImageInfo image, bool synchronousCall) { final tempImg = image.image; - _preloadImageMap[msgItem.seq! + - msgItem.timestamp.toString() + - (msgItem.msgID ?? "")] = tempImg; + _preloadImageMap[msgItem.seq! + msgItem.timestamp.toString() + (msgItem.msgID ?? "")] = tempImg; outputLogger.i("cacheImage ${msgItem.msgID}"); })); } catch (e) { @@ -429,8 +387,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { _editStatusCheck(V2TimMessage msg) { bool isStatusMessage = false; - if (msg.customElem != null && - TencentUtils.checkString(msg.groupID) == null) { + if (msg.customElem != null && TencentUtils.checkString(msg.groupID) == null) { V2TimCustomElem customElem = msg.customElem!; String sender = msg.sender ?? ""; if (customElem.data!.isNotEmpty) { @@ -450,8 +407,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { if (userAction != null) { if (userAction == 14) { if (actionParam != null) { - setC2cMessageEditStatus(sender, - actionParam == "EIMAMSG_InputStatus_Ing" ? 1 : 0); + setC2cMessageEditStatus(sender, actionParam == "EIMAMSG_InputStatus_Ing" ? 1 : 0); } } } @@ -486,8 +442,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { t.cancel(); } } - _c2cMessageActiveTimer[msg.sender ?? ""] = - Timer.periodic(const Duration(seconds: 30), (timer) { + _c2cMessageActiveTimer[msg.sender ?? ""] = Timer.periodic(const Duration(seconds: 30), (timer) { _c2cMessageFromUserActiveMap[msg.sender ?? ""] = false; Timer? t = _c2cMessageActiveTimer[msg.sender ?? ""]; if (t != null && t.isActive) { @@ -511,15 +466,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { return; } V2TimMsgCreateInfoResult? res = await _messageService.createCustomMessage( - data: json.encode({ - "businessID": "user_typing_status", - "typingStatus": isEditing == true ? 1 : 0, - "userAction": 14, - "version": 0, - "actionParam": isEditing == true - ? "EIMAMSG_InputStatus_Ing" - : "EIMAMSG_InputStatus_End" - })); + data: json.encode({"businessID": "user_typing_status", "typingStatus": isEditing == true ? 1 : 0, "userAction": 14, "version": 0, "actionParam": isEditing == true ? "EIMAMSG_InputStatus_Ing" : "EIMAMSG_InputStatus_End"})); if (res != null) { _sendMessage( id: res.id!, @@ -555,9 +502,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } _onReceiveNewMsg(V2TimMessage msgComing) async { - final V2TimMessage? newMsg = _lifeCycle?.newMessageWillMount != null - ? await _lifeCycle?.newMessageWillMount(msgComing) - : msgComing; + final V2TimMessage? newMsg = _lifeCycle?.newMessageWillMount != null ? await _lifeCycle?.newMessageWillMount(msgComing) : msgComing; if (newMsg == null) { return; } @@ -571,16 +516,13 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { _checkFromUserisActive(msgComing); final convID = TencentUtils.checkString(newMsg.userID) ?? newMsg.groupID; - final convType = TencentUtils.checkString(newMsg.groupID) != null - ? ConvType.group - : ConvType.c2c; + final convType = TencentUtils.checkString(newMsg.groupID) != null ? ConvType.group : ConvType.c2c; if (convID != null && convID == currentSelectedConv) { final position = getMessageListPosition(convID); if (position == HistoryMessagePosition.notShowLatest) { return; } - if (position == HistoryMessagePosition.bottom && - unreadCountForConversation == 0) { + if (position == HistoryMessagePosition.bottom && unreadCountForConversation == 0) { _unreadCountForConversation = 0; if (chatConfig.isAutoReportRead) { Future.delayed(const Duration(seconds: 1), () { @@ -596,11 +538,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { notifyListeners(); final messageID = newMsg.msgID; final needReadReceipt = newMsg.needReadReceipt ?? false; - if (needReadReceipt && - messageID != null && - msgComing.groupID != null && - chatConfig.isReportGroupReadingStatus && - chatConfig.isAutoReportRead) { + if (needReadReceipt && messageID != null && msgComing.groupID != null && chatConfig.isReportGroupReadingStatus && chatConfig.isAutoReportRead) { // only group message send message read receipt Future.delayed(const Duration(seconds: 1), () { sendMessageReadReceipts([messageID]); @@ -623,19 +561,16 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } sendMessageReadReceipts(List messageIDList) async { - final res = await _messageService.sendMessageReadReceipts( - messageIDList: messageIDList); + final res = await _messageService.sendMessageReadReceipts(messageIDList: messageIDList); return res; } onMessageRevoked(String msgID, [String? convID]) { final activeMessageList = _messageListMap[convID ?? currentSelectedConv]; if (activeMessageList != null) { - final findeIndex = - activeMessageList.indexWhere((element) => element.msgID == msgID); + final findeIndex = activeMessageList.indexWhere((element) => element.msgID == msgID); if (findeIndex != -1) { - final findeIndex = - activeMessageList.indexWhere((element) => element.msgID == msgID); + final findeIndex = activeMessageList.indexWhere((element) => element.msgID == msgID); if (findeIndex != -1) { final targetItem = activeMessageList[findeIndex]; targetItem.status = MessageStatus.V2TIM_MSG_STATUS_LOCAL_REVOKED; @@ -650,15 +585,12 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { onMessageModified(V2TimMessage modifiedMessage, [String? convID]) async { modifiedMessage.id = DateTime.now().millisecondsSinceEpoch.toString(); - final String? exactId = TencentUtils.checkString(modifiedMessage.userID) ?? - TencentUtils.checkString(modifiedMessage.groupID); + final String? exactId = TencentUtils.checkString(modifiedMessage.userID) ?? TencentUtils.checkString(modifiedMessage.groupID); final activeMessageList = _messageListMap[convID ?? exactId]; if (activeMessageList == null || activeMessageList.isEmpty) { return; } - final V2TimMessage newMsg = - await _lifeCycle?.modifiedMessageWillMount(modifiedMessage) ?? - modifiedMessage; + final V2TimMessage newMsg = await _lifeCycle?.modifiedMessageWillMount(modifiedMessage) ?? modifiedMessage; final msgID = newMsg.msgID; _messageListMap[convID ?? exactId ?? ""] = activeMessageList.map((item) { if (item.msgID == msgID) { @@ -704,13 +636,11 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { outputLogger.i("message progress: $progress"); } - Future onMessageDownloadProgressCallback( - V2TimMessageDownloadProgress messageProgress) async { + Future onMessageDownloadProgressCallback(V2TimMessageDownloadProgress messageProgress) async { final currentProgress = getMessageProgress(messageProgress.msgID); if (messageProgress.isFinish && currentProgress < 100) { - V2TimMessage? message = - await _findAndRetrieveMessage(messageProgress.msgID); + V2TimMessage? message = await _findAndRetrieveMessage(messageProgress.msgID); _handleFinishedDownload(messageProgress, message); return; } @@ -719,25 +649,19 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } Future _findAndRetrieveMessage(String messageId) async { - final messages = - await _messageService.findMessages(messageIDList: [messageId]); + final messages = await _messageService.findMessages(messageIDList: [messageId]); return messages?.first; } - void _handleFinishedDownload( - V2TimMessageDownloadProgress messageProgress, V2TimMessage? message) { + void _handleFinishedDownload(V2TimMessageDownloadProgress messageProgress, V2TimMessage? message) { if (message != null) { - bool isImageType = - message.elemType == MessageElemType.V2TIM_ELEM_TYPE_IMAGE; - bool isVideoType = - message.elemType == MessageElemType.V2TIM_ELEM_TYPE_VIDEO; + bool isImageType = message.elemType == MessageElemType.V2TIM_ELEM_TYPE_IMAGE; + bool isVideoType = message.elemType == MessageElemType.V2TIM_ELEM_TYPE_VIDEO; final originalImageType = PlatformUtils().isIOS ? 1 : 0; if (!isImageType && !isVideoType) { _updateMessageLocationAndDownloadFile(messageProgress); - } else if ((isImageType && messageProgress.type == originalImageType) || - isVideoType) { - Future.delayed(const Duration(seconds: 1), - () => _updateMessageAndDownloadFile(message, messageProgress)); + } else if ((isImageType && messageProgress.type == originalImageType) || isVideoType) { + Future.delayed(const Duration(seconds: 1), () => _updateMessageAndDownloadFile(message, messageProgress)); } else { return; } @@ -746,32 +670,22 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } } - void _updateMessageAndDownloadFile( - V2TimMessage message, V2TimMessageDownloadProgress messageProgress) { - updateAsyncMessage( - message, - TencentUtils.checkString(message.userID) ?? - TencentUtils.checkString(message.groupID) ?? - ""); + void _updateMessageAndDownloadFile(V2TimMessage message, V2TimMessageDownloadProgress messageProgress) { + updateAsyncMessage(message, TencentUtils.checkString(message.userID) ?? TencentUtils.checkString(message.groupID) ?? ""); _updateMessageLocationAndDownloadFile(messageProgress); } - void _updateMessageLocationAndDownloadFile( - V2TimMessageDownloadProgress messageProgress) { + void _updateMessageLocationAndDownloadFile(V2TimMessageDownloadProgress messageProgress) { setFileMessageLocation(messageProgress.msgID, messageProgress.path); setMessageProgress(messageProgress.msgID, 100); downloadFile(); } - void _updateProgressIfNeeded( - V2TimMessageDownloadProgress messageProgress, int currentProgress) { + void _updateProgressIfNeeded(V2TimMessageDownloadProgress messageProgress, int currentProgress) { try { if (messageProgress.totalSize != -1 && !messageProgress.isFinish) { - int progress = min( - 99, - (messageProgress.currentSize / messageProgress.totalSize * 100) - .floor()); + int progress = min(99, (messageProgress.currentSize / messageProgress.totalSize * 100).floor()); if (progress > 1 && progress > currentProgress) { setMessageProgress(messageProgress.msgID, progress); } @@ -815,13 +729,10 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { final TUIChatModelTools tools = serviceLocator(); List currentHistoryMsgList = _messageListMap[convID] ?? []; if (messageInfo != null) { - final messageInfoWithSender = messageInfo.sender == null - ? tools.setUserInfoForMessage(messageInfo, messageInfo.id!) - : messageInfo; + final messageInfoWithSender = messageInfo.sender == null ? tools.setUserInfoForMessage(messageInfo, messageInfo.id!) : messageInfo; currentHistoryMsgList = [messageInfoWithSender, ...currentHistoryMsgList]; setMessageList(convID, currentHistoryMsgList); - if (loadingMessage[convID] != null && - loadingMessage[convID]!.isNotEmpty) { + if (loadingMessage[convID] != null && loadingMessage[convID]!.isNotEmpty) { loadingMessage[convID]!.add(messageInfoWithSender); } else { loadingMessage[convID] = [messageInfoWithSender]; @@ -837,9 +748,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { setInputField: setInputField, id: messageInfo.id as String, convType: ConvType.values[convType.index], - offlinePushInfo: offlinePushInfo ?? - tools.buildMessagePushInfo( - messageInfo, convID, ConvType.values[convType.index]), + offlinePushInfo: offlinePushInfo ?? tools.buildMessagePushInfo(messageInfo, convID, ConvType.values[convType.index]), ); } return null; @@ -863,36 +772,23 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } final TUIChatModelTools tools = serviceLocator(); List currentHistoryMsgList = _messageListMap[convID] ?? []; - V2TimMsgCreateInfoResult? textMessageInfo = - await _messageService.createTextMessage(text: text); + V2TimMsgCreateInfoResult? textMessageInfo = await _messageService.createTextMessage(text: text); textMessageInfo = await _messageService.createTextAtMessage( - text: text + - "\n@${TencentUtils.checkString(messageBeenReplied.nickName) ?? TencentUtils.checkString(messageBeenReplied.sender) ?? TencentUtils.checkString(messageBeenReplied.userID)}", - atUserList: [ - TencentUtils.checkString(messageBeenReplied.sender) ?? - TencentUtils.checkString(messageBeenReplied.userID) ?? - "" - ]); + text: text + "\n@${TencentUtils.checkString(messageBeenReplied.nickName) ?? TencentUtils.checkString(messageBeenReplied.sender) ?? TencentUtils.checkString(messageBeenReplied.userID)}", + atUserList: [TencentUtils.checkString(messageBeenReplied.sender) ?? TencentUtils.checkString(messageBeenReplied.userID) ?? ""]); final V2TimMessage? messageInfo = textMessageInfo!.messageInfo; if (messageInfo != null) { - final messageInfoWithSender = messageInfo.sender == null - ? tools.setUserInfoForMessage( - messageInfo, messageInfo.id ?? textMessageInfo.id ?? "") - : messageInfo; + final messageInfoWithSender = messageInfo.sender == null ? tools.setUserInfoForMessage(messageInfo, messageInfo.id ?? textMessageInfo.id ?? "") : messageInfo; - final hasNickName = messageBeenReplied.nickName != null && - messageBeenReplied.nickName != ""; + final hasNickName = messageBeenReplied.nickName != null && messageBeenReplied.nickName != ""; final cloudCustomData = { "messageReply": { "messageID": messageBeenReplied.msgID, - "messageAbstract": tools.getMessageAbstract( - messageBeenReplied, abstractMessageBuilder), - "messageSender": hasNickName - ? messageBeenReplied.nickName - : messageBeenReplied.sender, + "messageAbstract": tools.getMessageAbstract(messageBeenReplied, abstractMessageBuilder), + "messageSender": hasNickName ? messageBeenReplied.nickName : messageBeenReplied.sender, "messageType": messageBeenReplied.elemType, "version": 1 } @@ -905,9 +801,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { return _sendMessage( cloudCustomData: json.encode(cloudCustomData), id: textMessageInfo.id as String, - offlinePushInfo: offlinePushInfo ?? - tools.buildMessagePushInfo( - messageInfo, convID, ConvType.values[convType.index]), + offlinePushInfo: offlinePushInfo ?? tools.buildMessagePushInfo(messageInfo, convID, ConvType.values[convType.index]), priority: priority, onlineUserOnly: onlineUserOnly, isExcludedFromUnreadCount: isExcludedFromUnreadCount, @@ -921,10 +815,8 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { return null; } - Future setLocalCustomData( - String msgID, String localCustomData, String conversationID) async { - final res = await _messageService.setLocalCustomData( - msgID: msgID, localCustomData: localCustomData); + Future setLocalCustomData(String msgID, String localCustomData, String conversationID) async { + final res = await _messageService.setLocalCustomData(msgID: msgID, localCustomData: localCustomData); List messageList = _messageListMap[conversationID] ?? []; if (res.code == 0) { messageList = messageList.map((item) { @@ -934,17 +826,14 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } return item; }).toList(); - setMessageList(conversationID, messageList, - needResetNewMessageCount: false); + setMessageList(conversationID, messageList, needResetNewMessageCount: false); return true; } return false; } - Future setLocalCustomInt( - String msgID, int localCustomInt, String conversationID) async { - final res = await _messageService.setLocalCustomInt( - msgID: msgID, localCustomInt: localCustomInt); + Future setLocalCustomInt(String msgID, int localCustomInt, String conversationID) async { + final res = await _messageService.setLocalCustomInt(msgID: msgID, localCustomInt: localCustomInt); List messageList = _messageListMap[conversationID] ?? []; if (res.code == 0) { messageList = messageList.map((item) { @@ -954,8 +843,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } return item; }).toList(); - setMessageList(conversationID, messageList, - needResetNewMessageCount: false); + setMessageList(conversationID, messageList, needResetNewMessageCount: false); return true; } return false; @@ -978,20 +866,15 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { }) async { String receiver = convType == ConvType.c2c ? convID : ''; String groupID = convType == ConvType.group ? convID : ''; - final oldGroupType = - groupType != null ? GroupReceptAllowType.values[groupType.index] : null; + final oldGroupType = groupType != null ? GroupReceptAllowType.values[groupType.index] : null; final sendMsgRes = await _messageService.sendMessage( id: id, receiver: receiver, needReadReceipt: needReadReceipt ?? chatConfig.isShowGroupReadingStatus && convType == ConvType.group && - ((chatConfig.groupReadReceiptPermissionList != null && - chatConfig.groupReadReceiptPermissionList! - .contains(groupType)) || - (chatConfig.groupReadReceiptPermisionList != null && - chatConfig.groupReadReceiptPermisionList! - .contains(oldGroupType))), + ((chatConfig.groupReadReceiptPermissionList != null && chatConfig.groupReadReceiptPermissionList!.contains(groupType)) || + (chatConfig.groupReadReceiptPermisionList != null && chatConfig.groupReadReceiptPermisionList!.contains(oldGroupType))), groupID: groupID, priority: priority, localCustomData: localCustomData, @@ -1015,8 +898,7 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { return sendMsgRes; } - void setMessageList(String conversationID, List messageList, - {bool needResetNewMessageCount = true}) { + void setMessageList(String conversationID, List messageList, {bool needResetNewMessageCount = true}) { _messageListMap[conversationID] = messageList; if (needResetNewMessageCount) { _receivedNewMessageCount = 0; @@ -1024,27 +906,15 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { notifyListeners(); } - updateMessage( - V2TimValueCallback sendMsgRes, - String convID, - String id, - ConvType convType, - GroupReceiptAllowType? groupType, - ValueChanged? setInputField) { + updateMessage(V2TimValueCallback sendMsgRes, String convID, String id, ConvType convType, GroupReceiptAllowType? groupType, ValueChanged? setInputField) { List currentHistoryMsgList = _messageListMap[convID] ?? []; final V2TimMessage sendMsgResData = sendMsgRes.data as V2TimMessage; - if ([80001, 80002].contains(sendMsgRes.code) && - sendMsgRes.data?.textElem?.text != null && - setInputField != null) { + if ([80001, 80002].contains(sendMsgRes.code) && sendMsgRes.data?.textElem?.text != null && setInputField != null) { setInputField(sendMsgRes.data!.textElem!.text ?? ""); } - final findIdIndex = - currentHistoryMsgList.indexWhere((element) => element.id == id); - final targetIndex = findIdIndex == -1 - ? currentHistoryMsgList - .indexWhere((element) => element.msgID == sendMsgResData.msgID) - : findIdIndex; + final findIdIndex = currentHistoryMsgList.indexWhere((element) => element.id == id); + final targetIndex = findIdIndex == -1 ? currentHistoryMsgList.indexWhere((element) => element.msgID == sendMsgResData.msgID) : findIdIndex; if (targetIndex != -1) { currentHistoryMsgList[targetIndex] = sendMsgResData; } else { @@ -1053,19 +923,13 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { if (loadingMessage[convID] != null && loadingMessage[convID]!.isNotEmpty) { loadingMessage[convID]!.removeWhere((element) => element.id == id); } - final oldGroupType = - groupType != null ? GroupReceptAllowType.values[groupType.index] : null; + final oldGroupType = groupType != null ? GroupReceptAllowType.values[groupType.index] : null; if (chatConfig.isShowGroupReadingStatus && convType == ConvType.group && sendMsgRes.data?.msgID != null && - ((chatConfig.groupReadReceiptPermissionList != null && - chatConfig.groupReadReceiptPermissionList! - .contains(groupType)) || - (chatConfig.groupReadReceiptPermisionList != null && - chatConfig.groupReadReceiptPermisionList! - .contains(oldGroupType)))) { - _messageReadReceiptMap[sendMsgRes.data!.msgID!] = - V2TimMessageReceipt(timestamp: 0, userID: "", readCount: 0); + ((chatConfig.groupReadReceiptPermissionList != null && chatConfig.groupReadReceiptPermissionList!.contains(groupType)) || + (chatConfig.groupReadReceiptPermisionList != null && chatConfig.groupReadReceiptPermisionList!.contains(oldGroupType)))) { + _messageReadReceiptMap[sendMsgRes.data!.msgID!] = V2TimMessageReceipt(timestamp: 0, userID: "", readCount: 0); } _messageListMap[convID] = currentHistoryMsgList; notifyListeners(); @@ -1094,20 +958,13 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } List? getMessageList(String conversationID) { - final list = (messageListMap[conversationID]?.reversed.toList() ?? []) - .where((element) => _lifeCycle?.messageShouldMount(element) ?? true); + final list = (messageListMap[conversationID]?.reversed.toList() ?? []).where((element) => _lifeCycle?.messageShouldMount(element) ?? true).toList(); + final finalList = _lifeCycle?.messageListShouldMount(list) ?? list; final List listWithTimestamp = []; final interval = chatConfig.timeDividerConfig?.timeInterval ?? 300; - for (var item in list) { + for (var item in finalList) { { - if (listWithTimestamp.isEmpty || - (listWithTimestamp[listWithTimestamp.length - 1].timestamp != - null && - item.timestamp != null && - (item.timestamp! - - listWithTimestamp[listWithTimestamp.length - 1] - .timestamp! > - interval))) { + if (listWithTimestamp.isEmpty || (listWithTimestamp[listWithTimestamp.length - 1].timestamp != null && item.timestamp != null && (item.timestamp! - listWithTimestamp[listWithTimestamp.length - 1].timestamp! > interval))) { listWithTimestamp.add(V2TimMessage( userID: '', isSelf: false, @@ -1123,19 +980,16 @@ class TUIChatGlobalModel extends ChangeNotifier implements TIMUIKitClass { } HistoryMessagePosition getMessageListPosition(String? conversationID) { - final HistoryMessagePosition? position = - _historyMessagePositionMap[conversationID]; + final HistoryMessagePosition? position = _historyMessagePositionMap[conversationID]; if (position == null) { - _historyMessagePositionMap[conversationID ?? currentSelectedConv] = - HistoryMessagePosition.bottom; + _historyMessagePositionMap[conversationID ?? currentSelectedConv] = HistoryMessagePosition.bottom; return HistoryMessagePosition.bottom; } else { return position; } } - void setMessageListPosition( - String conversationID, HistoryMessagePosition position) { + void setMessageListPosition(String conversationID, HistoryMessagePosition position) { _historyMessagePositionMap[conversationID] = position; notifyListeners(); } diff --git a/lib/data_services/message/message_service_implement.dart b/lib/data_services/message/message_service_implement.dart index ae369c3..9a5ad6c 100644 --- a/lib/data_services/message/message_service_implement.dart +++ b/lib/data_services/message/message_service_implement.dart @@ -3,11 +3,11 @@ import 'dart:math'; import 'package:flutter/foundation.dart'; -import 'package:tencent_im_base/tencent_im_base.dart'; import 'package:tencent_cloud_chat_uikit/data_services/core/core_services_implements.dart'; import 'package:tencent_cloud_chat_uikit/data_services/message/message_services.dart'; import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/platform.dart'; +import 'package:tencent_im_base/tencent_im_base.dart'; class MessageServiceImpl extends MessageService { final CoreServicesImpl _coreService = serviceLocator(); @@ -16,8 +16,7 @@ class MessageServiceImpl extends MessageService { @override Future getHistoryMessageListV2({ - HistoryMsgGetTypeEnum getType = - HistoryMsgGetTypeEnum.V2TIM_GET_LOCAL_OLDER_MSG, + HistoryMsgGetTypeEnum getType = HistoryMsgGetTypeEnum.V2TIM_GET_LOCAL_OLDER_MSG, String? userID, String? groupID, int lastMsgSeq = -1, @@ -26,16 +25,8 @@ class MessageServiceImpl extends MessageService { List? messageTypeList, }) async { bool haveMoreData = true; - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .getHistoryMessageList( - count: count, - getType: getType, - userID: userID, - groupID: groupID, - lastMsgID: lastMsgID, - lastMsgSeq: lastMsgSeq, - messageTypeList: messageTypeList); + final res = + await TencentImSDKPlugin.v2TIMManager.getMessageManager().getHistoryMessageList(count: count, getType: getType, userID: userID, groupID: groupID, lastMsgID: lastMsgID, lastMsgSeq: lastMsgSeq, messageTypeList: messageTypeList); final List responsedMessageList = res.data ?? []; final conversationID = userID ?? groupID; final cachedMessageList = messgaeListMap[conversationID]; @@ -45,41 +36,29 @@ class MessageServiceImpl extends MessageService { combinedMessageList = [...cachedMessageList, ...responsedMessageList]; // 首次加载 } else { - final bool existSendingMessage = sendingMessage[conversationID] != null && - sendingMessage[conversationID]!.isNotEmpty; + final bool existSendingMessage = sendingMessage[conversationID] != null && sendingMessage[conversationID]!.isNotEmpty; // 存在未发送完成的消息 if (existSendingMessage) { - combinedMessageList = [ - ...sendingMessage[conversationID]!, - ...responsedMessageList - ]; + combinedMessageList = [...sendingMessage[conversationID]!, ...responsedMessageList]; } else { sendingMessage.remove(conversationID); combinedMessageList = responsedMessageList; } } if (res.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); } - if (responsedMessageList.isEmpty || - (!PlatformUtils().isWeb && responsedMessageList.length < count) || - (PlatformUtils().isWeb && - responsedMessageList.length < min(count, 20))) { + if (responsedMessageList.isEmpty || (!PlatformUtils().isWeb && responsedMessageList.length < count) || (PlatformUtils().isWeb && responsedMessageList.length < min(count, 20))) { haveMoreData = false; } else { haveMoreData = true; } - return MessageListResponse( - haveMoreData: haveMoreData, data: combinedMessageList); + return MessageListResponse(haveMoreData: haveMoreData, data: combinedMessageList); } @override Future> getHistoryMessageList({ - HistoryMsgGetTypeEnum getType = - HistoryMsgGetTypeEnum.V2TIM_GET_LOCAL_OLDER_MSG, + HistoryMsgGetTypeEnum getType = HistoryMsgGetTypeEnum.V2TIM_GET_LOCAL_OLDER_MSG, String? userID, String? groupID, int lastMsgSeq = -1, @@ -87,30 +66,18 @@ class MessageServiceImpl extends MessageService { String? lastMsgID, List? messageTypeList, }) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .getHistoryMessageList( - count: count, - getType: getType, - userID: userID, - groupID: groupID, - lastMsgID: lastMsgID, - lastMsgSeq: lastMsgSeq, - messageTypeList: messageTypeList); + final res = + await TencentImSDKPlugin.v2TIMManager.getMessageManager().getHistoryMessageList(count: count, getType: getType, userID: userID, groupID: groupID, lastMsgID: lastMsgID, lastMsgSeq: lastMsgSeq, messageTypeList: messageTypeList); final reponseMessageList = res.data ?? []; if (res.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); } return reponseMessageList; } @override Future getHistoryMessageListWithComplete({ - HistoryMsgGetTypeEnum getType = - HistoryMsgGetTypeEnum.V2TIM_GET_LOCAL_OLDER_MSG, + HistoryMsgGetTypeEnum getType = HistoryMsgGetTypeEnum.V2TIM_GET_LOCAL_OLDER_MSG, String? userID, String? groupID, int lastMsgSeq = -1, @@ -118,22 +85,11 @@ class MessageServiceImpl extends MessageService { String? lastMsgID, List? messageTypeList, }) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .getHistoryMessageListV2( - count: count, - getType: getType, - userID: userID, - groupID: groupID, - lastMsgID: lastMsgID, - lastMsgSeq: lastMsgSeq, - messageTypeList: messageTypeList); + final res = + await TencentImSDKPlugin.v2TIMManager.getMessageManager().getHistoryMessageListV2(count: count, getType: getType, userID: userID, groupID: groupID, lastMsgID: lastMsgID, lastMsgSeq: lastMsgSeq, messageTypeList: messageTypeList); final responseMessageList = res.data; if (res.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); } return responseMessageList; } @@ -142,45 +98,31 @@ class MessageServiceImpl extends MessageService { Future addSimpleMsgListener({ required V2TimSimpleMsgListener listener, }) async { - return TencentImSDKPlugin.v2TIMManager - .addSimpleMsgListener(listener: listener); + return TencentImSDKPlugin.v2TIMManager.addSimpleMsgListener(listener: listener); } @override Future removeSimpleMsgListener({V2TimSimpleMsgListener? listener}) { - return TencentImSDKPlugin.v2TIMManager - .removeSimpleMsgListener(listener: listener); + return TencentImSDKPlugin.v2TIMManager.removeSimpleMsgListener(listener: listener); } @override Future addAdvancedMsgListener({ required V2TimAdvancedMsgListener listener, }) { - return TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .addAdvancedMsgListener(listener: listener); + return TencentImSDKPlugin.v2TIMManager.getMessageManager().addAdvancedMsgListener(listener: listener); } @override - Future> - getGroupMessageReadMemberList({ + Future> getGroupMessageReadMemberList({ required String messageID, required GetGroupMessageReadMemberListFilter filter, int nextSeq = 0, int count = 100, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .getGroupMessageReadMemberList( - messageID: messageID, - filter: filter, - nextSeq: nextSeq, - count: count); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().getGroupMessageReadMemberList(messageID: messageID, filter: filter, nextSeq: nextSeq, count: count); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -189,14 +131,9 @@ class MessageServiceImpl extends MessageService { Future>> getMessageReadReceipts({ required List messageIDList, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .getMessageReadReceipts(messageIDList: messageIDList); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageReadReceipts(messageIDList: messageIDList); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -205,66 +142,43 @@ class MessageServiceImpl extends MessageService { Future sendMessageReadReceipts({ required List messageIDList, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .sendMessageReadReceipts(messageIDList: messageIDList); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().sendMessageReadReceipts(messageIDList: messageIDList); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future createTextMessage( - {required String text}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createTextMessage(text: text); + Future createTextMessage({required String text}) async { + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createTextMessage(text: text); if (res.code == 0) { final messageResult = res.data; return messageResult; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @override - Future createCustomMessage( - {required String data}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createCustomMessage(data: data); + Future createCustomMessage({required String data}) async { + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createCustomMessage(data: data); if (res.code == 0) { final messageResult = res.data; return messageResult; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @override - Future createFaceMessage( - {required int index, required String data}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createFaceMessage(index: index, data: data); + Future createFaceMessage({required int index, required String data}) async { + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createFaceMessage(index: index, data: data); if (res.code == 0) { final messageResult = res.data; return messageResult; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @@ -272,51 +186,31 @@ class MessageServiceImpl extends MessageService { Future> reSendMessage( {required String msgID, // 自己创建的ID bool? onlineUserOnly}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .reSendMessage(msgID: msgID, onlineUserOnly: onlineUserOnly ?? false); + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().reSendMessage(msgID: msgID, onlineUserOnly: onlineUserOnly ?? false); if (res.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); } return res; } @override - Future createTextAtMessage( - {required String text, required List atUserList}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createTextAtMessage(text: text, atUserList: atUserList); + Future createTextAtMessage({required String text, required List atUserList}) async { + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createTextAtMessage(text: text, atUserList: atUserList); if (res.code == 0) { final messageResult = res.data; return messageResult; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @override - Future createImageMessage( - {String? imageName, String? imagePath, dynamic inputElement}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createImageMessage( - imageName: imageName, - imagePath: imagePath ?? "", - inputElement: inputElement); + Future createImageMessage({String? imageName, String? imagePath, dynamic inputElement}) async { + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createImageMessage(imageName: imageName, imagePath: imagePath ?? "", inputElement: inputElement); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @@ -325,16 +219,11 @@ class MessageServiceImpl extends MessageService { required String soundPath, required int duration, }) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createSoundMessage(soundPath: soundPath, duration: duration); + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createSoundMessage(soundPath: soundPath, duration: duration); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @@ -351,23 +240,19 @@ class MessageServiceImpl extends MessageService { String? cloudCustomData, String? localCustomData, }) async { - final result = - await TencentImSDKPlugin.v2TIMManager.getMessageManager().sendMessage( - id: id, - receiver: receiver, - groupID: groupID, - priority: priority, - onlineUserOnly: onlineUserOnly, - offlinePushInfo: offlinePushInfo, - needReadReceipt: needReadReceipt, - localCustomData: localCustomData, - cloudCustomData: cloudCustomData, - ); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().sendMessage( + id: id, + receiver: receiver, + groupID: groupID, + priority: priority, + onlineUserOnly: onlineUserOnly, + offlinePushInfo: offlinePushInfo, + needReadReceipt: needReadReceipt, + localCustomData: localCustomData, + cloudCustomData: cloudCustomData, + ); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -379,36 +264,22 @@ class MessageServiceImpl extends MessageService { }) async { V2TimCallback result; if (kIsWeb) { - result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .deleteMessages( - msgIDs: [], webMessageInstanceList: [webMessageInstance]); + result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().deleteMessages(msgIDs: [], webMessageInstanceList: [webMessageInstance]); } else { - result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .deleteMessageFromLocalStorage(msgID: msgID); + result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().deleteMessageFromLocalStorage(msgID: msgID); } if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future revokeMessage( - {required String msgID, Object? webMessageInstance}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .revokeMessage(msgID: msgID, webMessageInstatnce: webMessageInstance); + Future revokeMessage({required String msgID, Object? webMessageInstance}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().revokeMessage(msgID: msgID, webMessageInstatnce: webMessageInstance); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -417,14 +288,9 @@ class MessageServiceImpl extends MessageService { Future clearC2CHistoryMessage({ required String userID, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .clearC2CHistoryMessage(userID: userID); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().clearC2CHistoryMessage(userID: userID); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -433,14 +299,9 @@ class MessageServiceImpl extends MessageService { Future clearGroupHistoryMessage({ required String groupID, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .clearGroupHistoryMessage(groupID: groupID); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().clearGroupHistoryMessage(groupID: groupID); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -449,14 +310,9 @@ class MessageServiceImpl extends MessageService { Future markC2CMessageAsRead({ required String userID, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .markC2CMessageAsRead(userID: userID); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().markC2CMessageAsRead(userID: userID); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -465,24 +321,16 @@ class MessageServiceImpl extends MessageService { Future markGroupMessageAsRead({ required String groupID, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .markGroupMessageAsRead(groupID: groupID); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().markGroupMessageAsRead(groupID: groupID); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future removeAdvancedMsgListener( - {V2TimAdvancedMsgListener? listener}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .removeAdvancedMsgListener(listener: listener); + Future removeAdvancedMsgListener({V2TimAdvancedMsgListener? listener}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().removeAdvancedMsgListener(listener: listener); return result; } @@ -490,16 +338,11 @@ class MessageServiceImpl extends MessageService { Future?> downloadMergerMessage({ required String msgID, }) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .downloadMergerMessage(msgID: msgID); + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMergerMessage(msgID: msgID); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @@ -507,16 +350,11 @@ class MessageServiceImpl extends MessageService { Future createForwardMessage({ required String msgID, }) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createForwardMessage(msgID: msgID); + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createForwardMessage(msgID: msgID); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @@ -527,62 +365,30 @@ class MessageServiceImpl extends MessageService { required List abstractList, required String compatibleText, }) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createMergerMessage( - msgIDList: msgIDList, - title: title, - abstractList: abstractList, - compatibleText: compatibleText); + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createMergerMessage(msgIDList: msgIDList, title: title, abstractList: abstractList, compatibleText: compatibleText); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @override - Future deleteMessages( - {required List msgIDs, - List? webMessageInstanceList}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .deleteMessages( - msgIDs: msgIDs, webMessageInstanceList: webMessageInstanceList); + Future deleteMessages({required List msgIDs, List? webMessageInstanceList}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().deleteMessages(msgIDs: msgIDs, webMessageInstanceList: webMessageInstanceList); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future createVideoMessage( - {String? videoPath, - String? type, - int? duration, - String? snapshotPath, - dynamic inputElement}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createVideoMessage( - videoFilePath: videoPath ?? "", - type: type ?? "", - duration: duration ?? 1, - snapshotPath: snapshotPath ?? "", - inputElement: inputElement); + Future createVideoMessage({String? videoPath, String? type, int? duration, String? snapshotPath, dynamic inputElement}) async { + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createVideoMessage(videoFilePath: videoPath ?? "", type: type ?? "", duration: duration ?? 1, snapshotPath: snapshotPath ?? "", inputElement: inputElement); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @@ -595,75 +401,38 @@ class MessageServiceImpl extends MessageService { bool needReadReceipt = false, required V2TimMessage replyMessage, // 被回复的消息 }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .sendReplyMessage( - id: id, - receiver: receiver, - offlinePushInfo: offlinePushInfo, - groupID: groupID, - needReadReceipt: needReadReceipt, - replyMessage: replyMessage); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().sendReplyMessage(id: id, receiver: receiver, offlinePushInfo: offlinePushInfo, groupID: groupID, needReadReceipt: needReadReceipt, replyMessage: replyMessage); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future createFileMessage( - {String? filePath, - required String fileName, - dynamic inputElement}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createFileMessage( - filePath: filePath ?? "", - fileName: fileName, - inputElement: inputElement); + Future createFileMessage({String? filePath, required String fileName, dynamic inputElement}) async { + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createFileMessage(filePath: filePath ?? "", fileName: fileName, inputElement: inputElement); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @override - Future createLocationMessage( - {required String desc, - required double longitude, - required double latitude}) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .createLocationMessage( - desc: desc, longitude: longitude, latitude: latitude); + Future createLocationMessage({required String desc, required double longitude, required double latitude}) async { + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().createLocationMessage(desc: desc, longitude: longitude, latitude: latitude); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @override - Future> searchLocalMessages( - {required V2TimMessageSearchParam searchParam}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .searchLocalMessages(searchParam: searchParam); + Future> searchLocalMessages({required V2TimMessageSearchParam searchParam}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().searchLocalMessages(searchParam: searchParam); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -672,30 +441,19 @@ class MessageServiceImpl extends MessageService { Future?> findMessages({ required List messageIDList, }) async { - final res = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .findMessages(messageIDList: messageIDList); + final res = await TencentImSDKPlugin.v2TIMManager.getMessageManager().findMessages(messageIDList: messageIDList); if (res.code == 0) { return res.data; } - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: res.desc, - errorCode: res.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: res.desc, errorCode: res.code)); return null; } @override - Future setLocalCustomInt( - {required String msgID, required int localCustomInt}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .setLocalCustomInt(msgID: msgID, localCustomInt: localCustomInt); + Future setLocalCustomInt({required String msgID, required int localCustomInt}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().setLocalCustomInt(msgID: msgID, localCustomInt: localCustomInt); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -705,14 +463,9 @@ class MessageServiceImpl extends MessageService { required List userIDList, required ReceiveMsgOptEnum opt, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .setC2CReceiveMessageOpt(userIDList: userIDList, opt: opt); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().setC2CReceiveMessageOpt(userIDList: userIDList, opt: opt); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @@ -722,96 +475,55 @@ class MessageServiceImpl extends MessageService { required String groupID, required ReceiveMsgOptEnum opt, }) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .setGroupReceiveMessageOpt(groupID: groupID, opt: opt); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().setGroupReceiveMessageOpt(groupID: groupID, opt: opt); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future> modifyMessage( - {required V2TimMessage message}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .modifyMessage(message: message); + Future> modifyMessage({required V2TimMessage message}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().modifyMessage(message: message); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future setLocalCustomData( - {required String msgID, required String localCustomData}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .setLocalCustomData(msgID: msgID, localCustomData: localCustomData); + Future setLocalCustomData({required String msgID, required String localCustomData}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().setLocalCustomData(msgID: msgID, localCustomData: localCustomData); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future> getMessageOnlineUrl( - {required String msgID}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .getMessageOnlineUrl(msgID: msgID); + Future> getMessageOnlineUrl({required String msgID}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().getMessageOnlineUrl(msgID: msgID); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override - Future downloadMessage( - {required String msgID, - required int messageType, - required int imageType, - required bool isSnapshot}) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .downloadMessage( - msgID: msgID, - messageType: messageType, - imageType: imageType, - isSnapshot: isSnapshot); + Future downloadMessage({required String msgID, required int messageType, required int imageType, required bool isSnapshot}) async { + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().downloadMessage(msgID: msgID, messageType: messageType, imageType: imageType, isSnapshot: isSnapshot); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result; } @override Future translateText(String text, String target) async { - final result = await TencentImSDKPlugin.v2TIMManager - .getMessageManager() - .translateText(texts: [text], targetLanguage: target); + final result = await TencentImSDKPlugin.v2TIMManager.getMessageManager().translateText(texts: [text], targetLanguage: target); if (result.code != 0) { - _coreService.callOnCallback(TIMCallback( - type: TIMCallbackType.API_ERROR, - errorMsg: result.desc, - errorCode: result.code)); + _coreService.callOnCallback(TIMCallback(type: TIMCallbackType.API_ERROR, errorMsg: result.desc, errorCode: result.code)); } return result.data?[text] ?? ""; } diff --git a/lib/ui/utils/sound_record.dart b/lib/ui/utils/sound_record.dart index 18bd7fe..f8121c6 100644 --- a/lib/ui/utils/sound_record.dart +++ b/lib/ui/utils/sound_record.dart @@ -1,4 +1,5 @@ import 'dart:async'; + // import 'package:audioplayers/audioplayers.dart'; import 'package:flutter_plugin_record_plus/const/play_state.dart'; import 'package:flutter_plugin_record_plus/const/response.dart'; @@ -14,14 +15,14 @@ class SoundPlayer { final ImportProxy importProxy = ImportProxy(); static final FlutterPluginRecord _recorder = FlutterPluginRecord(); static SoundInterruptListener? _soundInterruptListener; - static bool isInited = false; + static bool isInit = false; static final AudioPlayer _audioPlayer = AudioPlayer(); static initSoundPlayer() { - if (!isInited) { + if (!isInit) { _recorder.init(); // AudioPlayer.global.setGlobalAudioContext(const AudioContext()); - isInited = true; + isInit = true; } } @@ -43,10 +44,7 @@ class SoundPlayer { _recorder.dispose(); } - static StreamSubscription playStateListener( - {required void Function(PlayerState)? listener}) => - _audioPlayer.playerStateStream.listen(listener); - + static StreamSubscription playStateListener({required void Function(PlayerState)? listener}) => _audioPlayer.playerStateStream.listen(listener); static setSoundInterruptListener(SoundInterruptListener listener) { _soundInterruptListener = listener; @@ -56,13 +54,9 @@ class SoundPlayer { _soundInterruptListener = null; } - static StreamSubscription responseListener( - ResponseListener listener) => - _recorder.response.listen(listener); + static StreamSubscription responseListener(ResponseListener listener) => _recorder.response.listen(listener); - static StreamSubscription responseFromAmplitudeListener( - ResponseListener listener) => - _recorder.responseFromAmplitude.listen(listener); + static StreamSubscription responseFromAmplitudeListener(ResponseListener listener) => _recorder.responseFromAmplitude.listen(listener); static startRecord() { _recorder.start(); diff --git a/lib/ui/utils/time_ago.dart b/lib/ui/utils/time_ago.dart index 3efbfca..34cc0ca 100644 --- a/lib/ui/utils/time_ago.dart +++ b/lib/ui/utils/time_ago.dart @@ -12,38 +12,19 @@ class TimeAgo { } List weekdayMap() { - return [ - '', - TIM_t("星期一"), - TIM_t("星期二"), - TIM_t("星期三"), - TIM_t("星期四"), - TIM_t("星期五"), - TIM_t("星期六"), - TIM_t("星期天") - ]; + return ['', TIM_t("星期一"), TIM_t("星期二"), TIM_t("星期三"), TIM_t("星期四"), TIM_t("星期五"), TIM_t("星期六"), TIM_t("星期天")]; } String getYearMonthDate(DateTime dateTime) { String month = dateTime.month.toString(); String date = dateTime.day.toString(); - return dateTime.year.toString() + - '/' + - (month.length == 1 ? '0' : '') + - month + - '/' + - (date.length == 1 ? '0' : '') + - date; + return dateTime.year.toString() + '/' + (month.length == 1 ? '0' : '') + month + '/' + (date.length == 1 ? '0' : '') + date; } String getMonthDate(DateTime dateTime) { String month = dateTime.month.toString(); String date = dateTime.day.toString(); - return (month.length == 1 ? '0' : '') + - month + - '/' + - (date.length == 1 ? '0' : '') + - date; + return (month.length == 1 ? '0' : '') + month + '/' + (date.length == 1 ? '0' : '') + date; } String? getTimeStringForChat(int timeStamp) { @@ -55,14 +36,7 @@ class TimeAgo { } final Duration duration = DateTime.now().difference(date); - final int diffDays = duration.inDays + - (duration.inMinutes > - DateTime.now() - .difference(DateTime(DateTime.now().year, - DateTime.now().month, DateTime.now().day)) - .inMinutes - ? 1 - : 0); + final int diffDays = duration.inDays + (duration.inMinutes > DateTime.now().difference(DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day)).inMinutes ? 1 : 0); final int diffMinutes = duration.inMinutes; var res; @@ -87,8 +61,7 @@ class TimeAgo { final String option2 = diffMinutes.toString(); res = TIM_t_para("{{option2}} 分钟前", "$option2 分钟前")(option2: option2); } else { - res = - "${date.hour}:${date.minute < 10 ? date.minute.toString() + "0" : date.minute}"; + res = "${date.hour}:${date.minute < 10 ? "0" + date.minute.toString() : date.minute}"; // res = "$prefix $timeStr"; } } else { @@ -104,8 +77,7 @@ class TimeAgo { nowTime = DateTime(nowTime.year, nowTime.month, nowTime.day); var ftime = DateTime.fromMillisecondsSinceEpoch(timeStamp * 1000); // var preFix = ftime.hour >= 12 ? TIM_t("下午") : TIM_t("上午"); - final timeStr = - DateFormat('HH:mm').format(ftime); // Use 'HH:mm' for 24-hour format + final timeStr = DateFormat('HH:mm').format(ftime); // Use 'HH:mm' for 24-hour format // 一年外 年月日 + 时间 (24小时制) if (nowTime.year != ftime.year) { return '${DateFormat('yyyy-MM-dd').format(ftime)} $timeStr'; diff --git a/lib/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list.dart b/lib/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list.dart index 29716a6..5ec20fa 100644 --- a/lib/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list.dart +++ b/lib/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list.dart @@ -10,13 +10,13 @@ import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_state.dart'; import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_statelesswidget.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/view_models/tui_chat_global_model.dart'; +import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/logger.dart'; // ignore: unused_import import 'package:tencent_cloud_chat_uikit/ui/utils/optimize_utils.dart'; import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list_config.dart'; import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKItMessageList/utils.dart'; import 'package:tencent_cloud_chat_uikit/ui/widgets/keepalive_wrapper.dart'; -import 'package:tencent_im_base/tencent_im_base.dart'; import 'TIMUIKitTongue/tim_uikit_chat_history_message_list_tongue.dart'; import 'TIMUIKitTongue/tim_uikit_chat_history_message_list_tongue_container.dart'; @@ -406,7 +406,12 @@ class _TIMUIKitHistoryMessageListState extends TIMUIKitState { late V2TimSoundElem stateElement = widget.message.soundElem!; _playSound() async { - if (!SoundPlayer.isInited) { + if (!SoundPlayer.isInit) { SoundPlayer.initSoundPlayer(); } - if (widget.localCustomInt == null || - widget.localCustomInt != HistoryMessageDartConstant.read) { - globalModel.setLocalCustomInt(widget.msgID, - HistoryMessageDartConstant.read, widget.chatModel.conversationID); + if (widget.localCustomInt == null || widget.localCustomInt != HistoryMessageDartConstant.read) { + globalModel.setLocalCustomInt(widget.msgID, HistoryMessageDartConstant.read, widget.chatModel.conversationID); } if (isPlaying) { SoundPlayer.stop(); @@ -82,11 +81,9 @@ class _TIMUIKitSoundElemState extends TIMUIKitState { downloadMessageDetailAndSave() async { if (widget.message.msgID != null && widget.message.msgID != '') { - if (widget.message.soundElem!.url == null || - widget.message.soundElem!.url == '') { - final response = await _messageService.getMessageOnlineUrl( - msgID: widget.message.msgID!); - if(response.data != null){ + if (widget.message.soundElem!.url == null || widget.message.soundElem!.url == '') { + final response = await _messageService.getMessageOnlineUrl(msgID: widget.message.msgID!); + if (response.data != null) { widget.message.soundElem = response.data!.soundElem; Future.delayed(const Duration(microseconds: 10), () { setState(() => stateElement = response.data!.soundElem!); @@ -94,13 +91,8 @@ class _TIMUIKitSoundElemState extends TIMUIKitState { } } if (!PlatformUtils().isWeb) { - if (widget.message.soundElem!.localUrl == null || - widget.message.soundElem!.localUrl == '') { - _messageService.downloadMessage( - msgID: widget.message.msgID!, - messageType: 4, - imageType: 0, - isSnapshot: false); + if (widget.message.soundElem!.localUrl == null || widget.message.soundElem!.localUrl == '') { + _messageService.downloadMessage(msgID: widget.message.msgID!, messageType: 4, imageType: 0, isSnapshot: false); } } } @@ -110,8 +102,7 @@ class _TIMUIKitSoundElemState extends TIMUIKitState { void didUpdateWidget(oldWidget) { super.didUpdateWidget(oldWidget); setState(() { - isPlaying = widget.chatModel.currentPlayedMsgId != '' && - widget.chatModel.currentPlayedMsgId == widget.msgID; + isPlaying = widget.chatModel.currentPlayedMsgId != '' && widget.chatModel.currentPlayedMsgId == widget.msgID; }); } @@ -119,9 +110,8 @@ class _TIMUIKitSoundElemState extends TIMUIKitState { void initState() { super.initState(); - subscription = - SoundPlayer.playStateListener(listener: (PlayerState state) { - if(state.processingState == ProcessingState.completed){ + subscription = SoundPlayer.playStateListener(listener: (PlayerState state) { + if (state.processingState == ProcessingState.completed) { widget.chatModel.currentPlayedMsgId = ""; } }); @@ -157,8 +147,7 @@ class _TIMUIKitSoundElemState extends TIMUIKitState { } _showJumpColor() { - if ((widget.chatModel.jumpMsgID != widget.message.msgID) && - (widget.message.msgID?.isNotEmpty ?? true)) { + if ((widget.chatModel.jumpMsgID != widget.message.msgID) && (widget.message.msgID?.isNotEmpty ?? true)) { return; } isShining = true; @@ -185,30 +174,18 @@ class _TIMUIKitSoundElemState extends TIMUIKitState { Widget tuiBuild(BuildContext context, TUIKitBuildValue value) { final theme = value.theme; - final backgroundColor = widget.isFromSelf - ? (theme.chatMessageItemFromSelfBgColor ?? - theme.lightPrimaryMaterialColor.shade50) - : (theme.chatMessageItemFromOthersBgColor); + final backgroundColor = widget.isFromSelf ? (theme.chatMessageItemFromSelfBgColor ?? theme.lightPrimaryMaterialColor.shade50) : (theme.chatMessageItemFromOthersBgColor); final borderRadius = widget.isFromSelf - ? const BorderRadius.only( - topLeft: Radius.circular(10), - topRight: Radius.circular(2), - bottomLeft: Radius.circular(10), - bottomRight: Radius.circular(10)) - : const BorderRadius.only( - topLeft: Radius.circular(2), - topRight: Radius.circular(10), - bottomLeft: Radius.circular(10), - bottomRight: Radius.circular(10)); + ? const BorderRadius.only(topLeft: Radius.circular(10), topRight: Radius.circular(2), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)) + : const BorderRadius.only(topLeft: Radius.circular(2), topRight: Radius.circular(10), bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)); if (widget.isShowJump) { if (!isShining) { Future.delayed(Duration.zero, () { _showJumpColor(); }); } else { - if ((widget.chatModel.jumpMsgID == widget.message.msgID) && - (widget.message.msgID?.isNotEmpty ?? false)) { + if ((widget.chatModel.jumpMsgID == widget.message.msgID) && (widget.message.msgID?.isNotEmpty ?? false)) { widget.clearJump!(); } } @@ -218,9 +195,7 @@ class _TIMUIKitSoundElemState extends TIMUIKitState { child: Container( padding: widget.textPadding ?? const EdgeInsets.all(10), decoration: BoxDecoration( - color: isShowJumpState - ? const Color.fromRGBO(245, 166, 35, 1) - : (widget.backgroundColor ?? backgroundColor), + color: isShowJumpState ? const Color.fromRGBO(245, 166, 35, 1) : (widget.backgroundColor ?? backgroundColor), borderRadius: widget.borderRadius ?? borderRadius, ), constraints: const BoxConstraints(maxWidth: 240), diff --git a/pubspec.lock b/pubspec.lock index ef9a32c..57623e8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -133,26 +133,26 @@ packages: dependency: "direct main" description: name: cached_network_image - sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15 + sha256: f98972704692ba679db144261172a8e20feb145636c617af0eb4022132a6797f url: "https://pub.dev" source: hosted - version: "3.2.3" + version: "3.3.0" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7 + sha256: "56aa42a7a01e3c9db8456d9f3f999931f1e05535b5a424271e9a38cabf066613" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.0.0" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0 + sha256: "759b9a9f8f6ccbb66c185df805fac107f05730b1dab9c64626d1008cca532257" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.1.0" camera: dependency: transitive description: @@ -301,10 +301,10 @@ packages: dependency: transitive description: name: dart_internal - sha256: dae3976f383beddcfcd07ad5291a422df2c8c0a8a03c52cda63ac7b4f26e0f4e + sha256: "689dccc3d5f62affd339534cca548dce12b3a6b32f0f10861569d3025efc0567" url: "https://pub.dev" source: hosted - version: "0.2.8" + version: "0.2.9" dart_style: dependency: transitive description: @@ -317,10 +317,10 @@ packages: dependency: "direct main" description: name: desktop_drop - sha256: "4ca4d960f4b11c032e9adfd2a0a8ac615bc3fddb4cbe73dcf840dd8077582186" + sha256: d55a010fe46c8e8fcff4ea4b451a9ff84a162217bdb3b2a0aa1479776205e15d url: "https://pub.dev" source: hosted - version: "0.4.1" + version: "0.4.4" device_info_plus: dependency: "direct main" description: @@ -478,14 +478,6 @@ packages: description: flutter source: sdk version: "0.0.0" - flutter_blurhash: - dependency: transitive - description: - name: flutter_blurhash - sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6" - url: "https://pub.dev" - source: hosted - version: "0.7.0" flutter_cache_manager: dependency: transitive description: @@ -871,10 +863,10 @@ packages: dependency: transitive description: name: octo_image - sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143" + sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "2.0.0" open_file: dependency: "direct main" description: @@ -1284,34 +1276,34 @@ packages: dependency: transitive description: name: tencent_cloud_chat_sdk - sha256: "013f8c9d96bbeed06d5fe971b7802d8ddf830c776332d6c6de6ccb9de8956d83" + sha256: "7dbb354209eca61f2c816c8ba7c1b1282dd5fb7e090135186bde56c89d976110" url: "https://pub.dev" source: hosted - version: "5.1.8" + version: "6.0.2" tencent_cloud_uikit_core: dependency: "direct main" description: name: tencent_cloud_uikit_core - sha256: acb3bae877428457318b8c5604a6c263957b6df3454ed3e30e8b6f620c6b2cd9 + sha256: "5624654c52a230111cbcfcaa648b9c6e3ee877018f16bc5eec076b639655a191" url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.1" tencent_im_base: dependency: "direct main" description: name: tencent_im_base - sha256: bc5eb080090038d21c879480c06d3ed7cb4b1dcc2cbe894189613eadf08cf7c5 + sha256: "52a99ef1c9dbd219530cf6f96a9891ab316f789b9b2c11634e0002d0a0f0f63c" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.0" tencent_im_sdk_plugin_platform_interface: dependency: transitive description: name: tencent_im_sdk_plugin_platform_interface - sha256: "1f9814d654dc1ad0a4cb62936f0849defac058c3bdca471472efc8b64b63cc5e" + sha256: "3b39f19fcc2306c7cbdabe79e532bbb7feade695630f5373308a52703ece482c" url: "https://pub.dev" source: hosted - version: "0.3.22" + version: "1.0.0" tencent_keyboard_visibility: dependency: "direct main" description: @@ -1641,5 +1633,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0-185.0.dev <3.2.0" + dart: ">=3.1.0-185.0.dev <3.3.0" flutter: ">=3.13.0" diff --git a/pubspec.yaml b/pubspec.yaml index adbccea..c2cbbb9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: tencent_cloud_chat_uikit description: A powerful chat UI component library and business logic for Tencent Cloud Chat, creating seamless in-app chat modules for delightful user experiences. -version: 2.3.2 +version: 2.3.3 homepage: https://trtc.io/products/chat?utm_source=gfs&utm_medium=link&utm_campaign=%E6%B8%A0%E9%81%93&_channel_track_key=k6WgfCKn repository: https://github.com/TencentCloud/chat-uikit-flutter documentation: https://comm.qq.com/im/doc/flutter/en/TUIKit/readme.html @@ -38,7 +38,7 @@ dependencies: transparent_image: ^2.0.0 image_gallery_saver: ^2.0.1 path_provider: ^2.0.8 - cached_network_image: ^3.2.0 + cached_network_image: ^3.3.0 shared_preferences: ^2.0.13 scroll_to_index: ^2.1.1 wechat_assets_picker: ^8.5.0 @@ -63,12 +63,12 @@ dependencies: open_file: ^3.3.2 tencent_keyboard_visibility: ^1.0.1 tim_ui_kit_sticker_plugin: ^3.0.1+1 - tencent_im_base: ^3.0.1 + tencent_im_base: ^3.1.0 fc_native_video_thumbnail: any path: ^1.8.1 - tencent_cloud_uikit_core: ^1.1.0 + tencent_cloud_uikit_core: ^1.2.1 pasteboard: ^0.2.0 - desktop_drop: ^0.4.1 + desktop_drop: ^0.4.4 device_info_plus: any cross_file: ^0.3.3+4 csslib: 0.17.2