diff --git a/CHANGELOG.md b/CHANGELOG.md index 833b589..46cf63c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ +# 5.0.1+3 +* Optimize UI refresh timing when joining a call midway. + +# 5.0.1+2 +* Optimize the dependency of the internationalization plugin intl. + +# 5.0.1+1 +* Fixed the issue of sending files on the web platform. +* Fixed the issue where the custom background color of text messages did not take effect. + +# 5.0.1 +* Optimize the display direction of C2C audio and video call prompt messages. + +# 5.0.0+2 +* Fixed the issue that the chat page avatar rounded corner configuration did not take effect. +* Fixed the issue where clicking multiple voice messages in succession would display the playback animation at the same time. + +# 5.0.0+1 +* Add the isExcludedFromUnreadCount field setting to the sendMessage method of MessageServiceImpl + # 5.0.0 * Migrate to Flutter 3.29.0. diff --git a/lib/data_services/message/message_service_implement.dart b/lib/data_services/message/message_service_implement.dart index 48d226a..81b13b8 100644 --- a/lib/data_services/message/message_service_implement.dart +++ b/lib/data_services/message/message_service_implement.dart @@ -321,6 +321,7 @@ class MessageServiceImpl extends MessageService { localCustomData: localCustomData, cloudCustomData: cloudCustomData, isExcludedFromContentModeration: isExcludedFromContentModeration, + isExcludedFromUnreadCount: isExcludedFromUnreadCount, ); if (result.code != 0) { String recommendText = ErrorMessageConverter.getErrorMessage(result.code); diff --git a/lib/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list_item.dart b/lib/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list_item.dart index 6d59062..b167be5 100644 --- a/lib/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list_item.dart +++ b/lib/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list_item.dart @@ -15,6 +15,8 @@ import 'package:tencent_cloud_chat_sdk/models/v2_tim_message.dart' if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_message.dart'; import 'package:tencent_cloud_chat_sdk/models/v2_tim_message_change_info.dart' if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_message_change_info.dart'; +import 'package:tencent_cloud_chat_sdk/models/v2_tim_user_full_info.dart' + if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_user_full_info.dart'; import 'package:tencent_cloud_chat_sdk/models/v2_tim_value_callback.dart' if (dart.library.html) 'package:tencent_cloud_chat_sdk/web/compatible_models/v2_tim_value_callback.dart'; import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_base.dart'; @@ -81,6 +83,18 @@ typedef MessageItemContent = Widget? Function( VoidCallback clearJump, ); +class RenderingDirectionResult { + final bool? isSelf; + final V2TimUserFullInfo? userInfo; + + const RenderingDirectionResult({ + this.isSelf, + this.userInfo, + }); +} + +typedef RenderingDirectionCallback = RenderingDirectionResult? Function(V2TimMessage message); + class MessageHoverControlItem { String name; Widget icon; @@ -131,6 +145,8 @@ class MessageItemBuilder { /// message nick name builder final MessageNickNameBuilder? messageNickNameBuilder; + final RenderingDirectionCallback? renderingDirectionCallback; + MessageItemBuilder({ this.locationMessageItemBuilder, this.textMessageItemBuilder, @@ -145,6 +161,7 @@ class MessageItemBuilder { this.mergerMessageItemBuilder, this.messageRowBuilder, this.messageNickNameBuilder, + this.renderingDirectionCallback, }); } @@ -283,7 +300,9 @@ class TIMUIKitHistoryMessageListItem extends StatefulWidget { /// If provided, the default message action functionality will appear in the right-click context menu instead. final Widget? Function(V2TimMessage message)? customMessageHoverBarOnDesktop; - const TIMUIKitHistoryMessageListItem( + final RenderingDirectionCallback? renderingDirectionCallback; + + TIMUIKitHistoryMessageListItem( {Key? key, required this.message, @Deprecated( @@ -312,7 +331,8 @@ class TIMUIKitHistoryMessageListItem extends StatefulWidget { this.textFieldController, this.onSecondaryTapForOthersPortrait, this.groupMemberInfo, - this.customMessageHoverBarOnDesktop}) + this.customMessageHoverBarOnDesktop, + this.renderingDirectionCallback,}) : super(key: key); @override @@ -366,6 +386,7 @@ class _TIMUIKItHistoryMessageListItemState extends TIMUIKitState(); @override void initState() { @@ -415,7 +436,19 @@ class _TIMUIKItHistoryMessageListItemState extends TIMUIKitState { } else { SoundPlayer.play(url: stateElement.url!); widget.chatModel.currentPlayedMsgId = widget.msgID; - - setState(() { - isPlaying = widget.chatModel.currentPlayedMsgId != '' && widget.chatModel.currentPlayedMsgId == widget.msgID; - }); } + + setState(() { + isPlaying = widget.chatModel.currentPlayedMsgId != '' && widget.chatModel.currentPlayedMsgId == widget.msgID; + }); } downloadMessageDetailAndSave() async { @@ -201,6 +201,9 @@ class _TIMUIKitSoundElemState extends TIMUIKitState { } } } + + isPlaying = widget.chatModel.currentPlayedMsgId != '' && widget.chatModel.currentPlayedMsgId == widget.msgID; + return GestureDetector( onTap: () => _playSound(), child: Container( diff --git a/lib/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_text_elem.dart b/lib/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_text_elem.dart index 60e3479..2929f2f 100644 --- a/lib/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_text_elem.dart +++ b/lib/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_text_elem.dart @@ -193,7 +193,7 @@ class _TIMUIKitTextElemState extends TIMUIKitState { : (theme.chatMessageItemFromOthersBgColor); final backgroundColor = - isShowJumpState ? const Color.fromRGBO(245, 166, 35, 1) : (defaultStyle ?? widget.backgroundColor); + isShowJumpState ? const Color.fromRGBO(245, 166, 35, 1) : (widget.backgroundColor ?? defaultStyle); return Container( padding: widget.textPadding ?? EdgeInsets.all(isDesktopScreen ? 12 : 10), diff --git a/lib/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/wide.dart b/lib/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/wide.dart index 2d88e9a..7731404 100644 --- a/lib/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/wide.dart +++ b/lib/ui/views/TIMUIKitChat/TIMUIKitTextField/tim_uikit_text_field_layout/wide.dart @@ -472,27 +472,35 @@ class _TIMUIKitTextFieldLayoutWideState extends TIMUIKitState { bool isInit = false; final TUIChatGlobalModel chatGlobalModel = serviceLocator(); bool _dragging = false; + V2TimGroupListener? _groupListener; final GlobalKey alignKey = GlobalKey(); final GlobalKey listContainerKey = GlobalKey(); @@ -256,6 +258,7 @@ class _TUIChatState extends TIMUIKitState { if (kProfileMode) { Frame.init(); } + _addGroupListener(); model.abstractMessageBuilder = widget.abstractMessageBuilder; model.onTapAvatar = widget.onTapAvatar; WidgetsBinding.instance.addPostFrameCallback((_) async { @@ -274,6 +277,7 @@ class _TUIChatState extends TIMUIKitState { if (kProfileMode) { Frame.destroy(); } + _removeGroupListener(); model.dispose(); } @@ -308,6 +312,26 @@ class _TUIChatState extends TIMUIKitState { } } + void _addGroupListener() { + _groupListener = V2TimGroupListener( + onGroupAttributeChanged: ( + String groupID, + Map groupAttributeMap,) { + if (groupID == widget.conversationID) { + _updateJoinInGroupCallWidget(); + } + } + ); + TencentImSDKPlugin.v2TIMManager.addGroupListener(listener: _groupListener!); + } + + void _removeGroupListener() { + if (_groupListener != null) { + TencentImSDKPlugin.v2TIMManager.removeGroupListener(listener: _groupListener!); + _groupListener = null; + } + } + updateDraft() async { final isTopic = widget.conversation.conversationID.contains("@TOPIC#"); if (isTopic) { diff --git a/pubspec.yaml b/pubspec.yaml index b72959f..fc9f12a 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: 5.0.0 +version: 5.0.1+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 @@ -24,14 +24,14 @@ dependencies: tencent_chat_i18n_tool: ^2.3.8 adaptive_action_sheet: ^2.0.1 provider: ^6.0.1 - intl: ^0.19.0 + intl: any get_it: ^7.2.0 dotted_border: ^2.0.0+2 flutter_svg: ^2.0.6 image_picker: ^0.8.9 file_picker: ^9.0.2 tencent_super_tooltip: ^0.0.1 - better_player_plus: '>=1.0.4 <=1.0.5' + better_player_plus: ^1.0.8 video_player: ^2.9.2 chewie: '>=1.8.4 <=1.8.5' flutter_slidable_plus_plus: ^0.1.0