From f246de55a1358a1fd9042cad34913fde6eec8873 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Tue, 11 Jul 2023 15:56:42 +0530 Subject: [PATCH 01/11] refactor!: initial attachments refactor. Signed-off-by: xsahil03x --- .../lib/src/core/models/attachment.dart | 45 +- .../lib/src/core/models/attachment.g.dart | 4 + .../core/models/attachment_giphy_info.dart | 69 +++ .../lib/src/core/models/message.dart | 3 + packages/stream_chat/lib/stream_chat.dart | 1 + .../test/src/client/client_test.dart | 2 +- .../lib/src/attachment/attachment.dart | 1 - .../attachment_upload_state_builder.dart | 2 + .../lib/src/attachment/attachment_widget.dart | 57 --- .../attachment/attachment_widget_catalog.dart | 62 +++ .../builder/attachment_widget_builder.dart | 168 +++++++ .../builder/fallback_attachment_builder.dart | 33 ++ .../builder/file_attachment_builder.dart | 87 ++++ .../builder/gallery_attachment_builder.dart | 152 +++++++ .../builder/giphy_attachment_builder.dart | 73 +++ .../builder/image_attachment_builder.dart | 72 +++ .../builder/mixed_attachment_builder.dart | 118 +++++ .../builder/url_attachment_builder.dart | 104 +++++ .../builder/video_attachment_builder.dart | 72 +++ .../lib/src/attachment/file_attachment.dart | 274 +++++------- .../src/attachment/gallery_attachment.dart | 261 +++++++++++ .../lib/src/attachment/giphy_attachment.dart | 418 +++++------------- .../lib/src/attachment/image_attachment.dart | 244 ++++------ .../lib/src/attachment/image_group.dart | 181 -------- .../thumbnail/file_attachment_thumbnail.dart | 78 ++++ .../thumbnail/giphy_attachment_thumbnail.dart | 100 +++++ .../thumbnail/image_attachment_thumbnail.dart | 245 ++++++++++ .../attachment/thumbnail/thumbnail_error.dart | 40 ++ .../thumbnail/video_attachment_thumbnail.dart | 126 ++++++ .../lib/src/attachment/url_attachment.dart | 230 +++++----- .../lib/src/attachment/video_attachment.dart | 149 ++----- .../fullscreen_media/full_screen_media.dart | 72 +-- .../lib/src/gallery/gallery_footer.dart | 6 +- .../lib/src/indicators/loading_indicator.dart | 21 + .../message_input/quoted_message_widget.dart | 56 ++- .../stream_message_input_attachment_list.dart | 8 +- .../message_list_view/message_list_view.dart | 14 +- .../lib/src/message_list_view/mlv_utils.dart | 1 - .../src/message_widget/ephemeral_message.dart | 43 ++ .../giphy_ephemeral_message.dart | 232 ++++++++++ .../lib/src/message_widget/message_card.dart | 221 +++++---- .../src/message_widget/message_widget.dart | 365 +++++++-------- .../message_widget_content.dart | 24 +- .../src/message_widget/parse_attachments.dart | 137 ++++-- .../src/message_widget/quoted_message.dart | 13 +- .../lib/src/misc/flex_grid.dart | 259 +++++++++++ .../lib/src/misc/giphy_chip.dart | 40 ++ .../lib/src/misc/visible_footnote.dart | 7 +- .../lib/src/stream_chat_configuration.dart | 11 +- .../lib/src/theme/color_theme.dart | 6 +- .../lib/src/utils/extensions.dart | 13 + .../lib/src/utils/helpers.dart | 22 +- .../lib/src/utils/typedefs.dart | 9 - .../lib/src/video/video_service.dart | 2 + .../lib/src/video/video_thumbnail_image.dart | 241 +++++----- .../lib/stream_chat_flutter.dart | 3 +- packages/stream_chat_flutter/pubspec.yaml | 1 + .../src/attachment/file_attachment_test.dart | 2 +- .../src/attachment/giphy_attachment_test.dart | 2 +- .../src/attachment/image_attachment_test.dart | 3 +- .../test/src/attachment/image_group_test.dart | 5 +- 61 files changed, 3613 insertions(+), 1697 deletions(-) create mode 100644 packages/stream_chat/lib/src/core/models/attachment_giphy_info.dart delete mode 100644 packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/attachment_widget_catalog.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/fallback_attachment_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/file_attachment_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/gallery_attachment_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/giphy_attachment_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/image_attachment_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/mixed_attachment_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/builder/video_attachment_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/gallery_attachment.dart delete mode 100644 packages/stream_chat_flutter/lib/src/attachment/image_group.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/thumbnail/file_attachment_thumbnail.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/thumbnail/giphy_attachment_thumbnail.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/thumbnail/image_attachment_thumbnail.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/thumbnail/thumbnail_error.dart create mode 100644 packages/stream_chat_flutter/lib/src/attachment/thumbnail/video_attachment_thumbnail.dart create mode 100644 packages/stream_chat_flutter/lib/src/indicators/loading_indicator.dart create mode 100644 packages/stream_chat_flutter/lib/src/message_widget/ephemeral_message.dart create mode 100644 packages/stream_chat_flutter/lib/src/message_widget/giphy_ephemeral_message.dart create mode 100644 packages/stream_chat_flutter/lib/src/misc/flex_grid.dart create mode 100644 packages/stream_chat_flutter/lib/src/misc/giphy_chip.dart diff --git a/packages/stream_chat/lib/src/core/models/attachment.dart b/packages/stream_chat/lib/src/core/models/attachment.dart index bceaaacc8..b53e73b12 100644 --- a/packages/stream_chat/lib/src/core/models/attachment.dart +++ b/packages/stream_chat/lib/src/core/models/attachment.dart @@ -10,13 +10,24 @@ import 'package:uuid/uuid.dart'; part 'attachment.g.dart'; +mixin AttachmentType { + /// Backend specified types. + static const image = 'image'; + static const file = 'file'; + static const giphy = 'giphy'; + static const video = 'video'; + + /// Application custom types. + static const urlPreview = 'url_preview'; +} + /// The class that contains the information about an attachment @JsonSerializable(includeIfNull: false) class Attachment extends Equatable { /// Constructor used for json serialization Attachment({ String? id, - this.type, + String? type, this.titleLink, String? title, this.thumbUrl, @@ -33,14 +44,16 @@ class Attachment extends Equatable { this.authorLink, this.authorIcon, this.assetUrl, - List? actions, + this.actions = const [], + this.originalWidth, + this.originalHeight, Map extraData = const {}, this.file, UploadState? uploadState, }) : id = id ?? const Uuid().v4(), + _type = type, title = title ?? file?.name, localUri = file?.path != null ? Uri.parse(file!.path!) : null, - actions = actions ?? [], // For backwards compatibility, // set 'file_size', 'mime_type' in [extraData]. extraData = { @@ -84,7 +97,15 @@ class Attachment extends Equatable { ///The attachment type based on the URL resource. This can be: audio, ///image or video - final String? type; + String? get type { + if (_type == AttachmentType.image && titleLink != null) { + return AttachmentType.urlPreview; + } + + return _type; + } + + final String? _type; ///The link to which the attachment message points to. final String? titleLink; @@ -126,6 +147,12 @@ class Attachment extends Equatable { /// Actions from a command final List? actions; + /// The original width of the attached image. + final int? originalWidth; + + /// The original height of the attached image. + final int? originalHeight; + final Uri? localUri; /// The file present inside this attachment. @@ -175,6 +202,8 @@ class Attachment extends Equatable { 'author_icon', 'asset_url', 'actions', + 'original_width', + 'original_height', ]; /// Known db specific top level fields. @@ -214,6 +243,8 @@ class Attachment extends Equatable { String? authorIcon, String? assetUrl, List? actions, + int? originalWidth, + int? originalHeight, AttachmentFile? file, UploadState? uploadState, Map? extraData, @@ -238,6 +269,8 @@ class Attachment extends Equatable { authorIcon: authorIcon ?? this.authorIcon, assetUrl: assetUrl ?? this.assetUrl, actions: actions ?? this.actions, + originalWidth: originalWidth ?? this.originalWidth, + originalHeight: originalHeight ?? this.originalHeight, file: file ?? this.file, uploadState: uploadState ?? this.uploadState, extraData: extraData ?? this.extraData, @@ -264,6 +297,8 @@ class Attachment extends Equatable { authorIcon: other.authorIcon, assetUrl: other.assetUrl, actions: other.actions, + originalWidth: other.originalWidth, + originalHeight: other.originalHeight, file: other.file, uploadState: other.uploadState, extraData: other.extraData, @@ -291,6 +326,8 @@ class Attachment extends Equatable { authorIcon, assetUrl, actions, + originalWidth, + originalHeight, file, uploadState, extraData, diff --git a/packages/stream_chat/lib/src/core/models/attachment.g.dart b/packages/stream_chat/lib/src/core/models/attachment.g.dart index 2ebe8c533..38a8be165 100644 --- a/packages/stream_chat/lib/src/core/models/attachment.g.dart +++ b/packages/stream_chat/lib/src/core/models/attachment.g.dart @@ -28,6 +28,8 @@ Attachment _$AttachmentFromJson(Map json) => Attachment( actions: (json['actions'] as List?) ?.map((e) => Action.fromJson(e as Map)) .toList(), + originalWidth: json['original_width'] as int?, + originalHeight: json['original_height'] as int?, extraData: json['extra_data'] as Map? ?? const {}, file: json['file'] == null ? null @@ -64,6 +66,8 @@ Map _$AttachmentToJson(Attachment instance) { writeNotNull('author_icon', instance.authorIcon); writeNotNull('asset_url', instance.assetUrl); writeNotNull('actions', instance.actions?.map((e) => e.toJson()).toList()); + writeNotNull('original_width', instance.originalWidth); + writeNotNull('original_height', instance.originalHeight); writeNotNull('file', instance.file?.toJson()); val['upload_state'] = instance.uploadState.toJson(); val['extra_data'] = instance.extraData; diff --git a/packages/stream_chat/lib/src/core/models/attachment_giphy_info.dart b/packages/stream_chat/lib/src/core/models/attachment_giphy_info.dart new file mode 100644 index 000000000..bc5d59a32 --- /dev/null +++ b/packages/stream_chat/lib/src/core/models/attachment_giphy_info.dart @@ -0,0 +1,69 @@ +import 'package:stream_chat/src/core/models/attachment.dart'; + +/// {@template giphy_info_type} +/// The different types of quality for a Giphy attachment. +/// {@endtemplate} +enum GiphyInfoType { + /// Original quality giphy, the largest size to load. + original('original'), + + /// Lower quality with a fixed height, adjusts width according to the + /// Giphy aspect ratio. Lower size than [original]. + fixedHeight('fixed_height'), + + /// Still image of the [fixedHeight] giphy. + fixedHeightStill('fixed_height_still'), + + /// Lower quality with a fixed height with width adjusted according to the + /// aspect ratio and played at a lower frame rate. Significantly lower size, + /// but visually less appealing. + fixedHeightDownsampled('fixed_height_downsampled'); + + /// {@macro giphy_info_type} + const GiphyInfoType(this.value); + + /// The value of the [GiphyInfoType]. + final String value; +} + +/// {@template giphy_info} +/// A class that contains extra information about a Giphy attachment. +/// {@endtemplate} +class GiphyInfo { + /// {@macro giphy_info} + const GiphyInfo({ + required this.url, + required this.width, + required this.height, + }); + + /// The url for the Giphy image. + final String url; + + /// The width of the Giphy image. + final double width; + + /// The height of the Giphy image. + final double height; + + @override + String toString() => 'GiphyInfo{url: $url, width: $width, height: $height}'; +} + +/// GiphyInfo extension on [Attachment] class. +extension GiphyInfoX on Attachment { + /// Returns the [GiphyInfo] for the given [type]. + GiphyInfo? giphyInfo(GiphyInfoType type) { + final giphy = extraData['giphy'] as Map?; + if (giphy == null) return null; + + final info = giphy[type.value] as Map?; + if (info == null) return null; + + return GiphyInfo( + url: info['url']! as String, + width: double.parse(info['width']! as String), + height: double.parse(info['height']! as String), + ); + } +} diff --git a/packages/stream_chat/lib/src/core/models/message.dart b/packages/stream_chat/lib/src/core/models/message.dart index a6f880332..958ae4252 100644 --- a/packages/stream_chat/lib/src/core/models/message.dart +++ b/packages/stream_chat/lib/src/core/models/message.dart @@ -215,6 +215,9 @@ class Message extends Equatable { /// Message custom extraData. final Map extraData; + /// True if the message is a error. + bool get isError => type == 'error'; + /// True if the message is a system info. bool get isSystem => type == 'system'; diff --git a/packages/stream_chat/lib/stream_chat.dart b/packages/stream_chat/lib/stream_chat.dart index 71a217dce..7e843412e 100644 --- a/packages/stream_chat/lib/stream_chat.dart +++ b/packages/stream_chat/lib/stream_chat.dart @@ -28,6 +28,7 @@ export 'src/core/http/interceptor/logging_interceptor.dart'; export 'src/core/models/action.dart'; export 'src/core/models/attachment.dart'; export 'src/core/models/attachment_file.dart'; +export 'src/core/models/attachment_giphy_info.dart'; export 'src/core/models/channel_config.dart'; export 'src/core/models/channel_model.dart'; export 'src/core/models/channel_mute.dart'; diff --git a/packages/stream_chat/test/src/client/client_test.dart b/packages/stream_chat/test/src/client/client_test.dart index df167b235..965015743 100644 --- a/packages/stream_chat/test/src/client/client_test.dart +++ b/packages/stream_chat/test/src/client/client_test.dart @@ -805,7 +805,7 @@ void main() { emits(ConnectionStatus.disconnected), ); - await client.disconnectUser(); + await client.disconnectUser(flushChatPersistence: true); expect(client.state.currentUser, isNull); expect(client.wsConnectionStatus, ConnectionStatus.disconnected); diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment.dart index 721d1dea4..2fb988200 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment.dart @@ -1,6 +1,5 @@ export 'attachment_error.dart'; export 'attachment_upload_state_builder.dart'; -export 'attachment_widget.dart' show AttachmentSource; export 'file_attachment.dart'; export 'giphy_attachment.dart'; export 'image_attachment.dart'; diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_upload_state_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_upload_state_builder.dart index e05ba3971..fcedd0125 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_upload_state_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment_upload_state_builder.dart @@ -198,6 +198,7 @@ class _FailedState extends StatelessWidget { children: [ _IconButton( icon: StreamSvgIcon.retry( + size: 14, color: theme.colorTheme.barsBg, ), onPressed: () { @@ -217,6 +218,7 @@ class _FailedState extends StatelessWidget { ), child: Text( context.translations.uploadErrorLabel, + textAlign: TextAlign.center, style: theme.textTheme.footnote.copyWith( color: theme.colorTheme.barsBg, ), diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart deleted file mode 100644 index 182d5aea6..000000000 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; - -/// Enum for identifying type of attachment -enum AttachmentSource { - /// Attachment is attached - local, - - /// Attachment is uploaded - network; - - /// The [when] method is the equivalent to pattern matching. - /// Its prototype depends on the AttachmentSource defined. - T when({ - required T Function() local, - required T Function() network, - }) { - switch (this) { - case AttachmentSource.local: - return local(); - case AttachmentSource.network: - return network(); - } - } -} - -/// {@template streamAttachmentWidget} -/// Abstract class for deriving attachment types -/// {@endtemplate} -abstract class StreamAttachmentWidget extends StatelessWidget { - /// {@macro streamAttachmentWidget} - const StreamAttachmentWidget({ - super.key, - required this.message, - required this.attachment, - this.constraints, - AttachmentSource? source, - }) : _source = source; - - /// Contraints of attachments - final BoxConstraints? constraints; - - final AttachmentSource? _source; - - /// The message that [attachment] is associated with - final Message message; - - /// The [Attachment] to display - final Attachment attachment; - - /// Getter for source of attachment - AttachmentSource get source => - _source ?? - (attachment.file != null - ? AttachmentSource.local - : AttachmentSource.network); -} diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget_catalog.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget_catalog.dart new file mode 100644 index 000000000..976fa32fb --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget_catalog.dart @@ -0,0 +1,62 @@ +import 'package:collection/collection.dart'; +import 'package:flutter/widgets.dart'; +import 'package:stream_chat_flutter/src/attachment/builder/attachment_widget_builder.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// {@template attachmentWidgetCatalog} +/// A widget catalog which determines which attachment widget should be build +/// for a given [Message] and [Attachment] based on the list of [builders]. +/// +/// This is used by the [MessageWidget] to build the widget for the +/// [Message.attachments]. If you want to customize the widget used to show +/// attachments, you can use this to add your own attachment builder. +/// {@endtemplate} +/// +/// See also: +/// +/// * [StreamAttachmentWidgetBuilder], which is used to build a widget for a +/// given [Message] and [Attachment]. +/// * [MessageWidget] which uses the [AttachmentWidgetCatalog] to build the +/// widget for the [Message.attachments]. +class AttachmentWidgetCatalog { + /// {@macro attachmentWidgetCatalog} + const AttachmentWidgetCatalog({required this.builders}); + + /// The list of builders to use to build the widget. + /// + /// The order of the builders is important. The first builder that can handle + /// the message and attachments will be used to build the widget. + final List builders; + + /// Builds a widget for the given [message] and [attachments]. + /// + /// It iterates through the list of builders and uses the first builder + /// that can handle the message and attachments. + /// + /// Throws an [Exception] if no builder is found for the message. + Widget build(BuildContext context, Message message) { + assert(!message.isDeleted, 'Cannot build attachment for deleted message'); + + assert( + message.attachments.isNotEmpty, + 'Cannot build attachment for message without attachments', + ); + + // The list of attachments to build the widget for. + final attachments = message.attachments.grouped; + for (final builder in builders) { + if (builder.canHandle(message, attachments)) { + return builder.build(context, message, attachments); + } + } + + throw Exception('No builder found for $message and $attachments'); + } +} + +extension on List { + /// Groups the attachments by their type. + Map> get grouped { + return groupBy(this, (attachment) => attachment.type!); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart new file mode 100644 index 000000000..0abf47506 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart @@ -0,0 +1,168 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/attachment/file_attachment.dart'; +import 'package:stream_chat_flutter/src/attachment/gallery_attachment.dart'; +import 'package:stream_chat_flutter/src/attachment/giphy_attachment.dart'; +import 'package:stream_chat_flutter/src/attachment/image_attachment.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/giphy_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/url_attachment.dart'; +import 'package:stream_chat_flutter/src/attachment/video_attachment.dart'; +import 'package:stream_chat_flutter/src/stream_chat.dart'; +import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/utils/utils.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +import '../attachment_upload_state_builder.dart'; + +part 'fallback_attachment_builder.dart'; + +part 'file_attachment_builder.dart'; + +part 'gallery_attachment_builder.dart'; + +part 'giphy_attachment_builder.dart'; + +part 'image_attachment_builder.dart'; + +part 'mixed_attachment_builder.dart'; + +part 'url_attachment_builder.dart'; + +part 'video_attachment_builder.dart'; + +/// {@template streamAttachmentWidgetTapCallback} +/// Signature for a function that's called when the user taps on an attachment. +/// {@endtemplate} +typedef StreamAttachmentWidgetTapCallback = void Function( + Message message, + Attachment attachment, +); + +/// {@template attachmentWidgetBuilder} +/// A builder which is used to build a widget for a given [Message] and +/// [Attachment]'s. This can also be used to show custom attachments. +/// {@endtemplate} +/// +/// See also: +/// +/// * [AttachmentWidgetBuilderManager], which is used to manage a list of +/// [StreamAttachmentWidgetBuilder]'s. +abstract class StreamAttachmentWidgetBuilder { + /// {@macro attachmentWidgetBuilder} + const StreamAttachmentWidgetBuilder(); + + /// The default list of builders used by the [AttachmentWidgetCatalog]. + /// + /// This list contains the following builders in order: + /// * [MixedAttachmentBuilder] + /// * [GalleryAttachmentBuilder] + /// * [GiphyAttachmentBuilder] + /// * [FileAttachmentBuilder] + /// * [ImageAttachmentBuilder] + /// * [VideoAttachmentBuilder] + /// * [UrlAttachmentBuilder] + /// * [FallbackAttachmentBuilder] + /// + /// You can use this list as a starting point for your own list of builders. + /// + /// Example: + /// + /// ```dart + /// final myBuilders = [ + /// ...StreamAttachmentWidgetBuilder.defaultBuilders, + /// MyCustomAttachmentBuilder(), + /// MyOtherCustomAttachmentBuilder(), + /// ... + /// ]; + /// ``` + /// + /// **Note**: The order of the builders in the list is important. The first + /// builder that returns `true` from [canHandle] will be used to build the + /// widget. + static List defaultBuilders({ + required Message message, + StreamAttachmentWidgetTapCallback? onAttachmentTap, + }) { + return [ + // Handles a mix of image, gif, video, and file attachments. + MixedAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + ), + + // Handles a mix of image, gif, and video attachments. + GalleryAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + ), + + // Handles file attachments. + FileAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + ), + + // Handles giphy attachments. + GiphyAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + ), + + // Handles image attachments. + ImageAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + ), + + // Handles video attachments. + VideoAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + ), + // We don't handle URL attachments if the message is a reply. + if (message.quotedMessage == null) + UrlAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + ), + + // Fallback builder should always be the last builder in the list. + const FallbackAttachmentBuilder(), + ]; + } + + /// Determines whether this builder can handle the given [message] and + /// [attachments]. If this returns `true`, [build] will be called. + /// Otherwise, the next builder in the list will be called. + bool canHandle(Message message, Map> attachments); + + /// Builds a widget for the given [message] and [attachments]. + /// This will only be called if [canHandle] returns `true`. + Widget build( + BuildContext context, + Message message, + Map> attachments, + ); + + /// Asserts that this builder can handle the given [message] and + /// [attachments]. + /// + /// This is used to ensure that the [defaultBuilders] are used correctly. + /// + /// **Note**: This method is only called in debug mode. + bool debugAssertCanHandle( + Message message, + Map> attachments, + ) { + assert(() { + if (!canHandle(message, attachments)) { + throw FlutterError.fromParts([ + ErrorSummary( + 'A $runtimeType was used to build a attachment for a message, but ' + 'it cant handle the message.', + ), + ErrorDescription( + 'The builders in the list must be checked in order. Check the ' + 'documentation for $runtimeType for more details.', + ), + ]); + } + return true; + }(), ''); + return true; + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/fallback_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/fallback_attachment_builder.dart new file mode 100644 index 000000000..0226682fb --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/fallback_attachment_builder.dart @@ -0,0 +1,33 @@ +part of 'attachment_widget_builder.dart'; + +/// {@template fallbackAttachmentBuilder} +/// A widget builder for when no other builder can handle the attachments. +/// +/// Saves you from getting an error when you have an attachment type that is not +/// supported by the SDK. +/// {@endtemplate} +class FallbackAttachmentBuilder extends StreamAttachmentWidgetBuilder { + /// {@macro fallbackAttachmentBuilder} + const FallbackAttachmentBuilder(); + + @override + bool canHandle( + Message message, + Map> attachments, + ) { + // Always returns True because this builder will be used as a fallback when + // no other builder can handle the attachments. + return true; + } + + @override + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { + // Returns an empty widget because this builder will be used as a fallback + // when no other builder can handle the attachments. + return const SizedBox.shrink(); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/file_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/file_attachment_builder.dart new file mode 100644 index 000000000..5a6a5b589 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/file_attachment_builder.dart @@ -0,0 +1,87 @@ +part of 'attachment_widget_builder.dart'; + +/// {@template fileAttachmentBuilder} +/// A widget builder for [AttachmentType.file] attachment type. +/// {@endtemplate} +class FileAttachmentBuilder extends StreamAttachmentWidgetBuilder { + /// {@macro fileAttachmentBuilder} + const FileAttachmentBuilder({ + this.shape, + this.backgroundColor, + this.constraints = const BoxConstraints(), + this.padding = const EdgeInsets.all(4), + this.onAttachmentTap, + }); + + /// The shape of the file attachment. + final ShapeBorder? shape; + + /// The background color of the file attachment. + final Color? backgroundColor; + + /// The constraints to apply to the file attachment widget. + final BoxConstraints constraints; + + /// The padding to apply to the file attachment widget. + final EdgeInsetsGeometry padding; + + /// The callback to call when the attachment is tapped. + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + @override + bool canHandle( + Message message, + Map> attachments, + ) { + final files = attachments[AttachmentType.file]; + return files != null && files.isNotEmpty; + } + + @override + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { + assert(debugAssertCanHandle(message, attachments), ''); + + final files = attachments[AttachmentType.file]!; + + Widget _buildFileAttachment(Attachment file) { + VoidCallback? onTap; + if (onAttachmentTap != null) { + onTap = () => onAttachmentTap!(message, file); + } + + return InkWell( + onTap: onTap, + child: StreamFileAttachment( + file: file, + message: message, + shape: shape, + constraints: constraints, + backgroundColor: backgroundColor, + ), + ); + } + + Widget child; + if (files.length == 1) { + child = _buildFileAttachment(files.first); + } else { + child = Column( + children: [ + for (final file in files) _buildFileAttachment(file), + ].insertBetween( + // Add a small vertical padding between each attachment. + SizedBox(height: padding.vertical / 2), + ), + ); + } + + return Padding( + padding: padding, + child: child, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/gallery_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/gallery_attachment_builder.dart new file mode 100644 index 000000000..9b86749d4 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/gallery_attachment_builder.dart @@ -0,0 +1,152 @@ +part of 'attachment_widget_builder.dart'; + +const _kDefaultGalleryConstraints = BoxConstraints.tightFor( + width: 256, + height: 195, +); + +/// {@template galleryAttachmentBuilder} +/// A widget builder for [AttachmentType.image], [AttachmentType.video] and +/// [AttachmentType.giphy] attachment types. +/// +/// This builder will render a [StreamGalleryAttachment] widget when the message +/// has more than one image or video or giphy attachment. +/// {@endtemplate} +class GalleryAttachmentBuilder extends StreamAttachmentWidgetBuilder { + /// {@macro galleryAttachmentBuilder} + const GalleryAttachmentBuilder({ + this.shape, + this.padding = const EdgeInsets.all(2), + this.spacing = 2, + this.runSpacing = 2, + this.constraints = _kDefaultGalleryConstraints, + this.onAttachmentTap, + }); + + /// The shape of the gallery attachment. + final ShapeBorder? shape; + + /// The constraints to apply to the gallery attachment widget. + final BoxConstraints constraints; + + /// The padding to apply to the gallery attachment widget. + final EdgeInsetsGeometry padding; + + /// How much space to place between children in a run in the main axis. + /// + /// For example, if [spacing] is 10.0, the children will be spaced at least + /// 10.0 logical pixels apart in the main axis. + /// + /// Defaults to 2.0. + final double spacing; + + /// How much space to place between the runs themselves in the cross axis. + /// + /// For example, if [runSpacing] is 10.0, the runs will be spaced at least + /// 10.0 logical pixels apart in the cross axis. + /// + /// Defaults to 2.0. + final double runSpacing; + + /// The callback to call when the attachment is tapped. + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + @override + bool canHandle( + Message message, + Map> attachments, + ) { + final images = attachments[AttachmentType.image]; + if (images != null && images.length > 1) return true; + + final videos = attachments[AttachmentType.video]; + if (videos != null && videos.length > 1) return true; + + final giphys = attachments[AttachmentType.giphy]; + if (giphys != null && giphys.length > 1) return true; + + if (images != null && videos != null) return true; + if (images != null && giphys != null) return true; + if (videos != null && giphys != null) return true; + + return false; + } + + @override + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { + assert(debugAssertCanHandle(message, attachments), ''); + + final galleryAttachments = [...attachments.values.expand((it) => it)]; + + return Padding( + padding: padding, + child: StreamGalleryAttachment( + shape: shape, + message: message, + spacing: spacing, + runSpacing: runSpacing, + constraints: constraints, + attachments: galleryAttachments, + itemBuilder: (context, index) { + final attachment = galleryAttachments[index]; + final attachmentType = attachment.type; + + final isImage = attachmentType == AttachmentType.image; + final isVideo = attachmentType == AttachmentType.video; + final isGiphy = attachmentType == AttachmentType.giphy; + + assert( + isImage || isVideo || isGiphy, + 'Attachment type should be image, video or giphy', + ); + + VoidCallback? onTap; + if (onAttachmentTap != null) { + onTap = () => onAttachmentTap!(message, attachment); + } + + return InkWell( + onTap: onTap, + child: Stack( + alignment: Alignment.center, + children: [ + if (isImage) + StreamImageAttachmentThumbnail( + image: attachment, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ) + else if (isVideo) + StreamVideoAttachmentThumbnail( + video: attachment, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ) + else if (isGiphy) + StreamGiphyAttachmentThumbnail( + giphy: attachment, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ), + Padding( + padding: const EdgeInsets.all(8), + child: StreamAttachmentUploadStateBuilder( + message: message, + attachment: attachment, + ), + ), + ], + ), + ); + }, + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/giphy_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/giphy_attachment_builder.dart new file mode 100644 index 000000000..2220ae924 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/giphy_attachment_builder.dart @@ -0,0 +1,73 @@ +part of 'attachment_widget_builder.dart'; + +const _kDefaultGiphyConstraints = BoxConstraints( + minWidth: 170, + maxWidth: 256, + minHeight: 100, + maxHeight: 300, +); + +/// {@template giphyAttachmentBuilder} +/// A widget builder for [AttachmentType.giphy] attachment type. +/// +/// This builder is used when a message contains only a single giphy attachment. +/// {@endtemplate} +class GiphyAttachmentBuilder extends StreamAttachmentWidgetBuilder { + /// {@macro giphyAttachmentBuilder} + const GiphyAttachmentBuilder({ + this.shape, + this.padding = const EdgeInsets.all(2), + this.constraints = _kDefaultGiphyConstraints, + this.onAttachmentTap, + }); + + /// The shape of the giphy attachment. + final ShapeBorder? shape; + + /// The constraints to apply to the giphy attachment widget. + final BoxConstraints constraints; + + /// The padding to apply to the giphy attachment widget. + final EdgeInsetsGeometry padding; + + /// The callback to call when the attachment is tapped. + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + @override + bool canHandle( + Message message, + Map> attachments, + ) { + final giphyAttachments = attachments[AttachmentType.giphy]; + return giphyAttachments != null && giphyAttachments.length == 1; + } + + @override + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { + assert(debugAssertCanHandle(message, attachments), ''); + + final giphy = attachments[AttachmentType.giphy]!.first; + + VoidCallback? onTap; + if (onAttachmentTap != null) { + onTap = () => onAttachmentTap!(message, giphy); + } + + return Padding( + padding: padding, + child: InkWell( + onTap: onTap, + child: StreamGiphyAttachment( + message: message, + constraints: constraints, + giphy: giphy, + shape: shape, + ), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/image_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/image_attachment_builder.dart new file mode 100644 index 000000000..145649db7 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/image_attachment_builder.dart @@ -0,0 +1,72 @@ +part of 'attachment_widget_builder.dart'; + +const _kDefaultImageConstraints = BoxConstraints( + minWidth: 170, + maxWidth: 256, + minHeight: 100, + maxHeight: 300, +); + +/// {@template imageAttachmentBuilder} +/// A widget builder for [AttachmentType.image] attachment type. +/// +/// This builder is used when a message contains only a single image attachment. +/// {@endtemplate} +class ImageAttachmentBuilder extends StreamAttachmentWidgetBuilder { + /// {@macro imageAttachmentBuilder} + const ImageAttachmentBuilder({ + this.shape, + this.padding = const EdgeInsets.all(2), + this.constraints = _kDefaultImageConstraints, + this.onAttachmentTap, + }); + + /// The shape of the image attachment. + final ShapeBorder? shape; + + /// The constraints to apply to the image attachment widget. + final BoxConstraints constraints; + + /// The padding to apply to the image attachment widget. + final EdgeInsetsGeometry padding; + + /// The callback to call when the attachment is tapped. + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + @override + bool canHandle( + Message message, + Map> attachments, + ) { + final images = attachments[AttachmentType.image]; + return images != null && images.length == 1; + } + + @override + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { + assert(debugAssertCanHandle(message, attachments), ''); + + final image = attachments[AttachmentType.image]!.first; + + VoidCallback? onTap; + if (onAttachmentTap != null) { + onTap = () => onAttachmentTap!(message, image); + } + + return Padding( + padding: padding, + child: InkWell( + onTap: onTap, + child: StreamImageAttachment( + message: message, + constraints: constraints, + image: image, + ), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/mixed_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/mixed_attachment_builder.dart new file mode 100644 index 000000000..b0eb7844b --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/mixed_attachment_builder.dart @@ -0,0 +1,118 @@ +part of 'attachment_widget_builder.dart'; + +/// {@template mixedAttachmentBuilder} +/// A widget builder for Mixed attachment type. +/// +/// This builder is used when a message contains both image/video/giphy and file +/// attachments. +/// +/// This builder will render first image/video/giphy attachment and then render +/// the file attachments. +/// {@endtemplate} +class MixedAttachmentBuilder extends StreamAttachmentWidgetBuilder { + /// {@macro mixedAttachmentBuilder} + MixedAttachmentBuilder({ + this.shape, + this.padding = const EdgeInsets.all(4), + this.onAttachmentTap, + }) : _imageAttachmentBuilder = ImageAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + padding: EdgeInsets.symmetric(horizontal: padding.horizontal), + ), + _videoAttachmentBuilder = VideoAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + padding: EdgeInsets.symmetric(horizontal: padding.horizontal), + ), + _giphyAttachmentBuilder = GiphyAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + padding: EdgeInsets.symmetric(horizontal: padding.horizontal), + ), + _galleryAttachmentBuilder = GalleryAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + padding: EdgeInsets.symmetric(horizontal: padding.horizontal), + ), + _fileAttachmentBuilder = FileAttachmentBuilder( + onAttachmentTap: onAttachmentTap, + padding: EdgeInsets.symmetric(horizontal: padding.horizontal), + ); + + /// The shape of the gallery attachment. + final ShapeBorder? shape; + + /// The padding to apply to the gallery attachment widget. + final EdgeInsetsGeometry padding; + + /// The callback to call when the attachment is tapped. + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + late final StreamAttachmentWidgetBuilder _imageAttachmentBuilder; + late final StreamAttachmentWidgetBuilder _videoAttachmentBuilder; + late final StreamAttachmentWidgetBuilder _giphyAttachmentBuilder; + late final StreamAttachmentWidgetBuilder _galleryAttachmentBuilder; + late final StreamAttachmentWidgetBuilder _fileAttachmentBuilder; + + @override + bool canHandle( + Message message, + Map> attachments, + ) { + final containsImage = attachments.keys.contains(AttachmentType.image); + final containsVideo = attachments.keys.contains(AttachmentType.video); + final containsGiphy = attachments.keys.contains(AttachmentType.giphy); + final containsFile = attachments.keys.contains(AttachmentType.file); + + final containsMedia = containsImage || containsVideo || containsGiphy; + + return containsMedia && containsFile; + } + + @override + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { + assert(debugAssertCanHandle(message, attachments), ''); + + final files = attachments[AttachmentType.file]; + final images = attachments[AttachmentType.image]; + final videos = attachments[AttachmentType.video]; + final giphys = attachments[AttachmentType.giphy]; + + final shouldBuildGallery = [...?images, ...?videos, ...?giphys].length > 1; + + return Padding( + padding: padding, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (files != null) + for (final file in files) + _fileAttachmentBuilder.build(context, message, { + AttachmentType.file: [file], + }), + if (shouldBuildGallery) + _galleryAttachmentBuilder.build(context, message, { + if (images != null) AttachmentType.image: images, + if (videos != null) AttachmentType.video: videos, + if (giphys != null) AttachmentType.giphy: giphys, + }) + else if (images != null && images.length == 1) + _imageAttachmentBuilder.build(context, message, { + AttachmentType.image: images, + }) + else if (videos != null && videos.length == 1) + _videoAttachmentBuilder.build(context, message, { + AttachmentType.video: videos, + }) + else if (giphys != null && giphys.length == 1) + _giphyAttachmentBuilder.build(context, message, { + AttachmentType.giphy: giphys, + }), + ].insertBetween( + SizedBox(height: padding.vertical / 2), + ), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart new file mode 100644 index 000000000..3d073643a --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart @@ -0,0 +1,104 @@ +part of 'attachment_widget_builder.dart'; + +const _kDefaultUrlAttachmentConstraints = BoxConstraints(maxWidth: 290); + +/// {@template urlAttachmentBuilder} +/// A widget builder for url attachment type. +/// +/// This is used to show url attachments with a preview. e.g. youtube, twitter, +/// etc. +/// {@endtemplate} +class UrlAttachmentBuilder extends StreamAttachmentWidgetBuilder { + /// {@macro urlAttachmentBuilder} + const UrlAttachmentBuilder({ + this.shape, + this.padding = const EdgeInsets.all(8), + this.constraints = _kDefaultUrlAttachmentConstraints, + this.onAttachmentTap, + }); + + /// The shape of the url attachment. + final ShapeBorder? shape; + + /// The constraints to apply to the url attachment widget. + final BoxConstraints constraints; + + /// The padding to apply to the url attachment widget. + final EdgeInsetsGeometry padding; + + /// The callback to call when the attachment is tapped. + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + @override + bool canHandle( + Message message, + Map> attachments, + ) { + final urls = attachments[AttachmentType.urlPreview]; + return urls != null && urls.isNotEmpty; + } + + @override + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { + assert(debugAssertCanHandle(message, attachments), ''); + + final urlPreviews = attachments[AttachmentType.urlPreview]!; + + final client = StreamChat.of(context).client; + final isMyMessage = message.user?.id == client.state.currentUser?.id; + + final streamChatTheme = StreamChatTheme.of(context); + final messageTheme = isMyMessage + ? streamChatTheme.ownMessageTheme + : streamChatTheme.otherMessageTheme; + + Widget _buildUrlPreview(Attachment urlPreview) { + VoidCallback? onTap; + if (onAttachmentTap != null) { + onTap = () => onAttachmentTap!(message, urlPreview); + } + + final host = Uri.parse(urlPreview.titleLink!).host; + final splitList = host.split('.'); + final hostName = splitList.length == 3 ? splitList[1] : splitList[0]; + final hostDisplayName = urlPreview.authorName?.capitalize() ?? + getWebsiteName(hostName.toLowerCase()) ?? + hostName.capitalize(); + + return InkWell( + onTap: onTap, + child: StreamUrlAttachment( + message: message, + urlAttachment: urlPreview, + hostDisplayName: hostDisplayName, + messageTheme: messageTheme, + constraints: constraints, + shape: shape, + ), + ); + } + + Widget child; + if (urlPreviews.length == 1) { + child = _buildUrlPreview(urlPreviews.first); + } else { + child = Column( + children: [ + for (final urlPreview in urlPreviews) _buildUrlPreview(urlPreview), + ].insertBetween( + // Add a small vertical padding between each attachment. + SizedBox(height: padding.vertical / 2), + ), + ); + } + + return Padding( + padding: padding, + child: child, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/video_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/video_attachment_builder.dart new file mode 100644 index 000000000..45f92ef8b --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/video_attachment_builder.dart @@ -0,0 +1,72 @@ +part of 'attachment_widget_builder.dart'; + +const _kDefaultVideoConstraints = BoxConstraints.tightFor( + width: 256, + height: 195, +); + +/// {@template videoAttachmentBuilder} +/// A widget builder for [AttachmentType.video] attachment type. +/// +/// This builder is used when a message contains only a single video attachment. +/// {@endtemplate} +class VideoAttachmentBuilder extends StreamAttachmentWidgetBuilder { + /// {@macro videoAttachmentBuilder} + const VideoAttachmentBuilder({ + this.shape, + this.padding = const EdgeInsets.all(2), + this.constraints = _kDefaultVideoConstraints, + this.onAttachmentTap, + }); + + /// The shape of the video attachment. + final ShapeBorder? shape; + + /// The constraints to apply to the video attachment widget. + final BoxConstraints constraints; + + /// The padding to apply to the video attachment widget. + final EdgeInsetsGeometry padding; + + /// The callback to call when the attachment is tapped. + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + @override + bool canHandle( + Message message, + Map> attachments, + ) { + final videos = attachments[AttachmentType.video]; + if (videos != null && videos.length == 1) return true; + + return false; + } + + @override + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { + assert(debugAssertCanHandle(message, attachments), ''); + + final video = attachments[AttachmentType.video]!.first; + + VoidCallback? onTap; + if (onAttachmentTap != null) { + onTap = () => onAttachmentTap!(message, video); + } + + return Padding( + padding: padding, + child: InkWell( + onTap: onTap, + child: StreamVideoAttachment( + message: message, + constraints: constraints, + video: video, + ), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart index 9e9d9e551..964b3034a 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart @@ -1,13 +1,10 @@ -import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:shimmer/shimmer.dart'; -import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; import 'package:stream_chat_flutter/src/attachment/handler/stream_attachment_handler.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/file_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/indicators/upload_progress_indicator.dart'; import 'package:stream_chat_flutter/src/misc/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/utils/utils.dart'; -import 'package:stream_chat_flutter/src/video/video_thumbnail_image.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// {@template streamFileAttachment} @@ -15,209 +12,143 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// /// Used in [MessageWidget]. /// {@endtemplate} -class StreamFileAttachment extends StreamAttachmentWidget { +class StreamFileAttachment extends StatelessWidget { /// {@macro streamFileAttachment} const StreamFileAttachment({ super.key, - required super.message, - required super.attachment, - super.constraints, + required this.message, + required this.file, this.title, this.trailing, - this.onAttachmentTap, + this.shape, + this.backgroundColor, + this.constraints = const BoxConstraints(), }); - /// Title for the attachment - final Widget? title; + /// The [Message] that the file is attached to. + final Message message; - /// Widget for displaying at the end of the attachment - /// (such as a download button) - final Widget? trailing; + /// The [Attachment] object containing the file information. + final Attachment file; - /// {@macro onAttachmentTap} - final OnAttachmentTap? onAttachmentTap; + /// The shape of the attachment. + /// + /// Defaults to [RoundedRectangleBorder] with a radius of 12. + final ShapeBorder? shape; - /// Checks if the attachment is a video - bool get isVideoAttachment => attachment.title?.mimeType?.type == 'video'; + /// The background color of the attachment. + /// + /// Defaults to [StreamChatTheme.colorTheme.barsBg]. + final Color? backgroundColor; - /// Checks if the attachment is an image - bool get isImageAttachment => attachment.title?.mimeType?.type == 'image'; + /// The constraints to use when displaying the file. + final BoxConstraints constraints; + + /// Widget for displaying the title of the attachment. + /// (usually the file name) + final Widget? title; + + /// Widget for displaying at the end of the attachment. + /// (such as a download button) + final Widget? trailing; @override Widget build(BuildContext context) { - final colorTheme = StreamChatTheme.of(context).colorTheme; - return Material( - child: GestureDetector( - onTap: onAttachmentTap, - child: Container( - constraints: constraints ?? const BoxConstraints.tightFor(width: 100), - height: 56, - decoration: BoxDecoration( - color: colorTheme.barsBg, - borderRadius: BorderRadius.circular(12), - border: Border.all( - color: colorTheme.borders, - ), + final chatTheme = StreamChatTheme.of(context); + final textTheme = chatTheme.textTheme; + final colorTheme = chatTheme.colorTheme; + + final backgroundColor = this.backgroundColor ?? colorTheme.barsBg; + final shape = this.shape ?? + RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - height: 40, - width: 33.33, - margin: const EdgeInsets.all(8), - child: _FileTypeImage( - isImageAttachment: isImageAttachment, - isVideoAttachment: isVideoAttachment, - source: source, - attachment: attachment, + borderRadius: BorderRadius.circular(12), + ); + + return Container( + constraints: constraints, + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration( + shape: shape, + color: backgroundColor, + ), + child: Row( + children: [ + Container( + width: 34, + height: 40, + margin: const EdgeInsets.all(8), + child: _FileTypeImage(file: file), + ), + const SizedBox(width: 8), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + file.title ?? context.translations.fileText, + maxLines: 1, + style: textTheme.bodyBold, + overflow: TextOverflow.ellipsis, ), - ), - const SizedBox(width: 8), - Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - attachment.title ?? context.translations.fileText, - style: StreamChatTheme.of(context).textTheme.bodyBold, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - const SizedBox(height: 3), - _FileAttachmentSubtitle(attachment: attachment), - ], + const SizedBox(height: 3), + _FileAttachmentSubtitle(attachment: file), + ], + ), + ), + const SizedBox(width: 8), + Material( + type: MaterialType.transparency, + child: trailing ?? + _Trailing( + attachment: file, + message: message, ), - ), - const SizedBox(width: 8), - Material( - type: MaterialType.transparency, - child: trailing ?? - _Trailing( - attachment: attachment, - message: message, - ), - ), - ], ), - ), + ], ), ); } } class _FileTypeImage extends StatelessWidget { - const _FileTypeImage({ - required this.isImageAttachment, - required this.isVideoAttachment, - required this.source, - required this.attachment, - }); + const _FileTypeImage({required this.file}); - final bool isImageAttachment; - final bool isVideoAttachment; - final AttachmentSource source; - final Attachment attachment; - - ShapeBorder _getDefaultShape(BuildContext context) { - return RoundedRectangleBorder( - side: const BorderSide(width: 0, color: Colors.transparent), - borderRadius: BorderRadius.circular(8), - ); - } + final Attachment file; // TODO: Improve image memory. // This is using the full image instead of a smaller version (thumbnail) @override Widget build(BuildContext context) { - if (isImageAttachment) { - return Material( - clipBehavior: Clip.hardEdge, - type: MaterialType.transparency, - shape: _getDefaultShape(context), - child: source.when( - local: () { - if (attachment.file?.bytes == null) { - return getFileTypeImage( - attachment.extraData['mime_type'] as String?, - ); - } - return Image.memory( - attachment.file!.bytes!, - fit: BoxFit.cover, - errorBuilder: (_, obj, trace) => getFileTypeImage( - attachment.extraData['mime_type'] as String?, - ), - ); - }, - network: () { - if ((attachment.imageUrl ?? - attachment.assetUrl ?? - attachment.thumbUrl) == - null) { - return getFileTypeImage( - attachment.extraData['mime_type'] as String?, - ); - } - return CachedNetworkImage( - imageUrl: attachment.imageUrl ?? - attachment.assetUrl ?? - attachment.thumbUrl!, - fit: BoxFit.cover, - errorWidget: (_, obj, trace) => getFileTypeImage( - attachment.extraData['mime_type'] as String?, - ), - placeholder: (_, __) { - final image = Image.asset( - 'images/placeholder.png', - fit: BoxFit.cover, - package: 'stream_chat_flutter', - ); - - final colorTheme = StreamChatTheme.of(context).colorTheme; - return Shimmer.fromColors( - baseColor: colorTheme.disabled, - highlightColor: colorTheme.inputBg, - child: image, - ); - }, - ); - }, - ), - ); - } + Widget child = StreamFileAttachmentThumbnail( + file: file, + width: double.infinity, + height: double.infinity, + // fit: BoxFit.cover, + ); - if (isVideoAttachment) { - return Material( + final mimeType = file.title?.mimeType?.type; + final isImage = mimeType == 'image'; + final isVideo = mimeType == 'video'; + if (isImage || isVideo) { + final colorTheme = StreamChatTheme.of(context).colorTheme; + child = Container( clipBehavior: Clip.hardEdge, - type: MaterialType.transparency, - shape: _getDefaultShape(context), - child: source.when( - local: () => StreamVideoThumbnailImage( - video: attachment.file!.path, - placeholderBuilder: (_) => const Center( - child: SizedBox( - width: 20, - height: 20, - child: CircularProgressIndicator.adaptive(), - ), - ), - ), - network: () => StreamVideoThumbnailImage( - video: attachment.assetUrl, - placeholderBuilder: (_) => const Center( - child: SizedBox( - width: 20, - height: 20, - child: CircularProgressIndicator.adaptive(), - ), - ), + decoration: ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide(color: colorTheme.borders), + borderRadius: BorderRadius.circular(8), ), ), + child: child, ); } - return getFileTypeImage(attachment.extraData['mime_type'] as String?); + + return child; } } @@ -346,7 +277,6 @@ class _FileAttachmentSubtitle extends StatelessWidget { uploaded: sent, total: total, showBackground: false, - padding: EdgeInsets.zero, textStyle: textStyle, progressIndicatorColor: theme.colorTheme.accentPrimary, ), diff --git a/packages/stream_chat_flutter/lib/src/attachment/gallery_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/gallery_attachment.dart new file mode 100644 index 000000000..76106eb31 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/gallery_attachment.dart @@ -0,0 +1,261 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/giphy_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/misc/flex_grid.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// {@template streamGalleryAttachment} +/// Constructs a gallery of images, videos, and gifs from a list of attachments. +/// +/// This widget uses a [FlexGrid] to display the attachments in a grid format. +/// The grid will automatically resize based on the size of the attachment. +/// {@endtemplate} +/// +/// See also: +/// +/// * [StreamImageAttachmentThumbnail], which is used to display the image +/// thumbnails. +/// * [StreamVideoAttachmentThumbnail], which is used to display the video +/// thumbnails. +/// * [StreamGiphyAttachmentThumbnail], which is used to display the gif +/// thumbnails. +class StreamGalleryAttachment extends StatelessWidget { + /// {@macro streamGalleryAttachment} + const StreamGalleryAttachment({ + super.key, + required this.attachments, + required this.message, + this.shape, + this.constraints = const BoxConstraints(), + this.spacing = 2.0, + this.runSpacing = 2.0, + required this.itemBuilder, + }); + + /// List of attachments to show + final List attachments; + + /// The [Message] that the images are attached to + final Message message; + + /// The shape of the attachment. + /// + /// Defaults to [RoundedRectangleBorder] with a radius of 14. + final ShapeBorder? shape; + + /// The constraints of the [attachments] + final BoxConstraints constraints; + + /// How much space to place between children in a run in the main axis. + /// + /// For example, if [spacing] is 10.0, the children will be spaced at least + /// 10.0 logical pixels apart in the main axis. + /// + /// Defaults to 2.0. + final double spacing; + + /// How much space to place between the runs themselves in the cross axis. + /// + /// For example, if [runSpacing] is 10.0, the runs will be spaced at least + /// 10.0 logical pixels apart in the cross axis. + /// + /// Defaults to 2.0. + final double runSpacing; + + /// Item builder for the gallery. + final IndexedWidgetBuilder itemBuilder; + + @override + Widget build(BuildContext context) { + assert( + attachments.length >= 2, + 'Gallery should have at least 2 attachments, found ${attachments.length}', + ); + + final chatTheme = StreamChatTheme.of(context); + final colorTheme = chatTheme.colorTheme; + final shape = this.shape ?? + RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, + ), + borderRadius: BorderRadius.circular(14), + ); + + return Container( + constraints: constraints, + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration(shape: shape), + // Added a builder just for the sake of calculating the image count + // and building the appropriate layout based on the image count. + child: Builder( + builder: (context) { + final attachmentCount = attachments.length; + if (attachmentCount == 2) { + return _buildForTwo(context, attachments); + } + + if (attachmentCount == 3) { + return _buildForThree(context, attachments); + } + + return _buildForFourOrMore(context, attachments); + }, + ), + ); + } + + Widget _buildForTwo(BuildContext context, List attachments) { + final aspectRatio1 = attachments[0].originalSize?.aspectRatio; + final aspectRatio2 = attachments[1].originalSize?.aspectRatio; + + // check if one image is landscape and other is portrait or vice versa + final isLandscape1 = aspectRatio1 != null && aspectRatio1 > 1; + final isLandscape2 = aspectRatio2 != null && aspectRatio2 > 1; + + // Both the images are landscape. + if (isLandscape1 && isLandscape2) { + // ---------- + // | | + // ---------- + // | | + // ---------- + return FlexGrid( + pattern: const [ + [1], + [1], + ], + children: [ + itemBuilder(context, 0), + itemBuilder(context, 1), + ], + ); + } + + // Both the images are portrait. + if (!isLandscape1 && !isLandscape2) { + // ----------- + // | | | + // | | | + // | | | + // ----------- + return FlexGrid( + pattern: const [ + [1, 1], + ], + children: [ + itemBuilder(context, 0), + itemBuilder(context, 1), + ], + ); + } + + // Layout on the basis of isLandscape1. + // 1. True + // ----------- + // | | | + // | | | + // | | | + // ----------- + // + // 2. False + // ----------- + // | | | + // | | | + // | | | + // ----------- + return FlexGrid( + pattern: [ + if (isLandscape1) [2, 1] else [1, 2], + ], + children: [ + itemBuilder(context, 0), + itemBuilder(context, 1), + ], + ); + } + + Widget _buildForThree(BuildContext context, List attachments) { + final aspectRatio1 = attachments[0].originalSize?.aspectRatio; + final isLandscape1 = aspectRatio1 != null && aspectRatio1 > 1; + + // We layout on the basis of isLandscape1. + // 1. True + // ----------- + // | | + // | | + // |---------| + // | | | + // | | | + // ----------- + // + // 2. False + // ----------- + // | | | + // | | | + // | |----| + // | | | + // | | | + // ----------- + return FlexGrid( + pattern: const [ + [1], + [1, 1], + ], + reverse: !isLandscape1, + children: [ + itemBuilder(context, 0), + itemBuilder(context, 1), + itemBuilder(context, 2), + ], + ); + } + + Widget _buildForFourOrMore( + BuildContext context, List attachments) { + final pattern = >[]; + final children = []; + + for (var i = 0; i < attachments.length; i++) { + if (i.isEven) { + pattern.add([1]); + } else { + pattern.last.add(1); + } + + children.add(itemBuilder(context, i)); + } + + // ----------- + // | | | + // | | | + // ------------ + // | | | + // | | | + // ------------ + return FlexGrid( + pattern: pattern, + maxChildren: 4, + children: children, + overlayBuilder: (context, remaining) { + return IgnorePointer( + child: ColoredBox( + color: Colors.black38, + child: Center( + child: Text( + '+$remaining', + style: const TextStyle( + fontSize: 26, + color: Colors.white, + fontWeight: FontWeight.bold, + ), + ), + ), + ), + ); + }, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart index 85997b644..f8ba4e04e 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart @@ -1,346 +1,134 @@ -import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:shimmer/shimmer.dart'; -import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/giphy_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/misc/giphy_chip.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// {@template streamGiphyAttachment} /// Shows a GIF attachment in a [StreamMessageWidget]. /// {@endtemplate} -class StreamGiphyAttachment extends StreamAttachmentWidget { +class StreamGiphyAttachment extends StatelessWidget { /// {@macro streamGiphyAttachment} const StreamGiphyAttachment({ super.key, - required super.message, - required super.attachment, - super.constraints, - this.onShowMessage, - this.onReplyMessage, - this.onAttachmentTap, - this.attachmentActionsModalBuilder, + required this.message, + required this.giphy, + this.type = GiphyInfoType.fixedHeightDownsampled, + this.shape, + this.constraints = const BoxConstraints(), }); - /// {@macro showMessageCallback} - final ShowMessageCallback? onShowMessage; + /// The [Message] that the giphy is attached to. + final Message message; - /// {@macro replyMessageCallback} - final ReplyMessageCallback? onReplyMessage; + /// The [Attachment] object containing the giphy information. + final Attachment giphy; - /// {@macro onAttachmentTap} - final OnAttachmentTap? onAttachmentTap; + /// The type of giphy to display. + /// + /// Defaults to [GiphyInfoType.fixedHeight]. + final GiphyInfoType type; - /// {@macro attachmentActionsBuilder} - final AttachmentActionsBuilder? attachmentActionsModalBuilder; + /// The shape of the attachment. + /// + /// Defaults to [RoundedRectangleBorder] with a radius of 14. + final ShapeBorder? shape; + + /// The constraints to use when displaying the giphy. + final BoxConstraints constraints; @override Widget build(BuildContext context) { - final imageUrl = - attachment.thumbUrl ?? attachment.imageUrl ?? attachment.assetUrl; - if (imageUrl == null) { - return const AttachmentError(); + BoxFit? fit; + final giphyInfo = giphy.giphyInfo(type); + + Size? giphySize; + if (giphyInfo != null) { + giphySize = Size(giphyInfo.width, giphyInfo.height); } - if (attachment.actions != null && attachment.actions!.isNotEmpty) { - return _buildSendingAttachment(context, imageUrl); + + // If attachment size is available, we will tighten the constraints max + // size to the attachment size. + var constraints = this.constraints; + if (giphySize != null) { + constraints = constraints.tightenMaxSize(giphySize); + } else { + // For backward compatibility, we will fill the available space if the + // attachment size is not available. + fit = BoxFit.cover; } - return _buildSentAttachment(context, imageUrl); - } - Widget _buildSendingAttachment(BuildContext context, String imageUrl) { - final streamChannel = StreamChannel.of(context); - return ConstrainedBox( - constraints: constraints?.copyWith( - maxHeight: double.infinity, - ) ?? - const BoxConstraints.expand(), - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Card( - color: StreamChatTheme.of(context).colorTheme.barsBg, - elevation: 2, - clipBehavior: Clip.hardEdge, - margin: EdgeInsets.zero, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - topRight: Radius.circular(16), - topLeft: Radius.circular(16), - bottomLeft: Radius.circular(16), + final chatTheme = StreamChatTheme.of(context); + final colorTheme = chatTheme.colorTheme; + final shape = this.shape ?? + RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, + ), + borderRadius: BorderRadius.circular(14), + ); + + return Hero( + tag: giphy.id, + child: Container( + constraints: constraints, + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration(shape: shape), + child: AspectRatio( + aspectRatio: giphySize?.aspectRatio ?? 1, + child: Stack( + alignment: Alignment.center, + children: [ + StreamGiphyAttachmentThumbnail( + type: type, + giphy: giphy, + fit: fit, + width: double.infinity, + height: double.infinity, ), - ), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ + if (giphy.uploadState.isSuccess) + const Positioned( + bottom: 8, + left: 8, + child: GiphyChip(), + ) + else Padding( padding: const EdgeInsets.all(8), - child: Row( - children: [ - StreamSvgIcon.giphyIcon(), - const SizedBox(width: 8), - Text( - context.translations.giphyLabel, - style: const TextStyle(fontWeight: FontWeight.bold), - ), - const SizedBox(width: 8), - if (attachment.title != null) - Flexible( - child: Text( - attachment.title!, - style: TextStyle( - color: StreamChatTheme.of(context) - .colorTheme - .textHighEmphasis - .withOpacity(0.5), - ), - overflow: TextOverflow.ellipsis, - maxLines: 1, - ), - ), - ], + child: StreamAttachmentUploadStateBuilder( + message: message, + attachment: giphy, ), ), - Padding( - padding: const EdgeInsets.all(2), - child: GestureDetector( - onTap: () { - if (onAttachmentTap != null) { - onAttachmentTap?.call(); - } else { - _onImageTap(context); - } - }, - child: CachedNetworkImage( - height: constraints?.maxHeight, - width: constraints?.maxWidth, - placeholder: (_, __) => SizedBox( - width: constraints?.maxHeight, - height: constraints?.maxWidth, - child: const Center( - child: CircularProgressIndicator.adaptive(), - ), - ), - imageUrl: imageUrl, - errorWidget: (context, url, error) => AttachmentError( - constraints: constraints, - ), - fit: BoxFit.cover, - ), - ), - ), - Container( - color: StreamChatTheme.of(context) - .colorTheme - .textHighEmphasis - .withOpacity(0.2), - width: double.infinity, - height: 0.5, - ), - Row( - children: [ - Expanded( - child: SizedBox( - height: 50, - child: TextButton( - onPressed: () { - streamChannel.channel.sendAction( - message, - { - 'image_action': 'cancel', - }, - ); - }, - child: Text( - context.translations.cancelLabel - .toLowerCase() - .capitalize(), - style: StreamChatTheme.of(context) - .textTheme - .bodyBold - .copyWith( - color: StreamChatTheme.of(context) - .colorTheme - .textHighEmphasis - .withOpacity(0.5), - ), - ), - ), - ), - ), - Container( - width: 0.5, - color: StreamChatTheme.of(context) - .colorTheme - .textHighEmphasis - .withOpacity(0.2), - height: 50, - ), - Expanded( - child: SizedBox( - height: 50, - child: TextButton( - onPressed: () { - streamChannel.channel.sendAction( - message, - { - 'image_action': 'shuffle', - }, - ); - }, - child: Text( - context.translations.shuffleLabel, - style: StreamChatTheme.of(context) - .textTheme - .bodyBold - .copyWith( - color: StreamChatTheme.of(context) - .colorTheme - .textHighEmphasis - .withOpacity(0.5), - ), - maxLines: 1, - ), - ), - ), - ), - Container( - width: 0.5, - color: StreamChatTheme.of(context) - .colorTheme - .textHighEmphasis - .withOpacity(0.2), - height: 50, - ), - Expanded( - child: SizedBox( - height: 50, - child: TextButton( - onPressed: () { - streamChannel.channel.sendAction( - message, - { - 'image_action': 'send', - }, - ); - }, - child: Text( - context.translations.sendLabel, - style: TextStyle( - color: StreamChatTheme.of(context) - .colorTheme - .accentPrimary, - fontWeight: FontWeight.bold, - ), - ), - ), - ), - ), - ], - ), - ], - ), - ), - const SizedBox(height: 4), - const Align( - alignment: Alignment.centerRight, - child: StreamVisibleFootnote(), + ], ), - ], - ), - ); - } - - Future _onImageTap(BuildContext context) async { - await Navigator.of(context).push( - MaterialPageRoute( - builder: (_) { - final channel = StreamChannel.of(context).channel; - return StreamChannel( - channel: channel, - child: StreamFullScreenMediaBuilder( - mediaAttachmentPackages: message.getAttachmentPackageList(), - startIndex: message.attachments.indexOf(attachment), - userName: message.user!.name, - onShowMessage: onShowMessage, - onReplyMessage: onReplyMessage, - attachmentActionsModalBuilder: attachmentActionsModalBuilder, - ), - ); - }, + ), ), ); } - Widget _buildSentAttachment(BuildContext context, String imageUrl) { - return GestureDetector( - onTap: () { - if (onAttachmentTap != null) { - onAttachmentTap?.call(); - } else { - _onImageTap(context); - } - }, - child: Stack( - children: [ - CachedNetworkImage( - height: constraints?.maxHeight, - width: constraints?.maxWidth, - placeholder: (_, __) { - final image = Image.asset( - 'images/placeholder.png', - fit: BoxFit.cover, - package: 'stream_chat_flutter', - ); - - final colorTheme = StreamChatTheme.of(context).colorTheme; - return Shimmer.fromColors( - baseColor: colorTheme.disabled, - highlightColor: colorTheme.inputBg, - child: image, - ); - }, - imageUrl: imageUrl, - errorWidget: (context, url, error) => AttachmentError( - constraints: constraints, - ), - fit: BoxFit.cover, - ), - Positioned( - bottom: 8, - left: 8, - child: Material( - color: StreamChatTheme.of(context) - .colorTheme - .textHighEmphasis - .withOpacity(0.5), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), - ), - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 8, - vertical: 4, - ), - child: Row( - children: [ - StreamSvgIcon.lightning( - color: StreamChatTheme.of(context).colorTheme.barsBg, - size: 16, - ), - Text( - context.translations.giphyLabel.toUpperCase(), - style: TextStyle( - color: StreamChatTheme.of(context).colorTheme.barsBg, - fontWeight: FontWeight.bold, - fontSize: 11, - ), - ), - ], - ), - ), - ), - ), - ], - ), - ); - } +// Future _onTap(BuildContext context) async { +// if (onAttachmentTap != null) { +// return onAttachmentTap!(); +// } +// +// await Navigator.of(context).push( +// MaterialPageRoute( +// builder: (_) { +// final channel = StreamChannel.of(context).channel; +// return StreamChannel( +// channel: channel, +// child: StreamFullScreenMediaBuilder( +// mediaAttachmentPackages: message.getAttachmentPackageList(), +// startIndex: message.attachments.indexOf(giphy), +// userName: message.user!.name, +// onShowMessage: onShowMessage, +// onReplyMessage: onReplyMessage, +// attachmentActionsModalBuilder: attachmentActionsModalBuilder, +// ), +// ); +// }, +// ), +// ); +// } } diff --git a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart index 36a0df3a1..386eb2df3 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart @@ -1,44 +1,36 @@ -import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:shimmer/shimmer.dart'; -import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// {@template streamImageAttachment} /// Shows an image attachment in a [StreamMessageWidget]. /// {@endtemplate} -class StreamImageAttachment extends StreamAttachmentWidget { +class StreamImageAttachment extends StatelessWidget { /// {@macro streamImageAttachment} const StreamImageAttachment({ super.key, - required super.message, - required super.attachment, - required this.messageTheme, - super.constraints, - this.showTitle = false, - this.onShowMessage, - this.onReplyMessage, - this.onAttachmentTap, + required this.message, + required this.image, + this.shape, + this.constraints = const BoxConstraints(), this.imageThumbnailSize = const Size(400, 400), this.imageThumbnailResizeType = 'clip', this.imageThumbnailCropType = 'center', - this.attachmentActionsModalBuilder, }); - /// The [StreamMessageThemeData] to use for the image title - final StreamMessageThemeData messageTheme; + /// The [Message] that the image is attached to. + final Message message; - /// Flag for whether the title should be shown or not - final bool showTitle; + /// The [Attachment] object containing the image information. + final Attachment image; - /// {@macro showMessageCallback} - final ShowMessageCallback? onShowMessage; - - /// {@macro replyMessageCallback} - final ReplyMessageCallback? onReplyMessage; + /// The shape of the attachment. + /// + /// Defaults to [RoundedRectangleBorder] with a radius of 14. + final ShapeBorder? shape; - /// {@macro onAttachmentTap} - final OnAttachmentTap? onAttachmentTap; + /// The constraints to use when displaying the image. + final BoxConstraints constraints; /// Size of the attachment image thumbnail. final Size imageThumbnailSize; @@ -53,149 +45,89 @@ class StreamImageAttachment extends StreamAttachmentWidget { /// Defaults to [center] final String /*center|top|bottom|left|right*/ imageThumbnailCropType; - /// {@macro attachmentActionsBuilder} - final AttachmentActionsBuilder? attachmentActionsModalBuilder; - @override Widget build(BuildContext context) { - return source.when( - local: () { - if (attachment.file?.bytes != null) { - return _buildImageAttachment( - context, - Image.memory( - attachment.file!.bytes!, - height: constraints?.maxHeight, - width: constraints?.maxWidth, - fit: BoxFit.cover, - errorBuilder: _imageErrorBuilder, - ), - ); - } else if (attachment.localUri != null) { - return _buildImageAttachment( - context, - Image.asset( - attachment.localUri!.path, - height: constraints?.maxHeight, - width: constraints?.maxWidth, - fit: BoxFit.cover, - errorBuilder: _imageErrorBuilder, - ), - ); - } else { - return AttachmentError( - constraints: constraints, - ); - } - }, - network: () { - var imageUrl = - attachment.thumbUrl ?? attachment.imageUrl ?? attachment.assetUrl; - - if (imageUrl == null) { - return AttachmentError(constraints: constraints); - } - - imageUrl = imageUrl.getResizedImageUrl( - width: imageThumbnailSize.width, - height: imageThumbnailSize.height, - resize: imageThumbnailResizeType, - crop: imageThumbnailCropType, - ); - - return _buildImageAttachment( - context, - CachedNetworkImage( - imageUrl: imageUrl, - height: constraints?.maxHeight, - width: constraints?.maxWidth, - fit: BoxFit.cover, - placeholder: (context, __) { - final image = Image.asset( - 'images/placeholder.png', - fit: BoxFit.cover, - package: 'stream_chat_flutter', - ); - final colorTheme = StreamChatTheme.of(context).colorTheme; - return Shimmer.fromColors( - baseColor: colorTheme.disabled, - highlightColor: colorTheme.inputBg, - child: image, - ); - }, - errorWidget: (context, url, error) => - AttachmentError(constraints: constraints), + BoxFit? fit; + final imageSize = image.originalSize; + + // If attachment size is available, we will tighten the constraints max + // size to the attachment size. + var constraints = this.constraints; + if (imageSize != null) { + constraints = constraints.tightenMaxSize(imageSize); + } else { + // For backward compatibility, we will fill the available space if the + // attachment size is not available. + fit = BoxFit.cover; + } + + final chatTheme = StreamChatTheme.of(context); + final colorTheme = chatTheme.colorTheme; + final shape = this.shape ?? + RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, ), + borderRadius: BorderRadius.circular(14), ); - }, - ); - } - Widget _imageErrorBuilder(BuildContext _, Object __, StackTrace? ___) => - Image.asset( - 'images/placeholder.png', - package: 'stream_chat_flutter', - ); - - Widget _buildImageAttachment(BuildContext context, Widget imageWidget) { return Container( constraints: constraints, - child: Column( - children: [ - Expanded( - child: Stack( - children: [ - MouseRegion( - cursor: SystemMouseCursors.click, - child: GestureDetector( - onTap: onAttachmentTap ?? - () { - Navigator.of(context).push( - MaterialPageRoute( - builder: (_) { - final channel = - StreamChannel.of(context).channel; - return StreamChannel( - channel: channel, - child: StreamFullScreenMediaBuilder( - mediaAttachmentPackages: - message.getAttachmentPackageList(), - startIndex: - message.attachments.indexOf(attachment), - userName: message.user!.name, - onShowMessage: onShowMessage, - onReplyMessage: onReplyMessage, - attachmentActionsModalBuilder: - attachmentActionsModalBuilder, - ), - ); - }, - ), - ); - }, - child: imageWidget, - ), - ), - Padding( - padding: const EdgeInsets.all(8), - child: StreamAttachmentUploadStateBuilder( - message: message, - attachment: attachment, - ), - ), - ], + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration(shape: shape), + child: AspectRatio( + aspectRatio: imageSize?.aspectRatio ?? 1, + child: Stack( + alignment: Alignment.center, + children: [ + StreamImageAttachmentThumbnail( + image: image, + fit: fit, + width: double.infinity, + height: double.infinity, + thumbnailSize: imageThumbnailSize, + thumbnailResizeType: imageThumbnailResizeType, + thumbnailCropType: imageThumbnailCropType, ), - ), - if (showTitle && attachment.title != null) - Material( - color: messageTheme.messageBackgroundColor, - child: StreamAttachmentTitle( - messageTheme: messageTheme, - attachment: attachment, + Padding( + padding: const EdgeInsets.all(8), + child: StreamAttachmentUploadStateBuilder( + message: message, + attachment: image, ), ), - ], + ], + ), ), ); } } + +// Future _onTap( +// BuildContext context, +// int index, +// ) async { +// if (onAttachmentTap != null) { +// return onAttachmentTap!(); +// } +// +// final channel = StreamChannel.of(context).channel; +// +// Navigator.of(context).push( +// MaterialPageRoute( +// builder: (context) => StreamChannel( +// channel: channel, +// child: StreamFullScreenMediaBuilder( +// mediaAttachmentPackages: message.getAttachmentPackageList(), +// startIndex: index, +// userName: message.user!.name, +// onShowMessage: onShowMessage, +// onReplyMessage: onReplyMessage, +// attachmentActionsModalBuilder: attachmentActionsModalBuilder, +// ), +// ), +// ), +// ); +// } +// } diff --git a/packages/stream_chat_flutter/lib/src/attachment/image_group.dart b/packages/stream_chat_flutter/lib/src/attachment/image_group.dart deleted file mode 100644 index 5756b24ac..000000000 --- a/packages/stream_chat_flutter/lib/src/attachment/image_group.dart +++ /dev/null @@ -1,181 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; - -/// {@template streamImageGroup} -/// Constructs a group of image attachments in a [StreamMessageWidget]. -/// {@endtemplate} -class StreamImageGroup extends StatelessWidget { - /// {@macro streamImageGroup} - const StreamImageGroup({ - super.key, - required this.images, - required this.message, - required this.messageTheme, - required this.constraints, - this.onShowMessage, - this.onReplyMessage, - this.onAttachmentTap, - this.imageThumbnailSize = const Size(400, 400), - this.imageThumbnailResizeType = 'clip', - this.imageThumbnailCropType = 'center', - this.attachmentActionsModalBuilder, - }); - - /// List of attachments to show - final List images; - - /// {@macro onImageGroupAttachmentTap} - final OnImageGroupAttachmentTap? onAttachmentTap; - - /// The [Message] that the images are attached to - final Message message; - - /// The [StreamMessageThemeData] to apply to this [message] - final StreamMessageThemeData messageTheme; - - /// The constraints of the [images] - final BoxConstraints constraints; - - /// {@macro showMessageCallback} - final ShowMessageCallback? onShowMessage; - - /// {@macro replyMessageCallback} - final ReplyMessageCallback? onReplyMessage; - - /// Size of the attachment image thumbnail. - final Size imageThumbnailSize; - - /// Resize type of the image attachment thumbnail. - /// - /// Defaults to [crop] - final String /*clip|crop|scale|fill*/ imageThumbnailResizeType; - - /// Crop type of the image attachment thumbnail. - /// - /// Defaults to [center] - final String /*center|top|bottom|left|right*/ imageThumbnailCropType; - - /// {@macro attachmentActionsBuilder} - final AttachmentActionsBuilder? attachmentActionsModalBuilder; - - @override - Widget build(BuildContext context) { - return ConstrainedBox( - constraints: constraints, - child: Flex( - direction: Axis.vertical, - children: [ - Flexible( - fit: FlexFit.tight, - child: Flex( - crossAxisAlignment: CrossAxisAlignment.stretch, - direction: Axis.horizontal, - children: [ - Flexible( - fit: FlexFit.tight, - child: _buildImage(context, 0), - ), - Flexible( - fit: FlexFit.tight, - child: Padding( - padding: const EdgeInsets.only(left: 2), - child: _buildImage(context, 1), - ), - ), - ], - ), - ), - if (images.length >= 3) - Flexible( - fit: FlexFit.tight, - child: Padding( - padding: const EdgeInsets.only(top: 2), - child: Flex( - direction: Axis.horizontal, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - Flexible( - fit: FlexFit.tight, - child: _buildImage(context, 2), - ), - if (images.length >= 4) - Flexible( - fit: FlexFit.tight, - child: Padding( - padding: const EdgeInsets.only(left: 2), - child: Stack( - fit: StackFit.expand, - children: [ - _buildImage(context, 3), - if (images.length > 4) - Positioned.fill( - child: GestureDetector( - onTap: () => _onTap(context, 3), - child: Material( - color: Colors.black38, - child: Center( - child: Text( - '+ ${images.length - 4}', - style: const TextStyle( - color: Colors.white, - fontSize: 26, - ), - ), - ), - ), - ), - ), - ], - ), - ), - ), - ], - ), - ), - ), - ], - ), - ); - } - - Future _onTap( - BuildContext context, - int index, - ) async { - if (onAttachmentTap != null) { - return onAttachmentTap!(message, images[index]); - } - - final channel = StreamChannel.of(context).channel; - - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => StreamChannel( - channel: channel, - child: StreamFullScreenMediaBuilder( - mediaAttachmentPackages: message.getAttachmentPackageList(), - startIndex: index, - userName: message.user!.name, - onShowMessage: onShowMessage, - onReplyMessage: onReplyMessage, - attachmentActionsModalBuilder: attachmentActionsModalBuilder, - ), - ), - ), - ); - } - - Widget _buildImage(BuildContext context, int index) { - return StreamImageAttachment( - attachment: images[index], - constraints: constraints, - message: message, - messageTheme: messageTheme, - onAttachmentTap: () => _onTap(context, index), - imageThumbnailSize: imageThumbnailSize, - imageThumbnailResizeType: imageThumbnailResizeType, - imageThumbnailCropType: imageThumbnailCropType, - attachmentActionsModalBuilder: attachmentActionsModalBuilder, - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/file_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/file_attachment_thumbnail.dart new file mode 100644 index 000000000..996d3c4d0 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/file_attachment_thumbnail.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/thumbnail_error.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/utils/helpers.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// {@template streamFileAttachmentThumbnail} +/// Widget for building file attachment thumbnail. +/// +/// This widget first tries to build an image thumbnail for the file attachment. +/// If the image thumbnail fails to load, it tries to build a video thumbnail. +/// If the video thumbnail fails to load, it returns a generic file type icon. +/// {@endtemplate} +class StreamFileAttachmentThumbnail extends StatelessWidget { + /// {@macro streamFileAttachmentThumbnail} + const StreamFileAttachmentThumbnail({ + super.key, + required this.file, + this.width, + this.height, + this.fit, + this.errorBuilder = _defaultErrorBuilder, + }); + + /// The file attachment to build the thumbnail for. + final Attachment file; + + /// The width of the thumbnail. + final double? width; + + /// The height of the thumbnail. + final double? height; + + /// How to inscribe the thumbnail into the space allocated during layout. + final BoxFit? fit; + + /// Builder used when the thumbnail fails to load. + final ThumbnailErrorBuilder errorBuilder; + + // Default error builder for file attachment thumbnail. + static Widget _defaultErrorBuilder( + BuildContext context, + Object error, + StackTrace? stackTrace, + ) { + // Return a generic file type icon. + return getFileTypeImage(); + } + + @override + Widget build(BuildContext context) { + final mimeType = file.title?.mimeType?.type; + + final isImage = mimeType == 'image'; + if (isImage) { + return StreamImageAttachmentThumbnail( + image: file, + width: width, + height: height, + fit: fit, + ); + } + + final isVideo = mimeType == 'video'; + if (isVideo) { + return StreamVideoAttachmentThumbnail( + video: file, + width: width, + height: height, + fit: fit, + ); + } + + // Return a generic file type icon. + return getFileTypeImage(mimeType); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/giphy_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/giphy_attachment_thumbnail.dart new file mode 100644 index 000000000..98b8e026a --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/giphy_attachment_thumbnail.dart @@ -0,0 +1,100 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:shimmer/shimmer.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/thumbnail_error.dart'; +import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// {@template giphyAttachmentThumbnail} +/// Widget for building giphy attachment thumbnail. +/// +/// This widget is used when the [Attachment.type] is [AttachmentType.giphy]. +/// {@endtemplate} +class StreamGiphyAttachmentThumbnail extends StatelessWidget { + /// {@macro giphyAttachmentThumbnail} + const StreamGiphyAttachmentThumbnail({ + super.key, + required this.giphy, + this.type = GiphyInfoType.original, + this.width, + this.height, + this.fit, + this.errorBuilder = _defaultErrorBuilder, + }); + + /// The giphy attachment to build the thumbnail for. + final Attachment giphy; + + /// The type of giphy thumbnail to build. + final GiphyInfoType type; + + /// The width of the thumbnail. + final double? width; + + /// The height of the thumbnail. + final double? height; + + /// How to inscribe the thumbnail into the space allocated during layout. + final BoxFit? fit; + + /// Builder used when the thumbnail fails to load. + final ThumbnailErrorBuilder errorBuilder; + + // Default error builder for image attachment thumbnail. + static Widget _defaultErrorBuilder( + BuildContext context, + Object error, + StackTrace? stackTrace, + ) { + return ThumbnailError( + error: error, + stackTrace: stackTrace, + ); + } + + @override + Widget build(BuildContext context) { + // If the giphy info is not available, use the image attachment thumbnail + // instead. + final info = giphy.giphyInfo(type); + if (info == null) { + return StreamImageAttachmentThumbnail( + image: giphy, + width: width, + height: height, + fit: fit, + ); + } + + return CachedNetworkImage( + imageUrl: info.url, + width: width, + height: height, + fit: fit, + placeholder: (context, __) { + final image = Image.asset( + 'images/placeholder.png', + width: width, + height: height, + fit: BoxFit.cover, + package: 'stream_chat_flutter', + ); + + final colorTheme = StreamChatTheme.of(context).colorTheme; + return Shimmer.fromColors( + baseColor: colorTheme.disabled, + highlightColor: colorTheme.inputBg, + child: image, + ); + }, + errorWidget: (context, url, error) { + return errorBuilder( + context, + error, + StackTrace.current, + ); + }, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/image_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/image_attachment_thumbnail.dart new file mode 100644 index 000000000..2d04c0fae --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/image_attachment_thumbnail.dart @@ -0,0 +1,245 @@ +import 'dart:io' show File; + +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:image_size_getter/file_input.dart'; // For compatibility with flutter web. +import 'package:image_size_getter/image_size_getter.dart' hide Size; +import 'package:shimmer/shimmer.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/thumbnail_error.dart'; +import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/utils/utils.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +extension AspectRatioX on Attachment { + /// Returns the size of the attachment if it is an image or giffy. + /// Otherwise, returns null. + Size? get originalSize { + // Return null if the attachment is not an image or giffy. + if (type != 'image' && type != 'giphy') return null; + + // Calculate size locally if the attachment is not uploaded yet. + final file = this.file; + if (file != null) { + ImageInput? input; + if (file.bytes != null) { + input = MemoryInput(file.bytes!); + } else if (file.path != null) { + input = FileInput(File(file.path!)); + } + + // Return null if the file does not contain enough information. + if (input == null) return null; + + final size = ImageSizeGetter.getSize(input); + if (size.needRotate) { + return Size(size.height.toDouble(), size.width.toDouble()); + } + return Size(size.width.toDouble(), size.height.toDouble()); + } + + // Otherwise, use the size provided by the server. + final width = originalWidth; + final height = originalHeight; + if (width == null || height == null) return null; + return Size(width.toDouble(), height.toDouble()); + } +} + +/// {@template imageAttachmentThumbnail} +/// Widget for building image attachment thumbnail. +/// +/// This widget is used when the [Attachment.type] is [AttachmentType.image]. +/// {@endtemplate} +class StreamImageAttachmentThumbnail extends StatelessWidget { + /// {@macro imageAttachmentThumbnail} + const StreamImageAttachmentThumbnail({ + super.key, + required this.image, + this.width, + this.height, + this.fit, + this.thumbnailSize, + this.thumbnailResizeType = 'clip', + this.thumbnailCropType = 'center', + this.errorBuilder = _defaultErrorBuilder, + }); + + /// The image attachment to show. + final Attachment image; + + /// Width of the attachment image thumbnail. + final double? width; + + /// Height of the attachment image thumbnail. + final double? height; + + /// Fit of the attachment image thumbnail. + final BoxFit? fit; + + /// Size of the attachment image thumbnail. + final Size? thumbnailSize; + + /// Resize type of the image attachment thumbnail. + /// + /// Defaults to [crop] + final String /*clip|crop|scale|fill*/ thumbnailResizeType; + + /// Crop type of the image attachment thumbnail. + /// + /// Defaults to [center] + final String /*center|top|bottom|left|right*/ thumbnailCropType; + + /// Builder used when the thumbnail fails to load. + final ThumbnailErrorBuilder errorBuilder; + + // Default error builder for image attachment thumbnail. + static Widget _defaultErrorBuilder( + BuildContext context, + Object error, + StackTrace? stackTrace, + ) { + return ThumbnailError( + error: error, + stackTrace: stackTrace, + ); + } + + @override + Widget build(BuildContext context) { + final file = image.file; + if (file != null) { + return _LocalImageAttachment( + file: file, + width: width, + height: height, + fit: fit, + errorBuilder: errorBuilder, + ); + } + + var imageUrl = image.thumbUrl ?? image.imageUrl ?? image.assetUrl; + if (imageUrl != null) { + final thumbnailSize = this.thumbnailSize; + if (thumbnailSize != null) { + imageUrl = imageUrl.getResizedImageUrl( + width: thumbnailSize.width, + height: thumbnailSize.height, + resize: thumbnailResizeType, + crop: thumbnailCropType, + ); + } + + return _RemoteImageAttachment( + url: imageUrl, + width: width, + height: height, + fit: fit, + errorBuilder: errorBuilder, + ); + } + + // Return error widget if no image is found. + return errorBuilder( + context, + 'Image attachment is not valid', + StackTrace.current, + ); + } +} + +class _LocalImageAttachment extends StatelessWidget { + const _LocalImageAttachment({ + required this.file, + required this.errorBuilder, + this.width, + this.height, + this.fit, + }); + + final AttachmentFile file; + final double? width; + final double? height; + final BoxFit? fit; + final ThumbnailErrorBuilder errorBuilder; + + @override + Widget build(BuildContext context) { + final bytes = file.bytes; + if (bytes != null) { + return Image.memory( + bytes, + width: width, + height: height, + fit: fit, + errorBuilder: errorBuilder, + ); + } + + final path = file.path; + if (path != null) { + return Image.file( + File(path), + width: width, + height: height, + fit: fit, + errorBuilder: errorBuilder, + ); + } + + // Return error widget if no image is found. + return errorBuilder( + context, + 'Image attachment is not valid', + StackTrace.current, + ); + } +} + +class _RemoteImageAttachment extends StatelessWidget { + const _RemoteImageAttachment({ + required this.url, + required this.errorBuilder, + this.width, + this.height, + this.fit, + }); + + final String url; + final double? width; + final double? height; + final BoxFit? fit; + final ThumbnailErrorBuilder errorBuilder; + + @override + Widget build(BuildContext context) { + return CachedNetworkImage( + imageUrl: url, + width: width, + height: height, + fit: fit, + placeholder: (context, __) { + final image = Image.asset( + 'images/placeholder.png', + width: width, + height: height, + fit: BoxFit.cover, + package: 'stream_chat_flutter', + ); + + final colorTheme = StreamChatTheme.of(context).colorTheme; + return Shimmer.fromColors( + baseColor: colorTheme.disabled, + highlightColor: colorTheme.inputBg, + child: image, + ); + }, + errorWidget: (context, url, error) { + return errorBuilder( + context, + error, + StackTrace.current, + ); + }, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/thumbnail_error.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/thumbnail_error.dart new file mode 100644 index 000000000..e13874032 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/thumbnail_error.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; + +/// {@template thumbnailErrorBuilder} +/// Signature for the builder callback used by [ThumbnailError.builder]. +/// +/// The parameters represent the [BuildContext], [error] and [stackTrace] of the +/// error that triggered this callback. +/// {@endtemplate} +typedef ThumbnailErrorBuilder = Widget Function( + BuildContext context, + Object error, + StackTrace? stackTrace, +); + +/// {@template thumbnailError} +/// A widget that shows an error state when a thumbnail fails to load. +/// {@endtemplate} +class ThumbnailError extends StatelessWidget { + /// {@macro thumbnailError} + const ThumbnailError({ + super.key, + required this.error, + this.stackTrace, + }); + + /// The error that triggered this error widget. + final Object error; + + /// The stack trace of the error that triggered this error widget. + final StackTrace? stackTrace; + + @override + Widget build(BuildContext context) { + return Image.asset( + 'images/placeholder.png', + fit: BoxFit.cover, + package: 'stream_chat_flutter', + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/video_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/video_attachment_thumbnail.dart new file mode 100644 index 000000000..ac4da7fa8 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/video_attachment_thumbnail.dart @@ -0,0 +1,126 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:shimmer/shimmer.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/thumbnail_error.dart'; +import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/video/video_thumbnail_image.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// {@template videoAttachmentThumbnail} +/// Widget for building video attachment thumbnail. +/// +/// This widget is used when the [Attachment.type] is [AttachmentType.video]. +/// {@endtemplate} +class StreamVideoAttachmentThumbnail extends StatelessWidget { + /// {@macro videoAttachmentThumbnail} + const StreamVideoAttachmentThumbnail({ + super.key, + required this.video, + this.width, + this.height, + this.fit, + this.errorBuilder = _defaultErrorBuilder, + }); + + /// The video attachment to build the thumbnail for. + final Attachment video; + + /// The width of the thumbnail. + final double? width; + + /// The height of the thumbnail. + final double? height; + + /// How to inscribe the thumbnail into the space allocated during layout. + final BoxFit? fit; + + /// Builder used when the thumbnail fails to load. + final ThumbnailErrorBuilder errorBuilder; + + // Default error builder for image attachment thumbnail. + static Widget _defaultErrorBuilder( + BuildContext context, + Object error, + StackTrace? stackTrace, + ) { + return ThumbnailError( + error: error, + stackTrace: stackTrace, + ); + } + + @override + Widget build(BuildContext context) { + final thumbUrl = video.thumbUrl; + if (thumbUrl != null) { + return CachedNetworkImage( + imageUrl: thumbUrl, + width: width, + height: height, + fit: fit, + placeholder: (context, __) { + final image = Image.asset( + 'images/placeholder.png', + width: width, + height: height, + fit: BoxFit.cover, + package: 'stream_chat_flutter', + ); + + final colorTheme = StreamChatTheme.of(context).colorTheme; + return Shimmer.fromColors( + baseColor: colorTheme.disabled, + highlightColor: colorTheme.inputBg, + child: image, + ); + }, + errorWidget: (context, url, error) { + return errorBuilder( + context, + error, + StackTrace.current, + ); + }, + ); + } + + final filePath = video.file?.path; + final videoAssetUrl = video.assetUrl; + if (filePath != null || videoAssetUrl != null) { + return Image( + image: StreamVideoThumbnailImage(video: filePath ?? videoAssetUrl!), + width: width, + height: height, + fit: fit, + frameBuilder: (context, child, frame, wasSynchronouslyLoaded) { + if (frame != null || wasSynchronouslyLoaded) { + return child; + } + + final image = Image.asset( + 'images/placeholder.png', + width: width, + height: height, + fit: BoxFit.cover, + package: 'stream_chat_flutter', + ); + + final colorTheme = StreamChatTheme.of(context).colorTheme; + return Shimmer.fromColors( + baseColor: colorTheme.disabled, + highlightColor: colorTheme.inputBg, + child: image, + ); + }, + errorBuilder: errorBuilder, + ); + } + + // Return error widget if no thumbnail is found. + return errorBuilder( + context, + 'Video attachment is not valid', + StackTrace.current, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart index a628ee60c..b47f573f0 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart @@ -1,6 +1,5 @@ -import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:shimmer/shimmer.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// {@template streamUrlAttachment} @@ -10,155 +9,138 @@ class StreamUrlAttachment extends StatelessWidget { /// {@macro streamUrlAttachment} const StreamUrlAttachment({ super.key, + required this.message, required this.urlAttachment, required this.hostDisplayName, required this.messageTheme, - this.textPadding = const EdgeInsets.symmetric( - horizontal: 16, - vertical: 8, - ), - this.onLinkTap, + this.shape, + this.constraints = const BoxConstraints(), }); + /// The [Message] that the image is attached to. + final Message message; + /// Attachment to be displayed final Attachment urlAttachment; + /// The shape of the attachment. + /// + /// Defaults to [RoundedRectangleBorder] with a radius of 14. + final ShapeBorder? shape; + + /// The constraints to use when displaying the file. + final BoxConstraints constraints; + /// Host name final String hostDisplayName; - /// Padding for text - final EdgeInsets textPadding; - /// The [StreamMessageThemeData] to use for the image title final StreamMessageThemeData messageTheme; - /// The function called when tapping on a link - final void Function(String)? onLinkTap; - @override Widget build(BuildContext context) { - return ConstrainedBox( - constraints: const BoxConstraints( - maxWidth: 400, - minWidth: 400, + final chatTheme = StreamChatTheme.of(context); + final colorTheme = chatTheme.colorTheme; + final shape = this.shape ?? + RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, + ), + borderRadius: BorderRadius.circular(14), + ); + + final backgroundColor = messageTheme.urlAttachmentBackgroundColor; + + return Container( + constraints: constraints, + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration( + shape: shape, + color: backgroundColor, ), - child: MouseRegion( - cursor: SystemMouseCursors.click, - child: GestureDetector( - onTap: () { - final ogScrapeUrl = urlAttachment.ogScrapeUrl; - if (ogScrapeUrl != null) { - onLinkTap != null - ? onLinkTap!(ogScrapeUrl) - : launchURL(context, ogScrapeUrl); - } - }, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (urlAttachment.imageUrl != null) - Container( - clipBehavior: Clip.hardEdge, - margin: const EdgeInsets.symmetric(horizontal: 8), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (urlAttachment.imageUrl != null) + Stack( + children: [ + AspectRatio( + // Default aspect ratio for Open Graph images. + // https://www.kapwing.com/resources/what-is-an-og-image-make-and-format-og-images-for-your-blog-or-webpage + aspectRatio: 1.91 / 1, + child: StreamImageAttachmentThumbnail( + image: urlAttachment, + fit: BoxFit.cover, ), - child: Stack( - children: [ - AspectRatio( - // Default aspect ratio for Open Graph images. - // https://www.kapwing.com/resources/what-is-an-og-image-make-and-format-og-images-for-your-blog-or-webpage - aspectRatio: 1.91 / 1, - child: CachedNetworkImage( - imageUrl: urlAttachment.imageUrl!, - fit: BoxFit.cover, - placeholder: (context, __) { - final image = Image.asset( - 'images/placeholder.png', - fit: BoxFit.cover, - package: 'stream_chat_flutter', - ); - final colorTheme = - StreamChatTheme.of(context).colorTheme; - return Shimmer.fromColors( - baseColor: colorTheme.disabled, - highlightColor: colorTheme.inputBg, - child: image, - ); - }, - errorWidget: (_, __, ___) => const AttachmentError(), - ), + ), + Positioned( + left: 0, + bottom: 0, + child: DecoratedBox( + decoration: BoxDecoration( + borderRadius: const BorderRadius.only( + topRight: Radius.circular(16), ), - Positioned( - left: 0, - bottom: 0, - child: DecoratedBox( - decoration: BoxDecoration( - borderRadius: const BorderRadius.only( - topRight: Radius.circular(16), - ), - color: messageTheme.urlAttachmentBackgroundColor, - ), - child: Padding( - padding: const EdgeInsets.only( - top: 8, - left: 8, - right: 12, - bottom: 4, - ), - child: Text( - hostDisplayName, - style: messageTheme.urlAttachmentHostStyle, - ), - ), - ), + color: backgroundColor, + ), + child: Padding( + padding: const EdgeInsets.only( + top: 8, + left: 8, + right: 12, + bottom: 4, ), - ], + child: Text( + hostDisplayName, + style: messageTheme.urlAttachmentHostStyle, + ), + ), ), ), - Padding( - padding: textPadding, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (urlAttachment.title != null) - Builder(builder: (context) { - final maxLines = messageTheme.urlAttachmentTitleMaxLine; + ], + ), + Padding( + padding: const EdgeInsets.all(8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (urlAttachment.title != null) + Builder(builder: (context) { + final maxLines = messageTheme.urlAttachmentTitleMaxLine; - TextOverflow? overflow; - if (maxLines != null && maxLines > 0) { - overflow = TextOverflow.ellipsis; - } + TextOverflow? overflow; + if (maxLines != null && maxLines > 0) { + overflow = TextOverflow.ellipsis; + } - return Text( - urlAttachment.title!.trim(), - maxLines: maxLines, - overflow: overflow, - style: messageTheme.urlAttachmentTitleStyle, - ); - }), - if (urlAttachment.text != null) - Builder(builder: (context) { - final maxLines = messageTheme.urlAttachmentTextMaxLine; + return Text( + urlAttachment.title!.trim(), + maxLines: maxLines, + overflow: overflow, + style: messageTheme.urlAttachmentTitleStyle, + ); + }), + if (urlAttachment.text != null) + Builder(builder: (context) { + final maxLines = messageTheme.urlAttachmentTextMaxLine; - TextOverflow? overflow; - if (maxLines != null && maxLines > 0) { - overflow = TextOverflow.ellipsis; - } + TextOverflow? overflow; + if (maxLines != null && maxLines > 0) { + overflow = TextOverflow.ellipsis; + } - return Text( - urlAttachment.text!, - maxLines: maxLines, - overflow: overflow, - style: messageTheme.urlAttachmentTextStyle, - ); - }), - ].insertBetween(const SizedBox(height: 4)), - ), - ), - ], + return Text( + urlAttachment.text!, + maxLines: maxLines, + overflow: overflow, + style: messageTheme.urlAttachmentTextStyle, + ); + }), + ].insertBetween(const SizedBox(height: 4)), + ), ), - ), + ], ), ); } diff --git a/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart index 0d5d4ecd9..bcbcd2f0e 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart @@ -1,123 +1,72 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// {@template streamVideoAttachment} /// Shows a video attachment in a [StreamMessageWidget]. /// {@endtemplate} -class StreamVideoAttachment extends StreamAttachmentWidget { +class StreamVideoAttachment extends StatelessWidget { /// {@macro streamVideoAttachment} const StreamVideoAttachment({ super.key, - required super.message, - required super.attachment, - required this.messageTheme, - super.constraints, - this.onShowMessage, - this.onReplyMessage, - this.onAttachmentTap, - this.attachmentActionsModalBuilder, + required this.message, + required this.video, + this.shape, + this.constraints = const BoxConstraints(), }); - /// The [StreamMessageThemeData] to use for the title - final StreamMessageThemeData messageTheme; + /// The [Message] that the video is attached to. + final Message message; - /// {@macro showMessageCallback} - final ShowMessageCallback? onShowMessage; + /// The [Attachment] object containing the video information. + final Attachment video; - /// {@macro replyMessageCallback} - final ReplyMessageCallback? onReplyMessage; + /// The shape of the attachment. + /// + /// Defaults to [RoundedRectangleBorder] with a radius of 14. + final ShapeBorder? shape; - /// {@macro onAttachmentTap} - final OnAttachmentTap? onAttachmentTap; - - /// {@macro attachmentActionsBuilder} - final AttachmentActionsBuilder? attachmentActionsModalBuilder; + /// The constraints to use when displaying the video. + final BoxConstraints constraints; @override Widget build(BuildContext context) { - return source.when( - local: () { - if (attachment.file == null) { - return AttachmentError(constraints: constraints); - } - return _buildVideoAttachment( - context, - StreamVideoThumbnailImage( - video: attachment.file!.path, - thumbUrl: attachment.thumbUrl, - constraints: constraints, - ), - ); - }, - network: () { - if (attachment.assetUrl == null) { - return AttachmentError(constraints: constraints); - } - return _buildVideoAttachment( - context, - StreamVideoThumbnailImage( - video: attachment.assetUrl, - thumbUrl: attachment.thumbUrl, - constraints: constraints, + final chatTheme = StreamChatTheme.of(context); + final colorTheme = chatTheme.colorTheme; + final shape = this.shape ?? + RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, ), + borderRadius: BorderRadius.circular(14), ); - }, - ); - } - Widget _buildVideoAttachment(BuildContext context, Widget videoWidget) { - return ConstrainedBox( - constraints: constraints ?? const BoxConstraints.expand(), - child: Column( - children: [ - Expanded( - child: GestureDetector( - onTap: onAttachmentTap ?? - () async { - if (attachment.uploadState == const UploadState.success()) { - final channel = StreamChannel.of(context).channel; - await Navigator.of(context).push( - MaterialPageRoute( - builder: (_) => StreamChannel( - channel: channel, - child: StreamFullScreenMediaBuilder( - mediaAttachmentPackages: - message.getAttachmentPackageList(), - startIndex: - message.attachments.indexOf(attachment), - userName: message.user!.name, - onShowMessage: onShowMessage, - onReplyMessage: onReplyMessage, - attachmentActionsModalBuilder: - attachmentActionsModalBuilder, - ), - ), - ), - ); - } - }, - child: Stack( - children: [ - videoWidget, - const Center( - child: Material( - shape: CircleBorder(), - child: Padding( - padding: EdgeInsets.all(16), - child: Icon(Icons.play_arrow), - ), - ), - ), - Padding( - padding: const EdgeInsets.all(8), - child: StreamAttachmentUploadStateBuilder( - message: message, - attachment: attachment, - ), - ), - ], - ), + return Container( + constraints: constraints, + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration(shape: shape), + child: Stack( + alignment: Alignment.center, + children: [ + StreamVideoAttachmentThumbnail( + video: video, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ), + const Material( + shape: CircleBorder(), + child: Padding( + padding: EdgeInsets.all(16), + child: Icon(Icons.play_arrow), + ), + ), + Padding( + padding: const EdgeInsets.all(8), + child: StreamAttachmentUploadStateBuilder( + message: message, + attachment: video, ), ), ], diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart index 2a791954f..1b0d82b7f 100644 --- a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart @@ -1,14 +1,13 @@ import 'dart:async'; import 'dart:io'; -import 'package:cached_network_image/cached_network_image.dart'; import 'package:chewie/chewie.dart'; import 'package:contextmenu/contextmenu.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; -import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/context_menu_items/download_menu_item.dart'; import 'package:stream_chat_flutter/src/fullscreen_media/full_screen_media_widget.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -73,7 +72,7 @@ class _FullScreenMediaState extends State { _pageController = PageController(initialPage: widget.startIndex); for (var i = 0; i < widget.mediaAttachmentPackages.length; i++) { final attachment = widget.mediaAttachmentPackages[i].attachment; - if (attachment.type != 'video') continue; + if (attachment.type != AttachmentType.video) continue; final package = VideoPackage(attachment, showControls: true); videoPackages[attachment.id] = package; } @@ -92,7 +91,8 @@ class _FullScreenMediaState extends State { (it) => it.initialize(), )); - if (widget.autoplayVideos && currentAttachment.type == 'video') { + if (widget.autoplayVideos && + currentAttachment.type == AttachmentType.video) { final package = videoPackages.values .firstWhere((e) => e._attachment == currentAttachment); package._chewieController?.play(); @@ -281,10 +281,8 @@ class _FullScreenMediaState extends State { final currentAttachmentPackage = widget.mediaAttachmentPackages[index]; final attachment = currentAttachmentPackage.attachment; - if (attachment.type == 'image' || attachment.type == 'giphy') { - final imageUrl = attachment.imageUrl ?? - attachment.assetUrl ?? - attachment.thumbUrl; + if (attachment.type == AttachmentType.image || + attachment.type == AttachmentType.giphy) { return ValueListenableBuilder( valueListenable: _isDisplayingDetail, builder: (context, isDisplayingDetail, _) => @@ -300,32 +298,40 @@ class _FullScreenMediaState extends State { attachment: attachment, ), ], - child: PhotoView( - imageProvider: (imageUrl == null && - attachment.localUri != null && - attachment.file?.bytes != null) - ? Image.memory(attachment.file!.bytes!).image - : CachedNetworkImageProvider(imageUrl!), - errorBuilder: (_, __, ___) => const AttachmentError(), - loadingBuilder: (context, _) { - final image = Image.asset( - 'images/placeholder.png', - fit: BoxFit.cover, - package: 'stream_chat_flutter', - ); - final colorTheme = - StreamChatTheme.of(context).colorTheme; - return Shimmer.fromColors( - baseColor: colorTheme.disabled, - highlightColor: colorTheme.inputBg, - child: image, - ); - }, - maxScale: PhotoViewComputedScale.covered, - minScale: PhotoViewComputedScale.contained, + child: PhotoView.customChild( heroAttributes: PhotoViewHeroAttributes( - tag: widget.mediaAttachmentPackages, + tag: attachment.id, + ), + // imageProvider: (imageUrl == null && + // attachment.localUri != null && + // attachment.file?.bytes != null) + // ? Image.memory(attachment.file!.bytes!).image + // : CachedNetworkImageProvider(imageUrl!), + // errorBuilder: (_, __, ___) => const AttachmentError(), + // loadingBuilder: (context, _) { + // final image = Image.asset( + // 'images/placeholder.png', + // fit: BoxFit.cover, + // package: 'stream_chat_flutter', + // ); + // final colorTheme = + // StreamChatTheme.of(context).colorTheme; + // return Shimmer.fromColors( + // baseColor: colorTheme.disabled, + // highlightColor: colorTheme.inputBg, + // child: image, + // ); + // }, + child: StreamImageAttachmentThumbnail( + image: attachment, + width: double.infinity, + height: double.infinity, ), + maxScale: PhotoViewComputedScale.covered, + minScale: PhotoViewComputedScale.contained, + // heroAttributes: PhotoViewHeroAttributes( + // tag: widget.mediaAttachmentPackages, + // ), backgroundDecoration: const BoxDecoration( color: Colors.transparent, ), @@ -333,7 +339,7 @@ class _FullScreenMediaState extends State { ), ), ); - } else if (attachment.type == 'video') { + } else if (attachment.type == AttachmentType.video) { final controller = videoPackages[attachment.id]!; if (!controller.initialized) { return const Center( diff --git a/packages/stream_chat_flutter/lib/src/gallery/gallery_footer.dart b/packages/stream_chat_flutter/lib/src/gallery/gallery_footer.dart index e7384fd92..f63a7fb72 100644 --- a/packages/stream_chat_flutter/lib/src/gallery/gallery_footer.dart +++ b/packages/stream_chat_flutter/lib/src/gallery/gallery_footer.dart @@ -5,6 +5,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; import 'package:share_plus/share_plus.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// {@template streamGalleryFooter} @@ -224,9 +225,8 @@ class _StreamGalleryFooterState extends State { onTap: () => widget.mediaSelectedCallBack!(index), child: AspectRatio( aspectRatio: 1, - child: StreamVideoThumbnailImage( - video: - attachment.file?.path ?? attachment.assetUrl, + child: StreamVideoAttachmentThumbnail( + video: attachment, ), ), ), diff --git a/packages/stream_chat_flutter/lib/src/indicators/loading_indicator.dart b/packages/stream_chat_flutter/lib/src/indicators/loading_indicator.dart new file mode 100644 index 000000000..cc42af630 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/indicators/loading_indicator.dart @@ -0,0 +1,21 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; + +/// {@template streamProgressIndicator} +/// A simple progress indicator that can be used in place of the default +/// [CircularProgressIndicator] in the Stream Chat widgets. +/// {@endtemplate} +class StreamLoadingIndicator extends StatelessWidget { + /// {@macro streamProgressIndicator} + const StreamLoadingIndicator({super.key}); + + @override + Widget build(BuildContext context) { + final color = StreamChatTheme.of(context).colorTheme.accentPrimary; + return CircularProgressIndicator.adaptive( + strokeWidth: 2, + backgroundColor: color, + valueColor: AlwaysStoppedAnimation(color), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart b/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart index 3bec19759..602383016 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart @@ -1,6 +1,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/message_input/clear_input_item_button.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:video_player/video_player.dart'; @@ -17,6 +18,7 @@ class StreamQuotedMessageWidget extends StatelessWidget { this.reverse = false, this.showBorder = false, this.textLimit = 170, + this.textBuilder, this.attachmentThumbnailBuilders, this.padding = const EdgeInsets.all(8), this.onQuotedMessageClear, @@ -47,6 +49,9 @@ class StreamQuotedMessageWidget extends StatelessWidget { /// Callback for clearing quoted messages. final VoidCallback? onQuotedMessageClear; + /// {@macro textBuilder} + final Widget Function(BuildContext, Message)? textBuilder; + @override Widget build(BuildContext context) { final children = [ @@ -57,6 +62,7 @@ class StreamQuotedMessageWidget extends StatelessWidget { messageTheme: messageTheme, showBorder: showBorder, reverse: reverse, + textBuilder: textBuilder, onQuotedMessageClear: onQuotedMessageClear, attachmentThumbnailBuilders: attachmentThumbnailBuilders, ), @@ -90,6 +96,7 @@ class _QuotedMessage extends StatelessWidget { required this.messageTheme, required this.showBorder, required this.reverse, + this.textBuilder, this.onQuotedMessageClear, this.attachmentThumbnailBuilders, }); @@ -100,6 +107,7 @@ class _QuotedMessage extends StatelessWidget { final StreamMessageThemeData messageTheme; final bool showBorder; final bool reverse; + final Widget Function(BuildContext, Message)? textBuilder; /// Map that defines a thumbnail builder for an attachment type final Map? @@ -158,20 +166,23 @@ class _QuotedMessage extends StatelessWidget { ), if (msg.text!.isNotEmpty && !_isGiphy) Flexible( - child: StreamMessageText( - message: msg, - messageTheme: isOnlyEmoji && _containsText - ? messageTheme.copyWith( - messageTextStyle: messageTheme.messageTextStyle?.copyWith( - fontSize: 32, - ), - ) - : messageTheme.copyWith( - messageTextStyle: messageTheme.messageTextStyle?.copyWith( - fontSize: 12, - ), - ), - ), + child: textBuilder?.call(context, msg) ?? + StreamMessageText( + message: msg, + messageTheme: isOnlyEmoji && _containsText + ? messageTheme.copyWith( + messageTextStyle: + messageTheme.messageTextStyle?.copyWith( + fontSize: 32, + ), + ) + : messageTheme.copyWith( + messageTextStyle: + messageTheme.messageTextStyle?.copyWith( + fontSize: 12, + ), + ), + ), ), ].insertBetween(const SizedBox(width: 8)); } @@ -268,20 +279,21 @@ class _ParseAttachments extends StatelessWidget { final builders = { 'image': (_, attachment) { return StreamImageAttachment( - attachment: attachment, message: message, - messageTheme: messageTheme, + image: attachment, constraints: BoxConstraints.loose(const Size(32, 32)), ); }, 'video': (_, attachment) { - return StreamVideoThumbnailImage( + return StreamVideoAttachmentThumbnail( key: ValueKey(attachment.assetUrl), - video: attachment.file?.path ?? attachment.assetUrl, - constraints: BoxConstraints.loose(const Size(32, 32)), - errorBuilder: (_, __) => AttachmentError( - constraints: BoxConstraints.loose(const Size(32, 32)), - ), + video: attachment, + width: 32, + height: 32, + // constraints: BoxConstraints.loose(const Size(32, 32)), + // errorBuilder: (_, __) => AttachmentError( + // constraints: BoxConstraints.loose(const Size(32, 32)), + // ), ); }, 'giphy': (_, attachment) { diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart index 46ebbd85f..cfb9e25c4 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart @@ -7,6 +7,8 @@ import 'package:stream_chat_flutter/src/utils/utils.dart'; import 'package:stream_chat_flutter/src/video/video_thumbnail_image.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; +import '../attachment/thumbnail/video_attachment_thumbnail.dart'; + /// WidgetBuilder used to build the message input attachment list. /// /// see more: @@ -206,7 +208,7 @@ class MessageInputFileAttachments extends StatelessWidget { borderRadius: BorderRadius.circular(10), child: StreamFileAttachment( message: Message(), // dummy message - attachment: attachment, + file: attachment, constraints: BoxConstraints.loose(Size( MediaQuery.of(context).size.width * 0.65, 56, @@ -333,9 +335,7 @@ class MessageInputMediaAttachmentThumbnail extends StatelessWidget { case 'video': return Stack( children: [ - StreamVideoThumbnailImage( - video: attachment.file?.path ?? attachment.assetUrl, - ), + StreamVideoAttachmentThumbnail(video: attachment), Positioned( left: 8, bottom: 10, diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart index b08b7ecf8..ee85693ab 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart @@ -10,6 +10,7 @@ import 'package:stream_chat_flutter/src/message_list_view/loading_indicator.dart import 'package:stream_chat_flutter/src/message_list_view/mlv_utils.dart'; import 'package:stream_chat_flutter/src/message_list_view/thread_separator.dart'; import 'package:stream_chat_flutter/src/message_list_view/unread_messages_separator.dart'; +import 'package:stream_chat_flutter/src/message_widget/ephemeral_message.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Spacing Types (These are properties of a message to help inform the decision @@ -1047,7 +1048,7 @@ class _StreamMessageListViewState extends State { } Widget buildMessage(Message message, List messages, int index) { - if ((message.type == 'system' || message.type == 'error') && + if ((message.isSystem || message.isError) && message.text?.isNotEmpty == true) { return widget.systemMessageBuilder?.call(context, message) ?? StreamSystemMessage( @@ -1059,6 +1060,17 @@ class _StreamMessageListViewState extends State { ); } + if (message.isEphemeral) { + // return widget.ephemeralMessageBuilder?.call(context, message) ?? + return StreamEphemeralMessage( + message: message, + // onMessageTap: (message) { + // widget.onEphemeralMessageTap?.call(message); + // FocusScope.of(context).unfocus(); + // }, + ); + } + final userId = StreamChat.of(context).currentUser!.id; final isMyMessage = message.user?.id == userId; final nextMessage = index - 1 >= 0 ? messages[index - 1] : null; diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/mlv_utils.dart b/packages/stream_chat_flutter/lib/src/message_list_view/mlv_utils.dart index f926eff0c..9524cef90 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/mlv_utils.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/mlv_utils.dart @@ -77,7 +77,6 @@ bool isInitialMessage(String id, StreamChannelState? channelState) { /// Converts a [ValueListenable] to a [Stream]. Stream valueListenableToStreamAdapter(ValueListenable listenable) { - // ignore: close_sinks late StreamController _controller; void listener() { diff --git a/packages/stream_chat_flutter/lib/src/message_widget/ephemeral_message.dart b/packages/stream_chat_flutter/lib/src/message_widget/ephemeral_message.dart new file mode 100644 index 000000000..9c76a4fa0 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/message_widget/ephemeral_message.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/message_widget/giphy_ephemeral_message.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// {@template streamEphemeralMessage} +/// Shows an ephemeral message in a [MessageWidget]. +/// {@endtemplate} +class StreamEphemeralMessage extends StatelessWidget { + /// {@macro streamEphemeralMessage} + const StreamEphemeralMessage({ + super.key, + required this.message, + }); + + /// The underlying [Message] object which this widget represents. + final Message message; + + @override + Widget build(BuildContext context) { + final streamChannel = StreamChannel.of(context); + + // If the message is a giphy command, we will show the giphy ephemeral + // message instead. + final isGiphy = message.command == 'giphy'; + if (isGiphy) { + return GiphyEphemeralMessage( + message: message, + onActionPressed: (name, value) { + streamChannel.channel.sendAction( + message, + {name: value}, + ); + }, + ); + } + + // Assert if the message is not handled. + assert(true, 'Ephemeral message not handled, Please add a handler'); + + // Show nothing if we don't know how to handle the message. + return const SizedBox.shrink(); + } +} diff --git a/packages/stream_chat_flutter/lib/src/message_widget/giphy_ephemeral_message.dart b/packages/stream_chat_flutter/lib/src/message_widget/giphy_ephemeral_message.dart new file mode 100644 index 000000000..16bdcace9 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/message_widget/giphy_ephemeral_message.dart @@ -0,0 +1,232 @@ +import 'package:flutter/material.dart'; +import 'package:jiffy/jiffy.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/giphy_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/misc/stream_svg_icon.dart'; +import 'package:stream_chat_flutter/src/misc/visible_footnote.dart'; +import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/utils/extensions.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// Signature for the action callback passed to [GiphyEphemeralMessage]. +/// +/// Used by [GiphyEphemeralMessage.onActionPressed]. +typedef GiffyAction = void Function(String name, String value); + +/// {@template giphyEphemeralMessage} +/// Shows an ephemeral message of type giphy in a [MessageWidget]. +/// {@endtemplate} +class GiphyEphemeralMessage extends StatelessWidget { + /// {@macro giphyEphemeralMessage} + const GiphyEphemeralMessage({ + super.key, + required this.message, + this.onActionPressed, + }); + + /// The underlying [Message] object which this widget represents. + final Message message; + + /// Callback called when an action is pressed. + final GiffyAction? onActionPressed; + + @override + Widget build(BuildContext context) { + final giphy = message.attachments.first; + + final actions = giphy.actions; + assert(actions != null && actions.isNotEmpty, 'actions cannot be null'); + + final chatTheme = StreamChatTheme.of(context); + final textTheme = chatTheme.textTheme; + final colorTheme = chatTheme.colorTheme; + + final divider = Divider(thickness: 1, height: 0, color: colorTheme.borders); + + return Padding( + padding: const EdgeInsets.all(8), + child: Align( + alignment: Alignment.centerRight, + child: SizedBox( + width: 304, + height: 343, + child: Column( + children: [ + Expanded( + child: Card( + elevation: 2, + color: colorTheme.barsBg, + margin: EdgeInsets.zero, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topRight: Radius.circular(16), + topLeft: Radius.circular(16), + bottomLeft: Radius.circular(16), + ), + ), + child: Column( + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: GiphyHeader(title: giphy.title), + ), + divider, + Expanded( + child: Padding( + padding: const EdgeInsets.all(2), + child: ClipRRect( + borderRadius: BorderRadius.circular(2), + child: StreamGiphyAttachmentThumbnail( + giphy: giphy, + width: double.infinity, + height: double.infinity, + ), + ), + ), + ), + divider, + SizedBox( + height: 48, + child: Padding( + padding: const EdgeInsets.all(2), + child: GiphyActions( + giphy: giphy, + onActionPressed: onActionPressed, + ), + ), + ), + ], + ), + ), + ), + const SizedBox(height: 4), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + const StreamVisibleFootnote(), + const SizedBox(width: 4), + Text( + Jiffy.parseFromDateTime(message.createdAt.toLocal()).jm, + style: textTheme.footnote.copyWith( + color: colorTheme.textLowEmphasis, + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} + +/// {@template giphyActions} +/// Shows the actions for a giphy ephemeral message. +/// {@endtemplate} +class GiphyActions extends StatelessWidget { + /// {@macro giphyActions} + const GiphyActions({ + super.key, + required this.giphy, + required this.onActionPressed, + }); + + /// The underlying [Attachment] object which this widget represents. + final Attachment giphy; + + /// Callback called when an action is pressed. + final GiffyAction? onActionPressed; + + @override + Widget build(BuildContext context) { + final theme = StreamChatTheme.of(context); + final textTheme = theme.textTheme; + final colorTheme = theme.colorTheme; + + return Row( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Expanded( + child: TextButton( + onPressed: () { + onActionPressed?.call('image_action', 'cancel'); + }, + child: Text( + context.translations.cancelLabel.capitalize(), + style: textTheme.bodyBold.copyWith( + color: colorTheme.textLowEmphasis, + ), + ), + ), + ), + VerticalDivider(thickness: 1, width: 4, color: colorTheme.borders), + Expanded( + child: TextButton( + onPressed: () { + onActionPressed?.call('image_action', 'shuffle'); + }, + child: Text( + context.translations.shuffleLabel.capitalize(), + style: textTheme.bodyBold.copyWith( + color: colorTheme.textLowEmphasis, + ), + ), + ), + ), + VerticalDivider(thickness: 1, width: 4, color: colorTheme.borders), + Expanded( + child: TextButton( + onPressed: () { + onActionPressed?.call('image_action', 'send'); + }, + child: Text( + context.translations.sendLabel.capitalize(), + style: textTheme.bodyBold.copyWith( + color: colorTheme.accentPrimary, + ), + ), + ), + ), + ], + ); + } +} + +/// {@template giphyHeader} +/// Shows the header for a giphy ephemeral message. +/// {@endtemplate} +class GiphyHeader extends StatelessWidget { + /// {@macro giphyHeader} + const GiphyHeader({super.key, this.title}); + + /// The title of the giphy. + final String? title; + + @override + Widget build(BuildContext context) { + final colorTheme = StreamChatTheme.of(context).colorTheme; + return Row( + children: [ + StreamSvgIcon.giphyIcon(), + const SizedBox(width: 8), + Text( + context.translations.giphyLabel, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(width: 8), + if (title != null) + Expanded( + child: Text( + title!, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: colorTheme.textHighEmphasis.withOpacity(0.5), + ), + ), + ), + ], + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/message_widget/message_card.dart b/packages/stream_chat_flutter/lib/src/message_widget/message_card.dart index cd84859f1..24da1ac30 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/message_card.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/message_card.dart @@ -1,6 +1,5 @@ -import 'dart:math'; - import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/attachment/builder/attachment_widget_builder.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// {@template messageCard} @@ -23,6 +22,10 @@ class MessageCard extends StatefulWidget { required this.isGiphy, required this.attachmentBuilders, required this.attachmentPadding, + required this.onAttachmentTap, + required this.onShowMessage, + required this.onReplyTap, + required this.attachmentActionsModalBuilder, required this.textPadding, required this.reverse, this.shape, @@ -72,11 +75,23 @@ class MessageCard extends StatefulWidget { final Message message; /// {@macro attachmentBuilders} - final Map attachmentBuilders; + final List? attachmentBuilders; /// {@macro attachmentPadding} final EdgeInsetsGeometry attachmentPadding; + /// {@macro onAttachmentTap} + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + /// {@macro onShowMessage} + final ShowMessageCallback? onShowMessage; + + /// {@macro onReplyTap} + final void Function(Message)? onReplyTap; + + /// {@macro attachmentActionsBuilder} + final AttachmentActionsBuilder? attachmentActionsModalBuilder; + /// {@macro textPadding} final EdgeInsets textPadding; @@ -103,32 +118,36 @@ class MessageCard extends StatefulWidget { } class _MessageCardState extends State { - final GlobalKey attachmentsKey = GlobalKey(); - final GlobalKey linksKey = GlobalKey(); + final attachmentsKey = GlobalKey(); double? widthLimit; + bool get hasAttachments { + return widget.hasUrlAttachments || widget.hasNonUrlAttachments; + } + + void _updateWidthLimit() { + final attachmentContext = attachmentsKey.currentContext; + final renderBox = attachmentContext?.findRenderObject() as RenderBox?; + final attachmentsWidth = renderBox?.size.width; + + if (attachmentsWidth == null || attachmentsWidth == 0) return; + + if (mounted) { + setState(() => widthLimit = attachmentsWidth); + } + } + @override - void initState() { - WidgetsBinding.instance.addPostFrameCallback((_) { - final attachmentsRenderBox = - attachmentsKey.currentContext?.findRenderObject() as RenderBox?; - final attachmentsWidth = attachmentsRenderBox?.size.width; - - final linkRenderBox = - linksKey.currentContext?.findRenderObject() as RenderBox?; - final linkWidth = linkRenderBox?.size.width; - - if (mounted) { - setState(() { - if (attachmentsWidth != null && linkWidth != null) { - widthLimit = max(attachmentsWidth, linkWidth); - } else { - widthLimit = attachmentsWidth ?? linkWidth; - } - }); - } - }); - super.initState(); + void didChangeDependencies() { + super.didChangeDependencies(); + // If there is an attachment, we need to wait for the attachment to be + // rendered to get the width of the attachment and set it as the width + // limit of the message card. + if (hasAttachments) { + WidgetsBinding.instance.addPostFrameCallback((_) { + _updateWidthLimit(); + }); + } } @override @@ -136,104 +155,82 @@ class _MessageCardState extends State { final onQuotedMessageTap = widget.onQuotedMessageTap; final quotedMessageBuilder = widget.quotedMessageBuilder; - return Card( - elevation: 0, - clipBehavior: Clip.hardEdge, + return Container( + constraints: const BoxConstraints().copyWith(maxWidth: widthLimit), margin: EdgeInsets.symmetric( horizontal: (widget.isFailedState ? 15.0 : 0.0) + (widget.showUserAvatar == DisplayWidget.gone ? 0 : 4.0), ), - shape: widget.shape ?? - RoundedRectangleBorder( - side: widget.borderSide ?? - BorderSide( - color: widget.messageTheme.messageBorderColor ?? - Colors.transparent, - ), - borderRadius: widget.borderRadiusGeometry ?? BorderRadius.zero, + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration( + color: _getBackgroundColor(), + shape: widget.shape ?? + RoundedRectangleBorder( + side: widget.borderSide ?? + BorderSide( + color: widget.messageTheme.messageBorderColor ?? + Colors.transparent, + ), + borderRadius: widget.borderRadiusGeometry ?? BorderRadius.zero, + ), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (widget.hasQuotedMessage) + InkWell( + onTap: !widget.message.quotedMessage!.isDeleted && + onQuotedMessageTap != null + ? () => onQuotedMessageTap(widget.message.quotedMessageId) + : null, + child: quotedMessageBuilder?.call( + context, + widget.message.quotedMessage!, + ) ?? + QuotedMessage( + message: widget.message, + textBuilder: widget.textBuilder, + hasNonUrlAttachments: widget.hasNonUrlAttachments, + ), + ), + if (hasAttachments) + ParseAttachments( + key: attachmentsKey, + message: widget.message, + attachmentBuilders: widget.attachmentBuilders, + attachmentPadding: widget.attachmentPadding, + onAttachmentTap: widget.onAttachmentTap, + onShowMessage: widget.onShowMessage, + onReplyTap: widget.onReplyTap, + attachmentActionsModalBuilder: + widget.attachmentActionsModalBuilder, + ), + TextBubble( + messageTheme: widget.messageTheme, + message: widget.message, + textPadding: widget.textPadding, + textBuilder: widget.textBuilder, + isOnlyEmoji: widget.isOnlyEmoji, + hasQuotedMessage: widget.hasQuotedMessage, + hasUrlAttachments: widget.hasUrlAttachments, + onLinkTap: widget.onLinkTap, + onMentionTap: widget.onMentionTap, ), - color: _getBackgroundColor(), - child: ConstrainedBox( - constraints: BoxConstraints( - maxWidth: widthLimit ?? double.infinity, - ), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - if (widget.hasQuotedMessage) - MouseRegion( - cursor: SystemMouseCursors.click, - child: InkWell( - onTap: !widget.message.quotedMessage!.isDeleted && - onQuotedMessageTap != null - ? () => onQuotedMessageTap(widget.message.quotedMessageId) - : null, - child: quotedMessageBuilder?.call( - context, - widget.message.quotedMessage!, - ) ?? - QuotedMessage( - reverse: widget.reverse, - message: widget.message, - hasNonUrlAttachments: widget.hasNonUrlAttachments, - ), - ), - ), - if (widget.hasNonUrlAttachments) - ParseAttachments( - key: attachmentsKey, - message: widget.message, - attachmentBuilders: widget.attachmentBuilders, - attachmentPadding: widget.attachmentPadding, - ), - if (!widget.isGiphy) - TextBubble( - messageTheme: widget.messageTheme, - message: widget.message, - textPadding: widget.textPadding, - textBuilder: widget.textBuilder, - isOnlyEmoji: widget.isOnlyEmoji, - hasQuotedMessage: widget.hasQuotedMessage, - hasUrlAttachments: widget.hasUrlAttachments, - onLinkTap: widget.onLinkTap, - onMentionTap: widget.onMentionTap, - ), - if (widget.hasUrlAttachments && !widget.hasQuotedMessage) - _buildUrlAttachment(), - ], - ), + ], ), ); } - Widget _buildUrlAttachment() { - final urlAttachment = widget.message.attachments - .firstWhere((element) => element.titleLink != null); - - final host = Uri.parse(urlAttachment.titleLink!).host; - final splitList = host.split('.'); - final hostName = splitList.length == 3 ? splitList[1] : splitList[0]; - final hostDisplayName = urlAttachment.authorName?.capitalize() ?? - getWebsiteName(hostName.toLowerCase()) ?? - hostName.capitalize(); - - return StreamUrlAttachment( - key: linksKey, - onLinkTap: widget.onLinkTap, - urlAttachment: urlAttachment, - hostDisplayName: hostDisplayName, - textPadding: widget.textPadding, - messageTheme: widget.messageTheme, - ); - } - Color? _getBackgroundColor() { if (widget.hasQuotedMessage) { return widget.messageTheme.messageBackgroundColor; } - if (widget.hasUrlAttachments) { + final containsOnlyUrlAttachment = + widget.hasUrlAttachments && !widget.hasNonUrlAttachments; + + if (containsOnlyUrlAttachment) { return widget.messageTheme.urlAttachmentBackgroundColor; } @@ -241,10 +238,6 @@ class _MessageCardState extends State { return Colors.transparent; } - if (widget.isGiphy) { - return Colors.transparent; - } - return widget.messageTheme.messageBackgroundColor; } } diff --git a/packages/stream_chat_flutter/lib/src/message_widget/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget/message_widget.dart index d0ac97a94..74835bd6f 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/message_widget.dart @@ -5,6 +5,7 @@ import 'package:flutter_portal/flutter_portal.dart'; import 'package:meta/meta.dart'; import 'package:stream_chat_flutter/conditional_parent_builder/conditional_parent_builder.dart'; import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; +import 'package:stream_chat_flutter/src/attachment/builder/attachment_widget_builder.dart'; import 'package:stream_chat_flutter/src/context_menu_items/context_menu_reaction_picker.dart'; import 'package:stream_chat_flutter/src/context_menu_items/stream_chat_context_menu_item.dart'; import 'package:stream_chat_flutter/src/dialogs/dialogs.dart'; @@ -41,7 +42,7 @@ enum DisplayWidget { /// {@endtemplate} class StreamMessageWidget extends StatefulWidget { /// {@macro messageWidget} - StreamMessageWidget({ + const StreamMessageWidget({ super.key, required this.message, required this.messageTheme, @@ -85,7 +86,7 @@ class StreamMessageWidget extends StatefulWidget { this.editMessageInputBuilder, this.textBuilder, this.bottomRowBuilderWithDefaultWidget, - this.customAttachmentBuilders, + this.attachmentBuilders, this.padding, this.textPadding = const EdgeInsets.symmetric( horizontal: 16, @@ -100,185 +101,157 @@ class StreamMessageWidget extends StatefulWidget { this.imageAttachmentThumbnailResizeType = 'clip', this.imageAttachmentThumbnailCropType = 'center', this.attachmentActionsModalBuilder, - }) : attachmentBuilders = { - 'image': (context, message, attachments) { - final border = RoundedRectangleBorder( - side: attachmentBorderSide ?? - BorderSide( - color: StreamChatTheme.of(context).colorTheme.borders, - ), - borderRadius: attachmentBorderRadiusGeometry ?? BorderRadius.zero, - ); - - final mediaQueryData = MediaQuery.of(context); - if (attachments.length > 1) { - return Padding( - padding: attachmentPadding, - child: WrapAttachmentWidget( - attachmentWidget: Material( - color: messageTheme.messageBackgroundColor, - child: StreamImageGroup( - constraints: BoxConstraints( - maxWidth: 400, - minWidth: 400, - maxHeight: mediaQueryData.size.height * 0.3, - ), - images: attachments, - message: message, - messageTheme: messageTheme, - onShowMessage: onShowMessage, - onReplyMessage: onReplyTap, - onAttachmentTap: onAttachmentTap, - imageThumbnailSize: imageAttachmentThumbnailSize, - imageThumbnailResizeType: - imageAttachmentThumbnailResizeType, - imageThumbnailCropType: imageAttachmentThumbnailCropType, - attachmentActionsModalBuilder: - attachmentActionsModalBuilder, - ), - ), - attachmentShape: border, - ), - ); - } - - return WrapAttachmentWidget( - attachmentWidget: StreamImageAttachment( - attachment: attachments[0], - message: message, - messageTheme: messageTheme, - constraints: BoxConstraints( - maxWidth: 400, - minWidth: 400, - maxHeight: mediaQueryData.size.height * 0.3, - ), - onShowMessage: onShowMessage, - onReplyMessage: onReplyTap, - onAttachmentTap: onAttachmentTap != null - ? () { - onAttachmentTap.call(message, attachments[0]); - } - : null, - imageThumbnailSize: imageAttachmentThumbnailSize, - imageThumbnailResizeType: imageAttachmentThumbnailResizeType, - imageThumbnailCropType: imageAttachmentThumbnailCropType, - attachmentActionsModalBuilder: attachmentActionsModalBuilder, - ), - attachmentShape: border, - ); - }, - 'video': (context, message, attachments) { - final border = RoundedRectangleBorder( - side: attachmentBorderSide ?? - BorderSide( - color: StreamChatTheme.of(context).colorTheme.borders, - ), - borderRadius: attachmentBorderRadiusGeometry ?? BorderRadius.zero, - ); - - return WrapAttachmentWidget( - attachmentWidget: Column( - children: attachments.map((attachment) { - final mediaQueryData = MediaQuery.of(context); - return StreamVideoAttachment( - attachment: attachment, - messageTheme: messageTheme, - constraints: BoxConstraints( - maxWidth: 400, - minWidth: 400, - maxHeight: mediaQueryData.size.height * 0.3, - ), - message: message, - onShowMessage: onShowMessage, - onReplyMessage: onReplyTap, - onAttachmentTap: onAttachmentTap != null - ? () { - onAttachmentTap(message, attachment); - } - : null, - attachmentActionsModalBuilder: - attachmentActionsModalBuilder, - ); - }).toList(), - ), - attachmentShape: border, - ); - }, - 'giphy': (context, message, attachments) { - final attachmentWidget = Column( - children: [ - ...attachments.map((attachment) { - final mediaQueryData = MediaQuery.of(context); - return StreamGiphyAttachment( - attachment: attachment, - message: message, - constraints: BoxConstraints( - maxWidth: 400, - minWidth: 400, - maxHeight: mediaQueryData.size.height * 0.3, - ), - onShowMessage: onShowMessage, - onReplyMessage: onReplyTap, - onAttachmentTap: onAttachmentTap != null - ? () => onAttachmentTap(message, attachment) - : null, - ); - }), - ], - ); - - // If the message is ephemeral, we don't want to show the border. - if (message.isEphemeral) return attachmentWidget; - - final color = StreamChatTheme.of(context).colorTheme.borders; - final border = RoundedRectangleBorder( - side: attachmentBorderSide ?? BorderSide(color: color), - borderRadius: attachmentBorderRadiusGeometry ?? BorderRadius.zero, - ); - - return WrapAttachmentWidget( - attachmentShape: border, - attachmentWidget: attachmentWidget, - ); - }, - 'file': (context, message, attachments) { - final border = RoundedRectangleBorder( - side: attachmentBorderSide ?? - BorderSide( - color: StreamChatTheme.of(context).colorTheme.borders, - ), - borderRadius: attachmentBorderRadiusGeometry ?? BorderRadius.zero, - ); - - return Column( - children: attachments - .map((attachment) { - final mediaQueryData = MediaQuery.of(context); - return WrapAttachmentWidget( - attachmentWidget: StreamFileAttachment( - message: message, - attachment: attachment, - constraints: BoxConstraints( - maxWidth: 400, - minWidth: 400, - maxHeight: mediaQueryData.size.height * 0.3, - ), - onAttachmentTap: onAttachmentTap != null - ? () { - onAttachmentTap(message, attachment); - } - : null, - ), - attachmentShape: border, - ); - }) - .insertBetween(SizedBox( - height: attachmentPadding.vertical / 2, - )) - .toList(), - ); - }, - }..addAll(customAttachmentBuilders ?? {}); + }); + + // attachmentBuilders = { + // // Add all default builders + // 'image': (context, message, attachments) { + // final color = StreamChatTheme.of(context).colorTheme.borders; + // final border = RoundedRectangleBorder( + // side: attachmentBorderSide ?? BorderSide(color: color), + // borderRadius: attachmentBorderRadiusGeometry ?? BorderRadius.zero, + // ); + // + // if (attachments.length > 1) { + // return WrapAttachmentWidget( + // attachmentShape: border, + // attachmentWidget: Material( + // color: messageTheme.messageBackgroundColor, + // child: StreamGalleryAttachment( + // constraints: const BoxConstraints.tightFor( + // width: 256, + // height: 195, + // ), + // attachments: attachments, + // message: message, + // itemBuilder: (context, index) { + // return Placeholder(); + // }, + // // onShowMessage: onShowMessage, + // // onReplyMessage: onReplyTap, + // // onAttachmentTap: onAttachmentTap, + // // imageThumbnailSize: imageAttachmentThumbnailSize, + // // imageThumbnailResizeType: + // // imageAttachmentThumbnailResizeType, + // // imageThumbnailCropType: imageAttachmentThumbnailCropType, + // // attachmentActionsModalBuilder: + // // attachmentActionsModalBuilder, + // ), + // ), + // ); + // } + // + // return WrapAttachmentWidget( + // attachmentShape: border, + // attachmentWidget: StreamImageAttachment( + // message: message, + // image: attachments.first, + // constraints: const BoxConstraints( + // minWidth: 170, + // maxWidth: 256, + // minHeight: 100, + // maxHeight: 300, + // ), + // // onShowMessage: onShowMessage, + // // onReplyMessage: onReplyTap, + // imageThumbnailSize: imageAttachmentThumbnailSize, + // imageThumbnailResizeType: imageAttachmentThumbnailResizeType, + // imageThumbnailCropType: imageAttachmentThumbnailCropType, + // // attachmentActionsModalBuilder: attachmentActionsModalBuilder, + // // onAttachmentTap: onAttachmentTap != null + // // ? () => onAttachmentTap.call(message, attachments.first) + // // : null, + // ), + // ); + // }, + // 'video': (context, message, attachments) { + // final color = StreamChatTheme.of(context).colorTheme.borders; + // final border = RoundedRectangleBorder( + // side: attachmentBorderSide ?? BorderSide(color: color), + // borderRadius: attachmentBorderRadiusGeometry ?? BorderRadius.zero, + // ); + // + // return WrapAttachmentWidget( + // attachmentShape: border, + // attachmentWidget: Column( + // children: [ + // ...attachments.map((attachment) { + // return StreamVideoAttachment( + // video: attachment, + // constraints: const BoxConstraints.tightFor( + // width: 256, + // height: 195, + // ), + // message: message, + // ); + // }), + // ], + // ), + // ); + // }, + // 'giphy': (context, message, attachments) { + // final color = StreamChatTheme.of(context).colorTheme.borders; + // final border = RoundedRectangleBorder( + // side: attachmentBorderSide ?? BorderSide(color: color), + // borderRadius: attachmentBorderRadiusGeometry ?? BorderRadius.zero, + // ); + // + // return WrapAttachmentWidget( + // attachmentShape: border, + // attachmentWidget: Column( + // children: [ + // ...attachments.map((attachment) { + // return StreamGiphyAttachment( + // giphy: attachment, + // message: message, + // constraints: const BoxConstraints( + // minWidth: 170, + // maxWidth: 256, + // minHeight: 100, + // maxHeight: 300, + // ), + // ); + // }), + // ], + // ), + // ); + // }, + // 'file': (context, message, attachments) { + // final color = StreamChatTheme.of(context).colorTheme.borders; + // final border = RoundedRectangleBorder( + // side: attachmentBorderSide ?? BorderSide(color: color), + // borderRadius: attachmentBorderRadiusGeometry ?? BorderRadius.zero, + // ); + // + // return Column( + // children: [ + // ...attachments.map((attachment) { + // final mediaQueryData = MediaQuery.of(context); + // return WrapAttachmentWidget( + // attachmentShape: border, + // attachmentWidget: StreamFileAttachment( + // message: message, + // file: attachment, + // constraints: BoxConstraints( + // maxWidth: 400, + // minWidth: 400, + // maxHeight: mediaQueryData.size.height * 0.3, + // ), + // // onAttachmentTap: onAttachmentTap != null + // // ? () => onAttachmentTap(message, attachment) + // // : null, + // ), + // ); + // }).insertBetween( + // SizedBox(height: attachmentPadding.vertical / 2), + // ), + // ], + // ); + // }, + // + // // Add all custom builders, overriding the defaults if needed. + // ...?customAttachmentBuilders, + // }; /// {@template onMentionTap} /// Function called on mention tap @@ -504,14 +477,13 @@ class StreamMessageWidget extends StatefulWidget { final bool showPinHighlight; /// {@template attachmentBuilders} - /// Builder for respective attachment types - /// {@endtemplate} - final Map attachmentBuilders; - - /// {@template customAttachmentBuilders} - /// Builder for respective attachment types (user facing builder) + /// List of attachment builders for rendering attachment widgets pre-defined + /// and custom attachment types. + /// + /// If null, the widget will create a default list of attachment builders + /// based on the [Attachment.type] of the attachment. /// {@endtemplate} - final Map? customAttachmentBuilders; + final List? attachmentBuilders; /// {@template translateUserAvatar} /// Center user avatar with bottom of the message @@ -530,7 +502,7 @@ class StreamMessageWidget extends StatefulWidget { final List customActions; /// {@macro onMessageWidgetAttachmentTap} - final OnMessageWidgetAttachmentTap? onAttachmentTap; + final StreamAttachmentWidgetTapCallback? onAttachmentTap; /// {@macro attachmentActionsBuilder} final AttachmentActionsBuilder? attachmentActionsModalBuilder; @@ -600,7 +572,7 @@ class StreamMessageWidget extends StatefulWidget { bool? showFlagButton, bool? showPinButton, bool? showPinHighlight, - Map? customAttachmentBuilders, + List? attachmentBuilders, bool? translateUserAvatar, OnQuotedMessageTap? onQuotedMessageTap, void Function(Message)? onMessageTap, @@ -664,8 +636,7 @@ class StreamMessageWidget extends StatefulWidget { showFlagButton: showFlagButton ?? this.showFlagButton, showPinButton: showPinButton ?? this.showPinButton, showPinHighlight: showPinHighlight ?? this.showPinHighlight, - customAttachmentBuilders: - customAttachmentBuilders ?? this.customAttachmentBuilders, + attachmentBuilders: attachmentBuilders ?? this.attachmentBuilders, translateUserAvatar: translateUserAvatar ?? this.translateUserAvatar, onQuotedMessageTap: onQuotedMessageTap ?? this.onQuotedMessageTap, onMessageTap: onMessageTap ?? this.onMessageTap, @@ -733,15 +704,14 @@ class _StreamMessageWidgetState extends State /// have a [Attachment.titleLink]. /// {@endtemplate} bool get hasNonUrlAttachments => widget.message.attachments - .where((it) => it.titleLink == null || it.type == 'giphy') - .isNotEmpty; + .any((it) => it.type != AttachmentType.urlPreview); /// {@template hasUrlAttachments} /// `true` if any of the [message]'s attachments are a giphy with a /// [Attachment.titleLink]. /// {@endtemplate} bool get hasUrlAttachments => widget.message.attachments - .any((it) => it.titleLink != null && it.type != 'giphy'); + .any((it) => it.type == AttachmentType.urlPreview); /// {@template showBottomRow} /// Show the [BottomRow] widget if any of the following are `true`: @@ -883,6 +853,11 @@ class _StreamMessageWidgetState extends State textPadding: widget.textPadding, attachmentBuilders: widget.attachmentBuilders, attachmentPadding: widget.attachmentPadding, + onAttachmentTap: widget.onAttachmentTap, + onReplyTap: widget.onReplyTap, + onShowMessage: widget.onShowMessage, + attachmentActionsModalBuilder: + widget.attachmentActionsModalBuilder, avatarWidth: avatarWidth, bottomRowPadding: bottomRowPadding, isFailedState: isFailedState, diff --git a/packages/stream_chat_flutter/lib/src/message_widget/message_widget_content.dart b/packages/stream_chat_flutter/lib/src/message_widget/message_widget_content.dart index 531bd9d62..e84f91f13 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/message_widget_content.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/message_widget_content.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_portal/flutter_portal.dart'; import 'package:meta/meta.dart'; +import 'package:stream_chat_flutter/src/attachment/builder/attachment_widget_builder.dart'; import 'package:stream_chat_flutter/src/message_widget/message_widget_content_components.dart'; import 'package:stream_chat_flutter/src/message_widget/reactions/desktop_reactions_builder.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -47,6 +48,10 @@ class MessageWidgetContent extends StatelessWidget { required this.isGiphy, required this.attachmentBuilders, required this.attachmentPadding, + required this.onAttachmentTap, + required this.onShowMessage, + required this.onReplyTap, + required this.attachmentActionsModalBuilder, required this.textPadding, required this.showReactionPickerTail, required this.translateUserAvatar, @@ -140,11 +145,23 @@ class MessageWidgetContent extends StatelessWidget { final bool isGiphy; /// {@macro attachmentBuilders} - final Map attachmentBuilders; + final List? attachmentBuilders; /// {@macro attachmentPadding} final EdgeInsetsGeometry attachmentPadding; + /// {@macro onAttachmentTap} + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + /// {@macro onShowMessage} + final ShowMessageCallback? onShowMessage; + + /// {@macro onReplyTap} + final void Function(Message)? onReplyTap; + + /// {@macro attachmentActionsBuilder} + final AttachmentActionsBuilder? attachmentActionsModalBuilder; + /// {@macro textPadding} final EdgeInsets textPadding; @@ -324,6 +341,11 @@ class MessageWidgetContent extends StatelessWidget { isGiphy: isGiphy, attachmentBuilders: attachmentBuilders, attachmentPadding: attachmentPadding, + onAttachmentTap: onAttachmentTap, + onReplyTap: onReplyTap, + onShowMessage: onShowMessage, + attachmentActionsModalBuilder: + attachmentActionsModalBuilder, textPadding: textPadding, reverse: reverse, onQuotedMessageTap: onQuotedMessageTap, diff --git a/packages/stream_chat_flutter/lib/src/message_widget/parse_attachments.dart b/packages/stream_chat_flutter/lib/src/message_widget/parse_attachments.dart index dddf83ddf..3477a751e 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/parse_attachments.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/parse_attachments.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/attachment/attachment_widget_catalog.dart'; +import 'package:stream_chat_flutter/src/attachment/builder/attachment_widget_builder.dart'; import 'package:stream_chat_flutter/src/message_widget/message_widget_content_components.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -14,57 +16,120 @@ class ParseAttachments extends StatelessWidget { required this.message, required this.attachmentBuilders, required this.attachmentPadding, + this.onAttachmentTap, + this.onShowMessage, + this.onReplyTap, + this.attachmentActionsModalBuilder, }); /// {@macro message} final Message message; /// {@macro attachmentBuilders} - final Map attachmentBuilders; + final List? attachmentBuilders; /// {@macro attachmentPadding} final EdgeInsetsGeometry attachmentPadding; + /// {@macro onAttachmentTap} + final StreamAttachmentWidgetTapCallback? onAttachmentTap; + + /// {@macro onShowMessage} + final ShowMessageCallback? onShowMessage; + + /// {@macro onReplyTap} + final void Function(Message)? onReplyTap; + + /// {@macro attachmentActionsBuilder} + final AttachmentActionsBuilder? attachmentActionsModalBuilder; + @override Widget build(BuildContext context) { - final attachmentGroups = >{}; - - message.attachments - .where((element) => - (element.titleLink == null && element.type != null) || - element.type == 'giphy') - .forEach((e) { - if (attachmentGroups[e.type] == null) { - attachmentGroups[e.type!] = []; + // Create a default onAttachmentTap callback if not provided. + var onAttachmentTap = this.onAttachmentTap; + onAttachmentTap ??= (message, attachment) { + // If the current attachment is a url preview attachment, open the url + // in the browser. + final isUrlPreview = attachment.type == AttachmentType.urlPreview; + if (isUrlPreview) { + final url = attachment.ogScrapeUrl ?? ''; + launchURL(context, url); + return; } - attachmentGroups[e.type]?.add(e); - }); - - final attachmentList = []; - - attachmentGroups.forEach((type, attachments) { - final attachmentBuilder = attachmentBuilders[type]; - - if (attachmentBuilder == null) return; - final attachmentWidget = attachmentBuilder( - context, - message, - attachments, - ); - attachmentList.add(attachmentWidget); - }); - - return Padding( - padding: attachmentPadding, - child: Column( - mainAxisSize: MainAxisSize.min, - children: attachmentList.insertBetween( - SizedBox( - height: attachmentPadding.vertical / 2, + final isImage = attachment.type == AttachmentType.image; + final isVideo = attachment.type == AttachmentType.video; + final isGiphy = attachment.type == AttachmentType.giphy; + + // If the current attachment is a media attachment, open the media + // attachment in full screen. + final isMedia = isImage || isVideo || isGiphy; + if (isMedia) { + final channel = StreamChannel.of(context).channel; + + final attachments = message.toAttachmentPackage( + filter: (it) { + final isImage = it.type == AttachmentType.image; + final isVideo = it.type == AttachmentType.video; + final isGiphy = it.type == AttachmentType.giphy; + return isImage || isVideo || isGiphy; + }, + ); + + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) { + return StreamChannel( + channel: channel, + child: StreamFullScreenMediaBuilder( + userName: message.user!.name, + mediaAttachmentPackages: attachments, + startIndex: attachments.indexWhere( + (it) => it.attachment.id == attachment.id, + ), + onReplyMessage: onReplyTap, + onShowMessage: onShowMessage, + attachmentActionsModalBuilder: attachmentActionsModalBuilder, + ), + ); + }, ), - ), - ), + ); + + return; + } + }; + + // Create a default attachmentBuilders list if not provided. + var builders = attachmentBuilders; + builders ??= StreamAttachmentWidgetBuilder.defaultBuilders( + message: message, + onAttachmentTap: onAttachmentTap, ); + + final catalog = AttachmentWidgetCatalog(builders: builders); + return catalog.build(context, message); + } +} + +extension on Message { + List toAttachmentPackage({ + bool Function(Attachment)? filter, + }) { + // Create a copy of the attachments list. + var attachments = [...this.attachments]; + if (filter != null) { + attachments = [...attachments.where(filter)]; + } + + // Create a list of StreamAttachmentPackage from the attachments list. + return [ + ...attachments.map((it) { + return StreamAttachmentPackage( + attachment: it, + message: this, + ); + }) + ]; } } diff --git a/packages/stream_chat_flutter/lib/src/message_widget/quoted_message.dart b/packages/stream_chat_flutter/lib/src/message_widget/quoted_message.dart index 673853af4..8f73efb01 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/quoted_message.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/quoted_message.dart @@ -12,31 +12,34 @@ class QuotedMessage extends StatelessWidget { const QuotedMessage({ super.key, required this.message, - required this.reverse, required this.hasNonUrlAttachments, + this.textBuilder, }); /// {@macro message} final Message message; - /// {@macro reverse} - final bool reverse; - /// {@macro hasNonUrlAttachments} final bool hasNonUrlAttachments; + /// {@macro textBuilder} + final Widget Function(BuildContext, Message)? textBuilder; + @override Widget build(BuildContext context) { final streamChat = StreamChat.of(context); final chatThemeData = StreamChatTheme.of(context); final isMyMessage = message.user?.id == streamChat.currentUser?.id; + final isMyQuotedMessage = + message.quotedMessage?.user?.id == streamChat.currentUser?.id; return StreamQuotedMessageWidget( message: message.quotedMessage!, messageTheme: isMyMessage ? chatThemeData.otherMessageTheme : chatThemeData.ownMessageTheme, - reverse: reverse, + reverse: !isMyQuotedMessage, + textBuilder: textBuilder, padding: EdgeInsets.only( right: 8, left: 8, diff --git a/packages/stream_chat_flutter/lib/src/misc/flex_grid.dart b/packages/stream_chat_flutter/lib/src/misc/flex_grid.dart new file mode 100644 index 000000000..2ffc9bfeb --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/misc/flex_grid.dart @@ -0,0 +1,259 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/utils/utils.dart'; + +/// {@template matrix} +/// A matrix represents a 2D array of integers. +/// {@endtemplate} +typedef Matrix = List>; + +extension on Matrix { + /// Returns the total number of items in the matrix. + int get count => fold(0, (sum, row) => sum + row.length); + + /// Creates a lazy iterable of the [count] first elements of this iterable. + /// + /// The returned `Iterable` may contain fewer than `count` elements, if `this` + /// contains fewer than `count` elements. + Matrix takeItems(int count) { + final matrix = [...this]; + + // Remove items from the end of the matrix until the count is equal to n. + while (matrix.count > count) { + matrix.last.removeLast(); + if (matrix.last.isEmpty) { + matrix.removeLast(); + } + } + + return matrix; + } +} + +/// Signature for a function that builds a widget for the overlay of the last +/// child in the grid in case the number of children exceeds the maximum. +/// +/// The [remaining] parameter represents the number of children that are not +/// displayed in the grid. +typedef OverlayBuilder = Widget Function(BuildContext context, int remaining); + +/// {@template flex_grid} +/// A flexible grid widget that arranges its children based on a provided +/// [pattern]. +/// +/// The [FlexGrid] widget displays a grid of [children] widgets based on a +/// provided [pattern]. Each numeric value in the matrix represents the +/// flex value of the corresponding widget in the grid. The number of widgets +/// must match the number of cells in the matrix. +/// +/// The grid can be configured to have a maximum number of children to display. +/// If the number of children exceeds the maximum, the last child will show the +/// remaining number of children as a count in an overlay. An overlay builder +/// can be provided to customize the overlay for the last child. +/// +/// The direction of the grid can be reversed, with either the column or row as +/// the primary direction. Spacing can be applied between children in the main +/// axis and between the runs (rows or columns) themselves in the cross axis. +/// +/// Example usage: +/// ```dart +/// FlexGrid( +/// pattern: const [ +/// [1, 1], +/// [1, 1], +/// ], +/// children: [ +/// Container(color: Colors.red), +/// Container(color: Colors.blue), +/// Container(color: Colors.green), +/// Container(color: Colors.yellow), +/// ], +/// ) +/// ``` +/// {@endtemplate} +class FlexGrid extends StatelessWidget { + /// {@macro flex_grid} + FlexGrid({ + super.key, + required this.pattern, + required this.children, + this.maxChildren, + this.overlayBuilder, + this.reverse = false, + this.spacing = 2.0, + this.runSpacing = 2.0, + }) : assert( + pattern.count == children.length, + 'The number of children must match the number of cells in the matrix', + ), + assert( + maxChildren == null || maxChildren <= pattern.count, + 'The number of maxChildren must be less than or equal to the number ' + 'of cells in the matrix', + ), + assert( + maxChildren == null || overlayBuilder != null, + 'overlayBuilder must be provided when maxChildren is not null', + ); + + /// The pattern of the grid. + /// + /// Each numeric value in the array represents the flex value of + /// corresponding widget in grid. + /// + /// For example, a grid with 2 rows and 2 columns can be represented as: + /// + /// ```dart + /// [ + /// [1, 1], + /// [1, 1], + /// ] + /// ``` + /// + /// This will create a grid with 4 cells with each cell having a flex value + /// of 1. + final Matrix pattern; + + /// The widgets to display in the grid. + /// + /// The number of widgets must match the number of cells in the matrix. + final List children; + + /// Whether to reverse the direction of the grid. + /// + /// By default, the grid is rendered with column as primary direction and row + /// as secondary direction. + /// + /// If this is set to `true`, the grid will be rendered with row as primary + /// direction and column as secondary direction. + final bool reverse; + + /// The maximum number of children to display in the grid. + /// + /// If this is set, the grid will be rendered with a maximum of [maxChildren] + /// children. If the number of children is greater than [maxChildren], The + /// last child will show the remaining number of children as a count in a + /// overlay. + final int? maxChildren; + + /// The builder to use to build the overlay for the last child in case the + /// number of children is greater than [maxChildren]. + /// + /// The builder will be passed the number of remaining children to display. + final OverlayBuilder? overlayBuilder; + + /// How much space to place between children in a run in the main axis. + /// + /// For example, if [spacing] is 10.0, the children will be spaced at least + /// 10.0 logical pixels apart in the main axis. + /// + /// Defaults to 2.0. + final double spacing; + + /// How much space to place between the runs themselves in the cross axis. + /// + /// For example, if [runSpacing] is 10.0, the runs will be spaced at least + /// 10.0 logical pixels apart in the cross axis. + /// + /// Defaults to 2.0. + final double runSpacing; + + @override + Widget build(BuildContext context) { + // Determine the primary and secondary directions. + final primaryDirection = reverse ? Axis.horizontal : Axis.vertical; + final secondaryDirection = reverse ? Axis.vertical : Axis.horizontal; + + var pattern = [...this.pattern]; + var children = [...this.children]; + + // If the number of children is greater than the maximum number of children, + // remove the extra children. + final maxChildren = this.maxChildren; + if (maxChildren != null && maxChildren < pattern.count) { + children = [...children.take(maxChildren)]; + pattern = [...pattern.takeItems(maxChildren)]; + } + + // Track the current child index. + // + // This is used to determine which child to render next. + var childIndex = 0; + + return Flex( + direction: primaryDirection, + children: [ + for (final row in pattern) + Expanded( + child: Flex( + direction: secondaryDirection, + children: [ + ...row.map((flex) { + final isLastChild = childIndex == children.length - 1; + + // Determine the number of remaining children. + final remaining = (this.children.length - 1) - childIndex; + + // If we are at the last child and there are remaining + // children, show the remaining number of children as a + // count in a overlay. + if (isLastChild && remaining > 0) { + return Expanded( + flex: flex, + child: Stack( + fit: StackFit.passthrough, + children: [ + children[childIndex++], + overlayBuilder!.call(context, remaining), + ], + ), + ); + } + + // Otherwise, return the child. + return Expanded( + flex: flex, + child: children[childIndex++], + ); + }), + ].insertBetween( + Gap(direction: secondaryDirection, spacing: runSpacing), + ), + ), + ), + ].insertBetween( + Gap(direction: primaryDirection, spacing: spacing), + ), + ); + } +} + +/// {@template gap} +/// A gap widget used to add spacing between children in either the horizontal +/// or vertical direction. +/// {@endtemplate} +class Gap extends StatelessWidget { + /// {@macro gap} + const Gap({ + super.key, + required this.direction, + this.spacing = 0.0, + }); + + /// The direction of the gap. + final Axis direction; + + /// The spacing between children in the gap. + /// + /// Defaults to 0.0. + final double spacing; + + @override + Widget build(BuildContext context) { + switch (direction) { + case Axis.horizontal: + return SizedBox(width: spacing); + case Axis.vertical: + return SizedBox(height: spacing); + } + } +} diff --git a/packages/stream_chat_flutter/lib/src/misc/giphy_chip.dart b/packages/stream_chat_flutter/lib/src/misc/giphy_chip.dart new file mode 100644 index 000000000..8ecb1094c --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/misc/giphy_chip.dart @@ -0,0 +1,40 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/misc/stream_svg_icon.dart'; +import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/utils/extensions.dart'; + +/// {@template giphy_chip} +/// Simple widget which displays a Giphy attribution chip. +/// {@endtemplate} +class GiphyChip extends StatelessWidget { + /// {@macro giphy_chip} + const GiphyChip({super.key}); + + @override + Widget build(BuildContext context) { + final colorTheme = StreamChatTheme.of(context).colorTheme; + return Container( + decoration: BoxDecoration( + color: colorTheme.overlayDark, + borderRadius: BorderRadius.circular(12), + ), + padding: const EdgeInsets.fromLTRB(4, 4, 8, 4), + child: Row( + children: [ + StreamSvgIcon.lightning( + size: 16, + color: colorTheme.barsBg, + ), + Text( + context.translations.giphyLabel.toUpperCase(), + style: TextStyle( + color: StreamChatTheme.of(context).colorTheme.barsBg, + fontWeight: FontWeight.bold, + fontSize: 10, + ), + ), + ], + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/misc/visible_footnote.dart b/packages/stream_chat_flutter/lib/src/misc/visible_footnote.dart index d37e49576..05a09f6e9 100644 --- a/packages/stream_chat_flutter/lib/src/misc/visible_footnote.dart +++ b/packages/stream_chat_flutter/lib/src/misc/visible_footnote.dart @@ -18,14 +18,15 @@ class StreamVisibleFootnote extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ StreamSvgIcon.eye( - color: chatThemeData.colorTheme.textLowEmphasis, size: 16, + color: chatThemeData.colorTheme.textLowEmphasis, ), const SizedBox(width: 8), Text( context.translations.onlyVisibleToYouText, - style: chatThemeData.textTheme.footnote - .copyWith(color: chatThemeData.colorTheme.textLowEmphasis), + style: chatThemeData.textTheme.footnote.copyWith( + color: chatThemeData.colorTheme.textLowEmphasis, + ), ), ], ); diff --git a/packages/stream_chat_flutter/lib/src/stream_chat_configuration.dart b/packages/stream_chat_flutter/lib/src/stream_chat_configuration.dart index 379c1c140..f4259fd44 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat_configuration.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat_configuration.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/indicators/loading_indicator.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// {@template streamChatConfiguration} @@ -108,12 +109,14 @@ You must have a StreamChatConfigurationProvider widget at the top of your widget class StreamChatConfigurationData { /// {@macro streamChatConfigurationData} factory StreamChatConfigurationData({ + Widget loadingIndicator = const StreamLoadingIndicator(), Widget Function(BuildContext, User)? defaultUserImage, Widget Function(BuildContext, User)? placeholderUserImage, List? reactionIcons, bool? enforceUniqueReactions, }) { return StreamChatConfigurationData._( + loadingIndicator: loadingIndicator, defaultUserImage: defaultUserImage ?? _defaultUserImage, placeholderUserImage: placeholderUserImage, reactionIcons: reactionIcons ?? _defaultReactionIcons, @@ -122,6 +125,7 @@ class StreamChatConfigurationData { } StreamChatConfigurationData._({ + required this.loadingIndicator, required this.defaultUserImage, required this.placeholderUserImage, required this.reactionIcons, @@ -131,20 +135,25 @@ class StreamChatConfigurationData { /// Copies the configuration options from one [StreamChatConfigurationData] to /// another. StreamChatConfigurationData copyWith({ + Widget? loadingIndicator, Widget Function(BuildContext, User)? defaultUserImage, Widget Function(BuildContext, User)? placeholderUserImage, List? reactionIcons, bool? enforceUniqueReactions, }) { return StreamChatConfigurationData( + reactionIcons: reactionIcons ?? this.reactionIcons, defaultUserImage: defaultUserImage ?? this.defaultUserImage, placeholderUserImage: placeholderUserImage ?? this.placeholderUserImage, - reactionIcons: reactionIcons ?? this.reactionIcons, + loadingIndicator: loadingIndicator ?? this.loadingIndicator, enforceUniqueReactions: enforceUniqueReactions ?? this.enforceUniqueReactions, ); } + /// The widget that will be shown to indicate loading. + final Widget loadingIndicator; + /// The widget that will be built when the user image is unavailable. final Widget Function(BuildContext, User) defaultUserImage; diff --git a/packages/stream_chat_flutter/lib/src/theme/color_theme.dart b/packages/stream_chat_flutter/lib/src/theme/color_theme.dart index 1d98b5aaa..010d8777c 100644 --- a/packages/stream_chat_flutter/lib/src/theme/color_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/color_theme.dart @@ -11,7 +11,7 @@ class StreamColorTheme { this.disabled = const Color(0xffdbdbdb), this.borders = const Color(0xffecebeb), this.inputBg = const Color(0xfff2f2f2), - this.appBg = const Color(0xfffcfcfc), + this.appBg = const Color(0xfff7f7f8), this.barsBg = const Color(0xffffffff), this.linkBg = const Color(0xffe9f2ff), this.accentPrimary = const Color(0xff005FFF), @@ -63,8 +63,8 @@ class StreamColorTheme { this.disabled = const Color(0xff2d2f2f), this.borders = const Color(0xff1c1e22), this.inputBg = const Color(0xff13151b), - this.appBg = const Color(0xff070A0D), - this.barsBg = const Color(0xff101418), + this.appBg = const Color(0xff000000), + this.barsBg = const Color(0xff121416), this.linkBg = const Color(0xff00193D), this.accentPrimary = const Color(0xff337eff), this.accentError = const Color(0xffFF3742), diff --git a/packages/stream_chat_flutter/lib/src/utils/extensions.dart b/packages/stream_chat_flutter/lib/src/utils/extensions.dart index 06b02aae1..e83583064 100644 --- a/packages/stream_chat_flutter/lib/src/utils/extensions.dart +++ b/packages/stream_chat_flutter/lib/src/utils/extensions.dart @@ -475,3 +475,16 @@ extension StreamSvgIconX on StreamSvgIcon { return StreamIconThemeSvgIcon.fromStreamSvgIcon(this); } } + +/// Useful extensions on [BoxConstraints]. +extension ConstraintsX on BoxConstraints { + /// Returns new box constraints that tightens the max width and max height + /// to the given [size]. + BoxConstraints tightenMaxSize(Size? size) { + if (size == null) return this; + return copyWith( + maxWidth: clampDouble(size.width, minWidth, maxWidth), + maxHeight: clampDouble(size.height, minHeight, maxHeight), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/utils/helpers.dart b/packages/stream_chat_flutter/lib/src/utils/helpers.dart index 950318e9c..f471f1a4d 100644 --- a/packages/stream_chat_flutter/lib/src/utils/helpers.dart +++ b/packages/stream_chat_flutter/lib/src/utils/helpers.dart @@ -330,7 +330,7 @@ String fileSize(dynamic size, [int round = 2]) { } /// -StreamSvgIcon getFileTypeImage(String? mimeType) { +StreamSvgIcon getFileTypeImage([String? mimeType]) { final subtype = mimeType?.split('/').last; switch (subtype) { case '7z': @@ -378,14 +378,14 @@ class WrapAttachmentWidget extends StatelessWidget { const WrapAttachmentWidget({ super.key, required this.attachmentWidget, - required this.attachmentShape, + this.attachmentShape, }); /// The widget to wrap final Widget attachmentWidget; /// The shape of the wrapper - final ShapeBorder attachmentShape; + final ShapeBorder? attachmentShape; @override Widget build(BuildContext context) { @@ -434,22 +434,6 @@ int levenshtein(String s, String t, {bool caseSensitive = true}) { return v1[t.length]; } -/// An easy way to handle attachment related operations on a message -extension AttachmentPackagesX on Message { - /// This extension will return a List of type [StreamAttachmentPackage] from - /// the existing attachments of the message - List getAttachmentPackageList() { - final _attachmentPackages = List.generate( - attachments.length, - (index) => StreamAttachmentPackage( - attachment: attachments[index], - message: this, - ), - ); - return _attachmentPackages; - } -} - /// PortalLabel that refers to [StreamMessageListView] const kPortalMessageListViewLabel = _PortalMessageListViewLabel(); diff --git a/packages/stream_chat_flutter/lib/src/utils/typedefs.dart b/packages/stream_chat_flutter/lib/src/utils/typedefs.dart index a05515447..2a504b2d4 100644 --- a/packages/stream_chat_flutter/lib/src/utils/typedefs.dart +++ b/packages/stream_chat_flutter/lib/src/utils/typedefs.dart @@ -193,15 +193,6 @@ typedef QuotedMessageAttachmentThumbnailBuilder = Widget Function( Attachment, ); -/// {@template onMessageWidgetAttachmentTap} -/// The action to perform when an attachment in an [StreamMessageWidget] -/// is tapped or clicked. -/// {@endtemplate} -typedef OnMessageWidgetAttachmentTap = void Function( - Message message, - Attachment attachment, -); - /// {@template attachmentBuilder} /// A widget builder for representing attachments. /// {@endtemplate} diff --git a/packages/stream_chat_flutter/lib/src/video/video_service.dart b/packages/stream_chat_flutter/lib/src/video/video_service.dart index 7ba8e5418..44d6643ca 100644 --- a/packages/stream_chat_flutter/lib/src/video/video_service.dart +++ b/packages/stream_chat_flutter/lib/src/video/video_service.dart @@ -33,6 +33,7 @@ class _IVideoService { /// PNG format. Future generateVideoThumbnail({ String? video, + Map? headers, ImageFormat imageFormat = ImageFormat.PNG, int maxHeight = 0, int maxWidth = 0, @@ -63,6 +64,7 @@ class _IVideoService { } else if (isMobileDevice) { return VideoThumbnail.thumbnailData( video: video, + headers: headers, imageFormat: imageFormat, maxHeight: maxHeight, maxWidth: maxWidth, diff --git a/packages/stream_chat_flutter/lib/src/video/video_thumbnail_image.dart b/packages/stream_chat_flutter/lib/src/video/video_thumbnail_image.dart index 4080c2dfe..11ff945e0 100644 --- a/packages/stream_chat_flutter/lib/src/video/video_thumbnail_image.dart +++ b/packages/stream_chat_flutter/lib/src/video/video_thumbnail_image.dart @@ -1,162 +1,147 @@ -import 'dart:typed_data'; +import 'dart:ui' as ui; -import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/src/video/video_service.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:video_thumbnail/video_thumbnail.dart'; +import 'package:video_thumbnail/video_thumbnail.dart' show ImageFormat; -/// {@template streamVideoThumbnailImage} -/// Displays a video thumbnail for video attachments. +/// {@template video_thumbnail_image} +/// A custom [ImageProvider] class for loading video thumbnails as images in +/// Flutter. /// -/// [thumbUrl] is used if provided. +/// Use this class to load a video thumbnail as an image. It takes a video URL +/// or path and generates a thumbnail image from the video. The generated +/// thumbnail image can be used with the [Image] widget. /// -/// Else [video] (path to local or remote video) is used to generate -/// a thumbnail from the video asset. +/// {@tool snippet} +/// Load a video thumbnail from a URL: /// -/// WARNING! a local path does not work on web. +/// ```dart +/// Image( +/// image: StreamVideoThumbnailImage( +/// video: 'https://example.com/video.mp4', +/// maxHeight: 200, +/// maxWidth: 200, +/// ), +/// ) +/// ``` +/// {@end-tool} /// -/// If both [thumbUrl] and [video] are null, or if a thumbnail can't be -/// generated, a stock default image will be used. +/// {@tool snippet} +/// Load a video thumbnail from a local file path: +/// +/// ```dart +/// Image( +/// image: StreamVideoThumbnailImage( +/// video: '/path/to/video.mp4', +/// maxHeight: 200, +/// maxWidth: 200, +/// ), +/// ) +/// ``` +/// {@end-tool} /// {@endtemplate} -class StreamVideoThumbnailImage extends StatefulWidget { - /// {@macro streamVideoThumbnailImage} +class StreamVideoThumbnailImage + extends ImageProvider { + /// {@macro video_thumbnail_image} const StreamVideoThumbnailImage({ - super.key, - this.video, - this.thumbUrl, - this.constraints, - this.fit = BoxFit.cover, - this.format = ImageFormat.PNG, - this.errorBuilder, - this.placeholderBuilder, + required this.video, + this.headers, + this.imageFormat = ImageFormat.PNG, + this.maxHeight = 0, + this.maxWidth = 0, + this.timeMs = 0, + this.quality = 10, + this.scale = 1.0, }); - /// Video path or url - final String? video; + /// The URL or path of the video from which to generate the thumbnail. + final String video; - /// Video thumbnail url - final String? thumbUrl; + /// Additional headers to include in the HTTP request when fetching the video. + final Map? headers; - /// Contraints of attachments - final BoxConstraints? constraints; + /// The format of the generated thumbnail image. + final ImageFormat imageFormat; - /// Fit of image - final BoxFit? fit; + /// The maximum height of the generated thumbnail image. + final int maxHeight; - /// Image format - final ImageFormat format; + /// The maximum width of the generated thumbnail image. + final int maxWidth; - /// A builder for building a custom error widget when the thumbnail - /// creation fails - final Widget Function(BuildContext, Object?)? errorBuilder; + /// The timestamp in milliseconds at which to generate the thumbnail. + final int timeMs; - /// A builder for building custom thumbnail loading UI - final WidgetBuilder? placeholderBuilder; + /// The quality of the generated thumbnail image. + final int quality; - @override - _StreamVideoThumbnailImageState createState() => - _StreamVideoThumbnailImageState(); -} + /// The scale to place in the [ImageInfo] object of the image. + final double scale; -class _StreamVideoThumbnailImageState extends State { - late Future thumbnailFuture; - late StreamChatThemeData _streamChatTheme; - - void _generateThumbnail() { - // Only generate thumbnail if the thumbnail url is not provided. - if (widget.thumbUrl == null) { - thumbnailFuture = StreamVideoService.generateVideoThumbnail( - video: widget.video, - imageFormat: widget.format, - ); - } + @override + Future obtainKey( + ImageConfiguration configuration, + ) { + return SynchronousFuture(this); } @override - void initState() { - super.initState(); - _generateThumbnail(); + @Deprecated('Will get replaced by loadImage in the next major version.') + ImageStreamCompleter loadBuffer( + StreamVideoThumbnailImage key, + DecoderBufferCallback decode, + ) { + return MultiFrameImageStreamCompleter( + codec: _loadAsync(key, decode), + scale: key.scale, + debugLabel: key.video, + informationCollector: () => [ + DiagnosticsProperty('Image provider', this), + DiagnosticsProperty('Image key', key), + ], + ); } - @override - void didChangeDependencies() { - super.didChangeDependencies(); - _streamChatTheme = StreamChatTheme.of(context); + @Deprecated('Will get replaced by loadImage in the next major version.') + Future _loadAsync( + StreamVideoThumbnailImage key, + DecoderBufferCallback decode, + ) async { + assert(key == this, '$key is not $this'); + + final bytes = await StreamVideoService.generateVideoThumbnail( + video: key.video, + headers: key.headers, + imageFormat: key.imageFormat, + maxHeight: key.maxHeight, + maxWidth: key.maxWidth, + timeMs: key.timeMs, + quality: key.quality, + ); + + if (bytes == null || bytes.lengthInBytes == 0) { + throw Exception('VideoThumbnailImage is an empty file: ${key.video}'); + } + + final buffer = await ui.ImmutableBuffer.fromUint8List(bytes); + return decode(buffer); } @override - void didUpdateWidget(covariant StreamVideoThumbnailImage oldWidget) { - if (oldWidget.video != widget.video || oldWidget.format != widget.format) { - _generateThumbnail(); + bool operator ==(Object other) { + if (other.runtimeType != runtimeType) { + return false; } - super.didUpdateWidget(oldWidget); + return other is StreamVideoThumbnailImage && + other.video == video && + other.scale == scale; } @override - Widget build(BuildContext context) { - final placeHolderWidget = widget.placeholderBuilder?.call(context) ?? - Shimmer.fromColors( - baseColor: _streamChatTheme.colorTheme.disabled, - highlightColor: _streamChatTheme.colorTheme.inputBg, - child: Image.asset( - 'images/placeholder.png', - fit: BoxFit.cover, - height: widget.constraints?.maxHeight, - width: widget.constraints?.maxWidth, - package: 'stream_chat_flutter', - ), - ); - - final errorWidget = widget.errorBuilder?.call(context, null) ?? - AttachmentError(constraints: widget.constraints); - - final thumbUrl = widget.thumbUrl; - if (thumbUrl != null) { - return CachedNetworkImage( - imageUrl: thumbUrl, - fit: widget.fit, - height: widget.constraints?.maxHeight, - width: widget.constraints?.maxWidth, - placeholder: (context, __) => placeHolderWidget, - errorWidget: (context, url, error) => errorWidget, - ); - } + int get hashCode => Object.hash(video, scale); - return ConstrainedBox( - constraints: widget.constraints ?? const BoxConstraints.expand(), - child: FutureBuilder( - future: thumbnailFuture, - builder: (context, snapshot) => AnimatedSwitcher( - duration: const Duration(milliseconds: 350), - child: Builder( - key: ValueKey>(snapshot), - builder: (_) { - if (snapshot.hasError) return errorWidget; - - if (!snapshot.hasData) { - return SizedBox( - height: double.maxFinite, - width: double.maxFinite, - child: placeHolderWidget, - ); - } - - return SizedBox( - height: double.maxFinite, - width: double.maxFinite, - child: Image.memory( - snapshot.data!, - fit: widget.fit, - height: widget.constraints?.maxHeight ?? double.infinity, - width: widget.constraints?.maxWidth ?? double.infinity, - ), - ); - }, - ), - ), - ), - ); - } + @override + String toString() => + '${objectRuntimeType(this, 'StreamVideoThumbnailImage')}($video, scale: $scale)'; } diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 875f79f78..3b793463d 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -9,7 +9,7 @@ export 'src/attachment/attachment.dart'; export 'src/attachment/attachment_title.dart'; export 'src/attachment/handler/stream_attachment_handler.dart'; export 'src/attachment/image_attachment.dart'; -export 'src/attachment/image_group.dart'; +export 'src/attachment/gallery_attachment.dart'; export 'src/attachment/stream_attachment_package.dart'; export 'src/attachment/url_attachment.dart'; export 'src/attachment/video_attachment.dart'; @@ -96,4 +96,5 @@ export 'src/utils/device_segmentation.dart'; export 'src/utils/extensions.dart'; export 'src/utils/helpers.dart'; export 'src/utils/typedefs.dart'; +// TODO: Remove this in favor of StreamVideoAttachmentThumbnail. export 'src/video/video_thumbnail_image.dart'; diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index 5aaa9f859..90b378977 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -29,6 +29,7 @@ dependencies: http_parser: ^4.0.2 image_gallery_saver: ^2.0.3 image_picker: ^1.0.1 + image_size_getter: ^2.1.2 jiffy: ^6.2.1 lottie: ^2.4.0 meta: ^1.9.1 diff --git a/packages/stream_chat_flutter/test/src/attachment/file_attachment_test.dart b/packages/stream_chat_flutter/test/src/attachment/file_attachment_test.dart index 080cf6f5d..39aae1d01 100644 --- a/packages/stream_chat_flutter/test/src/attachment/file_attachment_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment/file_attachment_test.dart @@ -30,7 +30,7 @@ void main() { 300, )), message: Message(), - attachment: Attachment( + file: Attachment( type: 'file', title: 'example.pdf', extraData: const { diff --git a/packages/stream_chat_flutter/test/src/attachment/giphy_attachment_test.dart b/packages/stream_chat_flutter/test/src/attachment/giphy_attachment_test.dart index 0399f1e87..2203de7c1 100644 --- a/packages/stream_chat_flutter/test/src/attachment/giphy_attachment_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment/giphy_attachment_test.dart @@ -30,7 +30,7 @@ void main() { 300, )), message: Message(), - attachment: Attachment( + file: Attachment( type: 'giphy', title: 'example.gif', imageUrl: diff --git a/packages/stream_chat_flutter/test/src/attachment/image_attachment_test.dart b/packages/stream_chat_flutter/test/src/attachment/image_attachment_test.dart index b90f28a43..37a5c56ff 100644 --- a/packages/stream_chat_flutter/test/src/attachment/image_attachment_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment/image_attachment_test.dart @@ -26,13 +26,12 @@ void main() { channel: channel, child: SizedBox( child: StreamImageAttachment( - messageTheme: streamTheme.ownMessageTheme, constraints: BoxConstraints.tight(const Size( 300, 300, )), message: Message(), - attachment: Attachment( + file: Attachment( type: 'image', title: 'example.png', imageUrl: diff --git a/packages/stream_chat_flutter/test/src/attachment/image_group_test.dart b/packages/stream_chat_flutter/test/src/attachment/image_group_test.dart index 43fea9e7e..c8c8d264c 100644 --- a/packages/stream_chat_flutter/test/src/attachment/image_group_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment/image_group_test.dart @@ -25,14 +25,13 @@ void main() { child: StreamChannel( channel: channel, child: SizedBox( - child: StreamImageGroup( - messageTheme: streamTheme.ownMessageTheme, + child: StreamGalleryAttachment( constraints: BoxConstraints.tight(const Size( 300, 300, )), message: Message(), - images: [ + attachments: [ Attachment( type: 'image', title: 'example.png', From e8de28854b3e07ed2d45da9306675034d1d85f3f Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 27 Jul 2023 02:04:22 +0530 Subject: [PATCH 02/11] feat: more implementation. Signed-off-by: xsahil03x --- .../stream_chat/lib/src/client/channel.dart | 2 +- .../lib/src/core/models/attachment.dart | 31 +- .../lib/src/core/models/attachment_file.dart | 6 +- .../lib/src/core/util/extension.dart | 4 +- .../test/src/core/util/extension_test.dart | 6 +- .../attachment/attachment_widget_catalog.dart | 4 +- .../builder/attachment_widget_builder.dart | 30 +- .../builder/gallery_attachment_builder.dart | 38 +-- .../builder/image_attachment_builder.dart | 1 + .../builder/mixed_attachment_builder.dart | 62 ++-- .../lib/src/attachment/file_attachment.dart | 12 +- .../src/attachment/gallery_attachment.dart | 10 + .../lib/src/attachment/giphy_attachment.dart | 2 +- .../lib/src/attachment/handler/common.dart | 6 +- .../thumbnail/file_attachment_thumbnail.dart | 8 +- .../thumbnail/giphy_attachment_thumbnail.dart | 3 + .../thumbnail/image_attachment_thumbnail.dart | 40 +-- .../thumbnail/media_attachment_thumbnail.dart | 131 ++++++++ .../attachment/thumbnail/thumbnail_error.dart | 16 +- .../thumbnail/video_attachment_thumbnail.dart | 3 + .../lib/src/attachment/url_attachment.dart | 67 ++-- .../attachment_actions_modal.dart | 2 +- .../channel/stream_message_preview_text.dart | 6 +- .../fullscreen_media/full_screen_media.dart | 48 +-- .../full_screen_media_desktop.dart | 10 +- .../lib/src/gallery/gallery_footer.dart | 4 +- .../message_actions_modal.dart | 212 ++++++------- .../options/stream_gallery_picker.dart | 2 +- .../stream_attachment_picker.dart | 8 +- .../message_input/quoted_message_widget.dart | 296 +++++++----------- .../message_input/stream_message_input.dart | 28 +- .../stream_message_input_attachment_list.dart | 155 ++++----- .../message_list_view/message_list_view.dart | 128 +++++--- .../lib/src/message_widget/message_card.dart | 5 + .../src/message_widget/message_widget.dart | 30 +- .../message_widget_content.dart | 5 + .../src/message_widget/parse_attachments.dart | 6 + .../reactions/message_reactions_modal.dart | 74 ++--- .../lib/src/message_widget/text_bubble.dart | 2 +- .../stream_channel_list_tile.dart | 3 +- .../lib/src/theme/stream_chat_theme.dart | 2 + .../lib/src/utils/extensions.dart | 52 ++- .../lib/src/utils/typedefs.dart | 8 + .../lib/src/video/video_thumbnail_image.dart | 6 +- .../lib/stream_chat_flutter.dart | 2 +- ...test.dart => gallery_attachment_test.dart} | 53 ++-- .../src/attachment/giphy_attachment_test.dart | 2 +- .../src/attachment/image_attachment_test.dart | 2 +- .../src/attachment/url_attachment_test.dart | 1 + .../test/src/goldens/attachment_button_0.png | Bin 24553 -> 24543 bytes .../src/goldens/attachment_modal_sheet_0.png | Bin 49362 -> 49357 bytes .../test/src/goldens/clear_input_item_0.png | Bin 24076 -> 24062 bytes .../test/src/goldens/command_button_0.png | Bin 23312 -> 23302 bytes .../src/goldens/confirmation_dialog_0.png | Bin 55230 -> 56197 bytes .../test/src/goldens/countdown_button_0.png | Bin 24794 -> 24785 bytes .../src/goldens/delete_message_dialog_0.png | Bin 68100 -> 69258 bytes .../src/goldens/deleted_message_custom.png | Bin 3090 -> 3079 bytes .../test/src/goldens/dm_checkbox_0.png | Bin 33581 -> 33569 bytes .../test/src/goldens/dm_checkbox_1.png | Bin 33436 -> 33425 bytes .../test/src/goldens/dm_checkbox_2.png | Bin 33252 -> 33242 bytes .../test/src/goldens/download_menu_item_0.png | Bin 27778 -> 27768 bytes .../test/src/goldens/edit_message_sheet_0.png | Bin 40338 -> 40324 bytes .../test/src/goldens/error_alert_sheet_0.png | Bin 42263 -> 42252 bytes .../test/src/goldens/gallery_footer_0.png | Bin 26296 -> 26255 bytes .../test/src/goldens/gallery_header_0.png | Bin 36343 -> 37165 bytes .../test/src/goldens/gradient_avatar_0.png | Bin 58698 -> 58692 bytes .../test/src/goldens/gradient_avatar_1.png | Bin 70426 -> 70419 bytes .../test/src/goldens/gradient_avatar_2.png | Bin 58685 -> 58676 bytes .../test/src/goldens/gradient_avatar_3.png | Bin 58956 -> 58953 bytes .../test/src/goldens/group_avatar_0.png | Bin 60051 -> 60037 bytes .../test/src/goldens/message_dialog_0.png | Bin 43765 -> 44372 bytes .../test/src/goldens/message_dialog_1.png | Bin 48105 -> 48711 bytes .../test/src/goldens/message_dialog_2.png | Bin 38907 -> 39243 bytes .../test/src/goldens/reaction_bubble_2.png | Bin 2783 -> 2782 bytes .../src/goldens/reaction_bubble_3_dark.png | Bin 1793 -> 1598 bytes .../src/goldens/reaction_bubble_3_light.png | Bin 2042 -> 2046 bytes .../src/goldens/reaction_bubble_like_dark.png | Bin 1406 -> 1218 bytes .../goldens/reaction_bubble_like_light.png | Bin 1230 -> 1303 bytes .../test/src/goldens/sending_indicator_0.png | Bin 22883 -> 22874 bytes .../test/src/goldens/sending_indicator_1.png | Bin 24082 -> 22485 bytes .../test/src/goldens/sending_indicator_2.png | Bin 24082 -> 22485 bytes .../stream_chat_context_menu_item_0.png | Bin 27654 -> 27645 bytes .../goldens/upload_progress_indicator_0.png | Bin 27267 -> 27258 bytes .../goldens/upload_progress_indicator_1.png | Bin 28011 -> 28002 bytes .../goldens/upload_progress_indicator_2.png | Bin 28109 -> 28096 bytes .../test/src/goldens/user_avatar_0.png | Bin 33579 -> 33570 bytes .../test/src/goldens/user_avatar_1.png | Bin 33324 -> 33314 bytes .../src/theme/channel_header_theme_test.dart | 2 +- .../theme/channel_list_header_theme_test.dart | 2 +- .../src/theme/gallery_footer_theme_test.dart | 16 +- .../src/theme/gallery_header_theme_test.dart | 38 +-- .../src/theme/message_input_theme_test.dart | 2 +- .../theme/message_list_view_theme_test.dart | 16 +- 93 files changed, 875 insertions(+), 835 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/attachment/thumbnail/media_attachment_thumbnail.dart rename packages/stream_chat_flutter/test/src/attachment/{image_group_test.dart => gallery_attachment_test.dart} (52%) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 838f267c1..3d568c3e4 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -499,7 +499,7 @@ class Channel { ]); } - final isImage = it.type == 'image'; + final isImage = it.type == AttachmentType.image; final cancelToken = CancelToken(); Future future; if (isImage) { diff --git a/packages/stream_chat/lib/src/core/models/attachment.dart b/packages/stream_chat/lib/src/core/models/attachment.dart index b53e73b12..86d3efedf 100644 --- a/packages/stream_chat/lib/src/core/models/attachment.dart +++ b/packages/stream_chat/lib/src/core/models/attachment.dart @@ -16,6 +16,7 @@ mixin AttachmentType { static const file = 'file'; static const giphy = 'giphy'; static const video = 'video'; + static const audio = 'audio'; /// Application custom types. static const urlPreview = 'url_preview'; @@ -53,19 +54,15 @@ class Attachment extends Equatable { }) : id = id ?? const Uuid().v4(), _type = type, title = title ?? file?.name, + _uploadState = uploadState, localUri = file?.path != null ? Uri.parse(file!.path!) : null, // For backwards compatibility, // set 'file_size', 'mime_type' in [extraData]. extraData = { ...extraData, if (file?.size != null) 'file_size': file?.size, - if (file?.mimeType != null) 'mime_type': file?.mimeType?.mimeType, - } { - this.uploadState = uploadState ?? - ((assetUrl != null || imageUrl != null || thumbUrl != null) - ? const UploadState.success() - : const UploadState.preparing()); - } + if (file?.mediaType != null) 'mime_type': file?.mediaType?.mimeType, + }; /// Create a new instance from a json factory Attachment.fromJson(Map json) => @@ -82,7 +79,8 @@ class Attachment extends Equatable { factory Attachment.fromOGAttachment(OGAttachmentResponse ogAttachment) => Attachment( - type: ogAttachment.type, + // If the type is not specified, we default to urlPreview. + type: ogAttachment.type ?? AttachmentType.urlPreview, title: ogAttachment.title, titleLink: ogAttachment.titleLink, text: ogAttachment.text, @@ -98,7 +96,9 @@ class Attachment extends Equatable { ///The attachment type based on the URL resource. This can be: audio, ///image or video String? get type { - if (_type == AttachmentType.image && titleLink != null) { + // If the attachment contains titleLink but is not of type giphy, we + // consider it as a urlPreview. + if (_type != AttachmentType.giphy && titleLink != null) { return AttachmentType.urlPreview; } @@ -107,6 +107,9 @@ class Attachment extends Equatable { final String? _type; + /// The raw attachment type. + String? get rawType => _type; + ///The link to which the attachment message points to. final String? titleLink; @@ -159,7 +162,15 @@ class Attachment extends Equatable { final AttachmentFile? file; /// The current upload state of the attachment - late final UploadState uploadState; + UploadState get uploadState { + if (_uploadState case final state?) return state; + + return ((assetUrl != null || imageUrl != null || thumbUrl != null) + ? const UploadState.success() + : const UploadState.preparing()); + } + + final UploadState? _uploadState; /// Map of custom channel extraData final Map extraData; diff --git a/packages/stream_chat/lib/src/core/models/attachment_file.dart b/packages/stream_chat/lib/src/core/models/attachment_file.dart index ee6690ca9..261d7db37 100644 --- a/packages/stream_chat/lib/src/core/models/attachment_file.dart +++ b/packages/stream_chat/lib/src/core/models/attachment_file.dart @@ -62,7 +62,7 @@ class AttachmentFile { String? get extension => name?.split('.').last; /// The mime type of this file. - MediaType? get mimeType => name?.mimeType; + MediaType? get mediaType => name?.mediaType; /// Serialize to json Map toJson() => _$AttachmentFileToJson(this); @@ -75,13 +75,13 @@ class AttachmentFile { multiPartFile = MultipartFile.fromBytes( bytes!, filename: name, - contentType: mimeType, + contentType: mediaType, ); } else { multiPartFile = await MultipartFile.fromFile( path!, filename: name, - contentType: mimeType, + contentType: mediaType, ); } return multiPartFile; diff --git a/packages/stream_chat/lib/src/core/util/extension.dart b/packages/stream_chat/lib/src/core/util/extension.dart index a28dc12b2..132413a6f 100644 --- a/packages/stream_chat/lib/src/core/util/extension.dart +++ b/packages/stream_chat/lib/src/core/util/extension.dart @@ -20,8 +20,8 @@ extension MapX on Map { /// Useful extension functions for [String] extension StringX on String { - /// returns the mime type from the passed file name. - MediaType? get mimeType { + /// returns the media type from the passed file name. + MediaType? get mediaType { if (toLowerCase().endsWith('heic')) { return MediaType.parse('image/heic'); } else { diff --git a/packages/stream_chat/test/src/core/util/extension_test.dart b/packages/stream_chat/test/src/core/util/extension_test.dart index ae3c08d87..ad624c056 100644 --- a/packages/stream_chat/test/src/core/util/extension_test.dart +++ b/packages/stream_chat/test/src/core/util/extension_test.dart @@ -25,13 +25,13 @@ void main() { group('mimeType', () { test('should return null if `String` is not a filename', () { const fileName = 'not-a-file-name'; - final mimeType = fileName.mimeType; + final mimeType = fileName.mediaType; expect(mimeType, isNull); }); test('should return mimeType if string is a filename', () { const fileName = 'dummyFileName.jpeg'; - final mimeType = fileName.mimeType; + final mimeType = fileName.mediaType; expect(mimeType, isNotNull); expect(mimeType!.type, 'image'); expect(mimeType.subtype, 'jpeg'); @@ -39,7 +39,7 @@ void main() { test('should return `image/heic` if ends with `heic`', () { const fileName = 'dummyFileName.heic'; - final mimeType = fileName.mimeType; + final mimeType = fileName.mediaType; expect(mimeType, isNotNull); expect(mimeType!.type, 'image'); expect(mimeType.subtype, 'heic'); diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget_catalog.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget_catalog.dart index 976fa32fb..5e51c7333 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget_catalog.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget_catalog.dart @@ -57,6 +57,8 @@ class AttachmentWidgetCatalog { extension on List { /// Groups the attachments by their type. Map> get grouped { - return groupBy(this, (attachment) => attachment.type!); + return groupBy(where((it) { + return it.type != null; + }), (attachment) => attachment.type!); } } diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart index 0abf47506..f8ef052fc 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart @@ -1,20 +1,13 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/attachment/file_attachment.dart'; +import 'package:stream_chat_flutter/src/attachment/attachment.dart'; import 'package:stream_chat_flutter/src/attachment/gallery_attachment.dart'; -import 'package:stream_chat_flutter/src/attachment/giphy_attachment.dart'; -import 'package:stream_chat_flutter/src/attachment/image_attachment.dart'; -import 'package:stream_chat_flutter/src/attachment/thumbnail/giphy_attachment_thumbnail.dart'; -import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; -import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/media_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/attachment/url_attachment.dart'; -import 'package:stream_chat_flutter/src/attachment/video_attachment.dart'; import 'package:stream_chat_flutter/src/stream_chat.dart'; import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/utils/utils.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; -import '../attachment_upload_state_builder.dart'; - part 'fallback_attachment_builder.dart'; part 'file_attachment_builder.dart'; @@ -82,41 +75,58 @@ abstract class StreamAttachmentWidgetBuilder { /// widget. static List defaultBuilders({ required Message message, + ShapeBorder? shape, + EdgeInsetsGeometry padding = const EdgeInsets.all(4), StreamAttachmentWidgetTapCallback? onAttachmentTap, }) { return [ - // Handles a mix of image, gif, video, and file attachments. + // Handles a mix of image, gif, video, url and file attachments. MixedAttachmentBuilder( + padding: padding, onAttachmentTap: onAttachmentTap, ), // Handles a mix of image, gif, and video attachments. GalleryAttachmentBuilder( + shape: shape, + padding: padding, + runSpacing: padding.vertical / 2, + spacing: padding.horizontal / 2, onAttachmentTap: onAttachmentTap, ), // Handles file attachments. FileAttachmentBuilder( + shape: shape, + padding: padding, onAttachmentTap: onAttachmentTap, ), // Handles giphy attachments. GiphyAttachmentBuilder( + shape: shape, + padding: padding, onAttachmentTap: onAttachmentTap, ), // Handles image attachments. ImageAttachmentBuilder( + shape: shape, + padding: padding, onAttachmentTap: onAttachmentTap, ), // Handles video attachments. VideoAttachmentBuilder( + shape: shape, + padding: padding, onAttachmentTap: onAttachmentTap, ), // We don't handle URL attachments if the message is a reply. if (message.quotedMessage == null) UrlAttachmentBuilder( + shape: shape, + padding: padding, onAttachmentTap: onAttachmentTap, ), diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/gallery_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/gallery_attachment_builder.dart index 9b86749d4..cd2bf22e9 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/builder/gallery_attachment_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/gallery_attachment_builder.dart @@ -93,16 +93,6 @@ class GalleryAttachmentBuilder extends StreamAttachmentWidgetBuilder { attachments: galleryAttachments, itemBuilder: (context, index) { final attachment = galleryAttachments[index]; - final attachmentType = attachment.type; - - final isImage = attachmentType == AttachmentType.image; - final isVideo = attachmentType == AttachmentType.video; - final isGiphy = attachmentType == AttachmentType.giphy; - - assert( - isImage || isVideo || isGiphy, - 'Attachment type should be image, video or giphy', - ); VoidCallback? onTap; if (onAttachmentTap != null) { @@ -112,29 +102,13 @@ class GalleryAttachmentBuilder extends StreamAttachmentWidgetBuilder { return InkWell( onTap: onTap, child: Stack( - alignment: Alignment.center, children: [ - if (isImage) - StreamImageAttachmentThumbnail( - image: attachment, - width: double.infinity, - height: double.infinity, - fit: BoxFit.cover, - ) - else if (isVideo) - StreamVideoAttachmentThumbnail( - video: attachment, - width: double.infinity, - height: double.infinity, - fit: BoxFit.cover, - ) - else if (isGiphy) - StreamGiphyAttachmentThumbnail( - giphy: attachment, - width: double.infinity, - height: double.infinity, - fit: BoxFit.cover, - ), + StreamMediaAttachmentThumbnail( + media: attachment, + width: constraints.maxWidth, + height: constraints.maxHeight, + fit: BoxFit.cover, + ), Padding( padding: const EdgeInsets.all(8), child: StreamAttachmentUploadStateBuilder( diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/image_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/image_attachment_builder.dart index 145649db7..14aa7c687 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/builder/image_attachment_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/image_attachment_builder.dart @@ -62,6 +62,7 @@ class ImageAttachmentBuilder extends StreamAttachmentWidgetBuilder { child: InkWell( onTap: onTap, child: StreamImageAttachment( + shape: shape, message: message, constraints: constraints, image: image, diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/mixed_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/mixed_attachment_builder.dart index b0eb7844b..3d0eb466b 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/builder/mixed_attachment_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/mixed_attachment_builder.dart @@ -3,67 +3,71 @@ part of 'attachment_widget_builder.dart'; /// {@template mixedAttachmentBuilder} /// A widget builder for Mixed attachment type. /// -/// This builder is used when a message contains both image/video/giphy and file -/// attachments. +/// This builder is used when a message contains a mix of media type and file +/// or url preview attachments. /// -/// This builder will render first image/video/giphy attachment and then render -/// the file attachments. +/// This builder will render first the url preview or file attachment and then +/// the media attachments. /// {@endtemplate} class MixedAttachmentBuilder extends StreamAttachmentWidgetBuilder { /// {@macro mixedAttachmentBuilder} MixedAttachmentBuilder({ - this.shape, this.padding = const EdgeInsets.all(4), - this.onAttachmentTap, + StreamAttachmentWidgetTapCallback? onAttachmentTap, }) : _imageAttachmentBuilder = ImageAttachmentBuilder( + padding: EdgeInsets.zero, onAttachmentTap: onAttachmentTap, - padding: EdgeInsets.symmetric(horizontal: padding.horizontal), ), _videoAttachmentBuilder = VideoAttachmentBuilder( + padding: EdgeInsets.zero, onAttachmentTap: onAttachmentTap, - padding: EdgeInsets.symmetric(horizontal: padding.horizontal), ), _giphyAttachmentBuilder = GiphyAttachmentBuilder( + padding: EdgeInsets.zero, onAttachmentTap: onAttachmentTap, - padding: EdgeInsets.symmetric(horizontal: padding.horizontal), ), _galleryAttachmentBuilder = GalleryAttachmentBuilder( + padding: EdgeInsets.zero, onAttachmentTap: onAttachmentTap, - padding: EdgeInsets.symmetric(horizontal: padding.horizontal), ), _fileAttachmentBuilder = FileAttachmentBuilder( + padding: EdgeInsets.zero, + onAttachmentTap: onAttachmentTap, + ), + _urlAttachmentBuilder = UrlAttachmentBuilder( + padding: EdgeInsets.zero, onAttachmentTap: onAttachmentTap, - padding: EdgeInsets.symmetric(horizontal: padding.horizontal), ); - /// The shape of the gallery attachment. - final ShapeBorder? shape; - - /// The padding to apply to the gallery attachment widget. + /// The padding to apply to the mixed attachment widget. final EdgeInsetsGeometry padding; - /// The callback to call when the attachment is tapped. - final StreamAttachmentWidgetTapCallback? onAttachmentTap; - late final StreamAttachmentWidgetBuilder _imageAttachmentBuilder; late final StreamAttachmentWidgetBuilder _videoAttachmentBuilder; late final StreamAttachmentWidgetBuilder _giphyAttachmentBuilder; late final StreamAttachmentWidgetBuilder _galleryAttachmentBuilder; late final StreamAttachmentWidgetBuilder _fileAttachmentBuilder; + late final StreamAttachmentWidgetBuilder _urlAttachmentBuilder; @override bool canHandle( Message message, Map> attachments, ) { - final containsImage = attachments.keys.contains(AttachmentType.image); - final containsVideo = attachments.keys.contains(AttachmentType.video); - final containsGiphy = attachments.keys.contains(AttachmentType.giphy); - final containsFile = attachments.keys.contains(AttachmentType.file); + final types = attachments.keys; + + final containsImage = types.contains(AttachmentType.image); + final containsVideo = types.contains(AttachmentType.video); + final containsGiphy = types.contains(AttachmentType.giphy); + final containsFile = types.contains(AttachmentType.file); + final containsUrlPreview = types.contains(AttachmentType.urlPreview); final containsMedia = containsImage || containsVideo || containsGiphy; - return containsMedia && containsFile; + return containsMedia && containsFile || + containsMedia && containsUrlPreview || + containsFile && containsUrlPreview || + containsMedia && containsFile && containsUrlPreview; } @override @@ -74,6 +78,7 @@ class MixedAttachmentBuilder extends StreamAttachmentWidgetBuilder { ) { assert(debugAssertCanHandle(message, attachments), ''); + final urls = attachments[AttachmentType.urlPreview]; final files = attachments[AttachmentType.file]; final images = attachments[AttachmentType.image]; final videos = attachments[AttachmentType.video]; @@ -86,11 +91,14 @@ class MixedAttachmentBuilder extends StreamAttachmentWidgetBuilder { child: Column( mainAxisSize: MainAxisSize.min, children: [ + if (urls != null) + _urlAttachmentBuilder.build(context, message, { + AttachmentType.urlPreview: urls, + }), if (files != null) - for (final file in files) - _fileAttachmentBuilder.build(context, message, { - AttachmentType.file: [file], - }), + _fileAttachmentBuilder.build(context, message, { + AttachmentType.file: files, + }), if (shouldBuildGallery) _galleryAttachmentBuilder.build(context, message, { if (images != null) AttachmentType.image: images, diff --git a/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart index 964b3034a..3790b4167 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart @@ -128,19 +128,21 @@ class _FileTypeImage extends StatelessWidget { file: file, width: double.infinity, height: double.infinity, - // fit: BoxFit.cover, ); - final mimeType = file.title?.mimeType?.type; - final isImage = mimeType == 'image'; - final isVideo = mimeType == 'video'; + final mediaType = file.title?.mediaType; + final isImage = mediaType?.type == AttachmentType.image; + final isVideo = mediaType?.type == AttachmentType.video; if (isImage || isVideo) { final colorTheme = StreamChatTheme.of(context).colorTheme; child = Container( clipBehavior: Clip.hardEdge, decoration: ShapeDecoration( shape: RoundedRectangleBorder( - side: BorderSide(color: colorTheme.borders), + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, + ), borderRadius: BorderRadius.circular(8), ), ), diff --git a/packages/stream_chat_flutter/lib/src/attachment/gallery_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/gallery_attachment.dart index 76106eb31..8acb39baf 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/gallery_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/gallery_attachment.dart @@ -127,6 +127,8 @@ class StreamGalleryAttachment extends StatelessWidget { [1], [1], ], + spacing: spacing, + runSpacing: runSpacing, children: [ itemBuilder(context, 0), itemBuilder(context, 1), @@ -145,6 +147,8 @@ class StreamGalleryAttachment extends StatelessWidget { pattern: const [ [1, 1], ], + spacing: spacing, + runSpacing: runSpacing, children: [ itemBuilder(context, 0), itemBuilder(context, 1), @@ -170,6 +174,8 @@ class StreamGalleryAttachment extends StatelessWidget { pattern: [ if (isLandscape1) [2, 1] else [1, 2], ], + spacing: spacing, + runSpacing: runSpacing, children: [ itemBuilder(context, 0), itemBuilder(context, 1), @@ -204,6 +210,8 @@ class StreamGalleryAttachment extends StatelessWidget { [1], [1, 1], ], + spacing: spacing, + runSpacing: runSpacing, reverse: !isLandscape1, children: [ itemBuilder(context, 0), @@ -238,6 +246,8 @@ class StreamGalleryAttachment extends StatelessWidget { return FlexGrid( pattern: pattern, maxChildren: 4, + spacing: spacing, + runSpacing: runSpacing, children: children, overlayBuilder: (context, remaining) { return IgnorePointer( diff --git a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart index f8ba4e04e..fc995c089 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart @@ -12,7 +12,7 @@ class StreamGiphyAttachment extends StatelessWidget { super.key, required this.message, required this.giphy, - this.type = GiphyInfoType.fixedHeightDownsampled, + this.type = GiphyInfoType.original, this.shape, this.constraints = const BoxConstraints(), }); diff --git a/packages/stream_chat_flutter/lib/src/attachment/handler/common.dart b/packages/stream_chat_flutter/lib/src/attachment/handler/common.dart index 96d5e1ed5..8c58fe2dc 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/handler/common.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/handler/common.dart @@ -50,18 +50,18 @@ Future downloadAttachmentData( String? downloadUrl; String? fileName; /* ---IMAGES/GIFS--- */ - if (type == 'image') { + if (type == AttachmentType.image) { downloadUrl = attachment.imageUrl ?? attachment.assetUrl; fileName = attachment.title; fileName ??= 'attachment.${attachment.mimeType ?? 'png'}'; } /* ---GIPHY's--- */ - else if (type == 'giphy') { + else if (type == AttachmentType.giphy) { downloadUrl = attachment.thumbUrl; fileName = '${attachment.title}.gif'; } /* ---FILES AND VIDEOS--- */ - else if (type == 'file' || type == 'video') { + else if (type == AttachmentType.file || type == AttachmentType.video) { downloadUrl = attachment.assetUrl; fileName = attachment.title; } diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/file_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/file_attachment_thumbnail.dart index 996d3c4d0..89374932a 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/file_attachment_thumbnail.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/file_attachment_thumbnail.dart @@ -50,9 +50,9 @@ class StreamFileAttachmentThumbnail extends StatelessWidget { @override Widget build(BuildContext context) { - final mimeType = file.title?.mimeType?.type; + final mediaType = file.title?.mediaType; - final isImage = mimeType == 'image'; + final isImage = mediaType?.type == AttachmentType.image; if (isImage) { return StreamImageAttachmentThumbnail( image: file, @@ -62,7 +62,7 @@ class StreamFileAttachmentThumbnail extends StatelessWidget { ); } - final isVideo = mimeType == 'video'; + final isVideo = mediaType?.type == AttachmentType.video; if (isVideo) { return StreamVideoAttachmentThumbnail( video: file, @@ -73,6 +73,6 @@ class StreamFileAttachmentThumbnail extends StatelessWidget { } // Return a generic file type icon. - return getFileTypeImage(mimeType); + return getFileTypeImage(mediaType?.mimeType); } } diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/giphy_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/giphy_attachment_thumbnail.dart index 98b8e026a..6b3a5e8d6 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/giphy_attachment_thumbnail.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/giphy_attachment_thumbnail.dart @@ -50,6 +50,9 @@ class StreamGiphyAttachmentThumbnail extends StatelessWidget { return ThumbnailError( error: error, stackTrace: stackTrace, + height: double.infinity, + width: double.infinity, + fit: BoxFit.cover, ); } diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/image_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/image_attachment_thumbnail.dart index 2d04c0fae..590fe4e73 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/image_attachment_thumbnail.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/image_attachment_thumbnail.dart @@ -2,49 +2,12 @@ import 'dart:io' show File; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:image_size_getter/file_input.dart'; // For compatibility with flutter web. -import 'package:image_size_getter/image_size_getter.dart' hide Size; import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/src/attachment/thumbnail/thumbnail_error.dart'; import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/utils/utils.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; -extension AspectRatioX on Attachment { - /// Returns the size of the attachment if it is an image or giffy. - /// Otherwise, returns null. - Size? get originalSize { - // Return null if the attachment is not an image or giffy. - if (type != 'image' && type != 'giphy') return null; - - // Calculate size locally if the attachment is not uploaded yet. - final file = this.file; - if (file != null) { - ImageInput? input; - if (file.bytes != null) { - input = MemoryInput(file.bytes!); - } else if (file.path != null) { - input = FileInput(File(file.path!)); - } - - // Return null if the file does not contain enough information. - if (input == null) return null; - - final size = ImageSizeGetter.getSize(input); - if (size.needRotate) { - return Size(size.height.toDouble(), size.width.toDouble()); - } - return Size(size.width.toDouble(), size.height.toDouble()); - } - - // Otherwise, use the size provided by the server. - final width = originalWidth; - final height = originalHeight; - if (width == null || height == null) return null; - return Size(width.toDouble(), height.toDouble()); - } -} - /// {@template imageAttachmentThumbnail} /// Widget for building image attachment thumbnail. /// @@ -101,6 +64,9 @@ class StreamImageAttachmentThumbnail extends StatelessWidget { return ThumbnailError( error: error, stackTrace: stackTrace, + height: double.infinity, + width: double.infinity, + fit: BoxFit.cover, ); } diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/media_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/media_attachment_thumbnail.dart new file mode 100644 index 000000000..ab8c60c57 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/media_attachment_thumbnail.dart @@ -0,0 +1,131 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/giphy_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/thumbnail_error.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// {@template mediaAttachmentThumbnail} +/// Widget for building media attachment thumbnail. +/// +/// This widget is used when the [Attachment.type] is [AttachmentType.image], +/// [AttachmentType.video] or [AttachmentType.giphy]. +/// +/// see also: +/// * [StreamImageAttachmentThumbnail] +/// * [StreamVideoAttachmentThumbnail] +/// * [StreamGiphyAttachmentThumbnail] +/// {@endtemplate} +class StreamMediaAttachmentThumbnail extends StatelessWidget { + /// {@macro mediaAttachmentThumbnail} + const StreamMediaAttachmentThumbnail({ + super.key, + required this.media, + this.width, + this.height, + this.fit, + this.thumbnailSize, + this.thumbnailResizeType = 'clip', + this.thumbnailCropType = 'center', + this.gifInfoType = GiphyInfoType.original, + this.errorBuilder = _defaultErrorBuilder, + }); + + /// The giphy attachment to build the thumbnail for. + final Attachment media; + + /// The width of the thumbnail. + final double? width; + + /// The height of the thumbnail. + final double? height; + + /// How to inscribe the thumbnail into the space allocated during layout. + final BoxFit? fit; + + /// Builder used when the thumbnail fails to load. + final ThumbnailErrorBuilder errorBuilder; + + /// Size of the attachment image thumbnail. + /// + /// Ignored if the [Attachment.type] is not [AttachmentType.image]. + final Size? thumbnailSize; + + /// Resize type of the image attachment thumbnail. + /// + /// Defaults to [crop] + /// + /// Ignored if the [Attachment.type] is not [AttachmentType.image]. + final String /*clip|crop|scale|fill*/ thumbnailResizeType; + + /// Crop type of the image attachment thumbnail. + /// + /// Defaults to [center] + /// + /// Ignored if the [Attachment.type] is not [AttachmentType.image]. + final String /*center|top|bottom|left|right*/ thumbnailCropType; + + /// The type of giphy thumbnail to build. + /// + /// Ignored if the [Attachment.type] is not [AttachmentType.giphy]. + final GiphyInfoType gifInfoType; + + // Default error builder for image attachment thumbnail. + static Widget _defaultErrorBuilder( + BuildContext context, + Object error, + StackTrace? stackTrace, + ) { + return ThumbnailError( + error: error, + stackTrace: stackTrace, + height: double.infinity, + width: double.infinity, + fit: BoxFit.cover, + ); + } + + @override + Widget build(BuildContext context) { + final type = media.type; + if (type == AttachmentType.image) { + return StreamImageAttachmentThumbnail( + image: media, + width: width, + height: height, + fit: fit, + thumbnailSize: thumbnailSize, + thumbnailResizeType: thumbnailResizeType, + thumbnailCropType: thumbnailCropType, + errorBuilder: errorBuilder, + ); + } + + if (type == AttachmentType.giphy) { + return StreamGiphyAttachmentThumbnail( + giphy: media, + width: width, + height: height, + fit: fit, + type: gifInfoType, + errorBuilder: errorBuilder, + ); + } + + if (type == AttachmentType.video) { + return StreamVideoAttachmentThumbnail( + video: media, + width: width, + height: height, + fit: fit, + errorBuilder: errorBuilder, + ); + } + + return errorBuilder( + context, + 'Unsupported attachment type: $type', + StackTrace.current, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/thumbnail_error.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/thumbnail_error.dart index e13874032..37b288fc6 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/thumbnail_error.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/thumbnail_error.dart @@ -21,8 +21,20 @@ class ThumbnailError extends StatelessWidget { super.key, required this.error, this.stackTrace, + this.width, + this.height, + this.fit, }); + /// The width of the thumbnail. + final double? width; + + /// The height of the thumbnail. + final double? height; + + /// How to inscribe the thumbnail into the space allocated during layout. + final BoxFit? fit; + /// The error that triggered this error widget. final Object error; @@ -33,7 +45,9 @@ class ThumbnailError extends StatelessWidget { Widget build(BuildContext context) { return Image.asset( 'images/placeholder.png', - fit: BoxFit.cover, + width: width, + height: height, + fit: fit, package: 'stream_chat_flutter', ); } diff --git a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/video_attachment_thumbnail.dart b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/video_attachment_thumbnail.dart index ac4da7fa8..0be758d5c 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/thumbnail/video_attachment_thumbnail.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/thumbnail/video_attachment_thumbnail.dart @@ -46,6 +46,9 @@ class StreamVideoAttachmentThumbnail extends StatelessWidget { return ThumbnailError( error: error, stackTrace: stackTrace, + height: double.infinity, + width: double.infinity, + fit: BoxFit.cover, ); } diff --git a/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart index b47f573f0..9b44e2595 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart @@ -47,7 +47,7 @@ class StreamUrlAttachment extends StatelessWidget { color: colorTheme.borders, strokeAlign: BorderSide.strokeAlignOutside, ), - borderRadius: BorderRadius.circular(14), + borderRadius: BorderRadius.circular(8), ); final backgroundColor = messageTheme.urlAttachmentBackgroundColor; @@ -62,44 +62,43 @@ class StreamUrlAttachment extends StatelessWidget { child: Column( mainAxisSize: MainAxisSize.min, children: [ - if (urlAttachment.imageUrl != null) - Stack( - children: [ - AspectRatio( - // Default aspect ratio for Open Graph images. - // https://www.kapwing.com/resources/what-is-an-og-image-make-and-format-og-images-for-your-blog-or-webpage - aspectRatio: 1.91 / 1, - child: StreamImageAttachmentThumbnail( - image: urlAttachment, - fit: BoxFit.cover, - ), + Stack( + children: [ + AspectRatio( + // Default aspect ratio for Open Graph images. + // https://www.kapwing.com/resources/what-is-an-og-image-make-and-format-og-images-for-your-blog-or-webpage + aspectRatio: 1.91 / 1, + child: StreamImageAttachmentThumbnail( + image: urlAttachment, + fit: BoxFit.cover, ), - Positioned( - left: 0, - bottom: 0, - child: DecoratedBox( - decoration: BoxDecoration( - borderRadius: const BorderRadius.only( - topRight: Radius.circular(16), - ), - color: backgroundColor, + ), + Positioned( + left: 0, + bottom: 0, + child: DecoratedBox( + decoration: BoxDecoration( + borderRadius: const BorderRadius.only( + topRight: Radius.circular(16), + ), + color: backgroundColor, + ), + child: Padding( + padding: const EdgeInsets.only( + top: 8, + left: 8, + right: 12, + bottom: 4, ), - child: Padding( - padding: const EdgeInsets.only( - top: 8, - left: 8, - right: 12, - bottom: 4, - ), - child: Text( - hostDisplayName, - style: messageTheme.urlAttachmentHostStyle, - ), + child: Text( + hostDisplayName, + style: messageTheme.urlAttachmentHostStyle, ), ), ), - ], - ), + ), + ], + ), Padding( padding: const EdgeInsets.all(8), child: Column( diff --git a/packages/stream_chat_flutter/lib/src/attachment_actions_modal/attachment_actions_modal.dart b/packages/stream_chat_flutter/lib/src/attachment_actions_modal/attachment_actions_modal.dart index 2125c71be..aafab8659 100644 --- a/packages/stream_chat_flutter/lib/src/attachment_actions_modal/attachment_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/attachment_actions_modal/attachment_actions_modal.dart @@ -129,7 +129,7 @@ class AttachmentActionsModal extends StatelessWidget { if (showSave) _buildButton( context, - attachment.type == 'video' + attachment.type == AttachmentType.video ? context.translations.saveVideoLabel : context.translations.saveImageLabel, StreamSvgIcon.iconSave( diff --git a/packages/stream_chat_flutter/lib/src/channel/stream_message_preview_text.dart b/packages/stream_chat_flutter/lib/src/channel/stream_message_preview_text.dart index 91e65d371..e6dd6a884 100644 --- a/packages/stream_chat_flutter/lib/src/channel/stream_message_preview_text.dart +++ b/packages/stream_chat_flutter/lib/src/channel/stream_message_preview_text.dart @@ -36,11 +36,11 @@ class StreamMessagePreviewText extends StatelessWidget { final messageTextParts = [ ...messageAttachments.map((it) { - if (it.type == 'image') { + if (it.type == AttachmentType.image) { return '📷'; - } else if (it.type == 'video') { + } else if (it.type == AttachmentType.video) { return '🎬'; - } else if (it.type == 'giphy') { + } else if (it.type == AttachmentType.giphy) { return '[GIF]'; } return it == message.attachments.last diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart index 1b0d82b7f..80ee43283 100644 --- a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart @@ -7,7 +7,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; -import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/media_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/context_menu_items/download_menu_item.dart'; import 'package:stream_chat_flutter/src/fullscreen_media/full_screen_media_widget.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -272,7 +272,7 @@ class _FullScreenMediaState extends State { } } if (widget.autoplayVideos && - currentAttachment.type == 'video') { + currentAttachment.type == AttachmentType.video) { final controller = videoPackages[currentAttachment.id]!; controller._chewieController?.play(); } @@ -294,47 +294,19 @@ class _FullScreenMediaState extends State { child: ContextMenuArea( verticalPadding: 0, builder: (_) => [ - DownloadMenuItem( - attachment: attachment, - ), + DownloadMenuItem(attachment: attachment), ], child: PhotoView.customChild( - heroAttributes: PhotoViewHeroAttributes( - tag: attachment.id, - ), - // imageProvider: (imageUrl == null && - // attachment.localUri != null && - // attachment.file?.bytes != null) - // ? Image.memory(attachment.file!.bytes!).image - // : CachedNetworkImageProvider(imageUrl!), - // errorBuilder: (_, __, ___) => const AttachmentError(), - // loadingBuilder: (context, _) { - // final image = Image.asset( - // 'images/placeholder.png', - // fit: BoxFit.cover, - // package: 'stream_chat_flutter', - // ); - // final colorTheme = - // StreamChatTheme.of(context).colorTheme; - // return Shimmer.fromColors( - // baseColor: colorTheme.disabled, - // highlightColor: colorTheme.inputBg, - // child: image, - // ); - // }, - child: StreamImageAttachmentThumbnail( - image: attachment, - width: double.infinity, - height: double.infinity, - ), maxScale: PhotoViewComputedScale.covered, minScale: PhotoViewComputedScale.contained, - // heroAttributes: PhotoViewHeroAttributes( - // tag: widget.mediaAttachmentPackages, - // ), backgroundDecoration: const BoxDecoration( color: Colors.transparent, ), + child: StreamMediaAttachmentThumbnail( + media: attachment, + width: double.infinity, + height: double.infinity, + ), ), ), ), @@ -353,9 +325,7 @@ class _FullScreenMediaState extends State { child: ContextMenuArea( verticalPadding: 0, builder: (_) => [ - DownloadMenuItem( - attachment: attachment, - ), + DownloadMenuItem(attachment: attachment), ], child: Chewie( controller: controller.chewieController!, diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart index 13185a794..bdc6d9cfa 100644 --- a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart @@ -94,7 +94,7 @@ class _FullScreenMediaDesktopState extends State { _pageController = PageController(initialPage: widget.startIndex); for (var i = 0; i < widget.mediaAttachmentPackages.length; i++) { final attachment = widget.mediaAttachmentPackages[i].attachment; - if (attachment.type != 'video') continue; + if (attachment.type != AttachmentType.video) continue; final package = DesktopVideoPackage(attachment); videoPackages[attachment.id] = package; } @@ -298,7 +298,8 @@ class _FullScreenMediaDesktopState extends State { p.player.pause(); } } - if (widget.autoplayVideos && currentAttachment.type == 'video') { + if (widget.autoplayVideos && + currentAttachment.type == AttachmentType.video) { final package = videoPackages[currentAttachment.id]!; package.player.play(); } @@ -307,7 +308,8 @@ class _FullScreenMediaDesktopState extends State { final currentAttachmentPackage = widget.mediaAttachmentPackages[index]; final attachment = currentAttachmentPackage.attachment; - if (attachment.type == 'image' || attachment.type == 'giphy') { + if (attachment.type == AttachmentType.image || + attachment.type == AttachmentType.giphy) { final imageUrl = attachment.imageUrl ?? attachment.assetUrl ?? attachment.thumbUrl; @@ -359,7 +361,7 @@ class _FullScreenMediaDesktopState extends State { ), ), ); - } else if (attachment.type == 'video') { + } else if (attachment.type == AttachmentType.video) { final package = videoPackages[attachment.id]!; package.player.open( Playlist( diff --git a/packages/stream_chat_flutter/lib/src/gallery/gallery_footer.dart b/packages/stream_chat_flutter/lib/src/gallery/gallery_footer.dart index f63a7fb72..049284696 100644 --- a/packages/stream_chat_flutter/lib/src/gallery/gallery_footer.dart +++ b/packages/stream_chat_flutter/lib/src/gallery/gallery_footer.dart @@ -95,7 +95,7 @@ class _StreamGalleryFooterState extends State { final url = attachment.imageUrl ?? attachment.assetUrl ?? attachment.thumbUrl!; - final type = attachment.type == 'image' + final type = attachment.type == AttachmentType.image ? 'jpg' : url.split('?').first.split('.').last; final request = await HttpClient().getUrl(Uri.parse(url)); @@ -218,7 +218,7 @@ class _StreamGalleryFooterState extends State { widget.mediaAttachmentPackages[index]; final attachment = attachmentPackage.attachment; final message = attachmentPackage.message; - if (attachment.type == 'video') { + if (attachment.type == AttachmentType.video) { media = MouseRegion( cursor: SystemMouseCursors.click, child: GestureDetector( diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal/message_actions_modal.dart index c9ff55953..2fb837152 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal/message_actions_modal.dart @@ -114,119 +114,121 @@ class _MessageActionsModalState extends State { final child = Center( child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (widget.showReactionPicker && hasReactionPermission) - LayoutBuilder( - builder: (context, constraints) { - return Align( - alignment: Alignment( - calculateReactionsHorizontalAlignment( - user, - widget.message, - constraints, - fontSize, - orientation, + child: SafeArea( + child: Padding( + padding: const EdgeInsets.all(8), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (widget.showReactionPicker && hasReactionPermission) + LayoutBuilder( + builder: (context, constraints) { + return Align( + alignment: Alignment( + calculateReactionsHorizontalAlignment( + user, + widget.message, + constraints, + fontSize, + orientation, + ), + 0, ), - 0, - ), - child: StreamReactionPicker( - message: widget.message, - ), - ); - }, - ), - const SizedBox(height: 10), - IgnorePointer( - child: widget.messageWidget, - ), - const SizedBox(height: 8), - Padding( - padding: EdgeInsets.only( - left: widget.reverse ? 0 : 40, + child: StreamReactionPicker( + message: widget.message, + ), + ); + }, + ), + const SizedBox(height: 10), + IgnorePointer( + child: widget.messageWidget, ), - child: SizedBox( - width: mediaQueryData.size.width * 0.75, - child: Material( - color: streamChatThemeData.colorTheme.appBg, - clipBehavior: Clip.hardEdge, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(16), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (widget.showReplyMessage && - widget.message.state.isCompleted) - ReplyButton( - onTap: () { - Navigator.of(context).pop(); - if (widget.onReplyTap != null) { - widget.onReplyTap?.call(widget.message); - } - }, - ), - if (widget.showThreadReplyMessage && - (widget.message.state.isCompleted) && - widget.message.parentId == null) - ThreadReplyButton( - message: widget.message, - onThreadReplyTap: widget.onThreadReplyTap, - ), - if (widget.showResendMessage) - ResendMessageButton( - message: widget.message, - channel: channel, - ), - if (widget.showEditMessage) - EditMessageButton( - onTap: () { - Navigator.of(context).pop(); - _showEditBottomSheet(context); - }, - ), - if (widget.showCopyMessage) - CopyMessageButton( - onTap: () { - widget.onCopyTap?.call(widget.message); - Navigator.of(context).pop(); - }, - ), - if (widget.showFlagButton) - FlagMessageButton( - onTap: _showFlagDialog, - ), - if (widget.showPinButton) - PinMessageButton( - onTap: _togglePin, - pinned: widget.message.pinned, - ), - if (widget.showDeleteMessage) - DeleteMessageButton( - isDeleteFailed: - widget.message.state.isDeletingFailed, - onTap: _showDeleteBottomSheet, + const SizedBox(height: 8), + Padding( + padding: EdgeInsets.only( + left: widget.reverse ? 0 : 40, + ), + child: SizedBox( + width: mediaQueryData.size.width * 0.75, + child: Material( + color: streamChatThemeData.colorTheme.appBg, + clipBehavior: Clip.hardEdge, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (widget.showReplyMessage && + widget.message.state.isCompleted) + ReplyButton( + onTap: () { + Navigator.of(context).pop(); + if (widget.onReplyTap != null) { + widget.onReplyTap?.call(widget.message); + } + }, + ), + if (widget.showThreadReplyMessage && + (widget.message.state.isCompleted) && + widget.message.parentId == null) + ThreadReplyButton( + message: widget.message, + onThreadReplyTap: widget.onThreadReplyTap, + ), + if (widget.showResendMessage) + ResendMessageButton( + message: widget.message, + channel: channel, + ), + if (widget.showEditMessage) + EditMessageButton( + onTap: () { + Navigator.of(context).pop(); + _showEditBottomSheet(context); + }, + ), + if (widget.showCopyMessage) + CopyMessageButton( + onTap: () { + widget.onCopyTap?.call(widget.message); + Navigator.of(context).pop(); + }, + ), + if (widget.showFlagButton) + FlagMessageButton( + onTap: _showFlagDialog, + ), + if (widget.showPinButton) + PinMessageButton( + onTap: _togglePin, + pinned: widget.message.pinned, + ), + if (widget.showDeleteMessage) + DeleteMessageButton( + isDeleteFailed: + widget.message.state.isDeletingFailed, + onTap: _showDeleteBottomSheet, + ), + ...widget.customActions + .map((action) => _buildCustomAction( + context, + action, + )), + ].insertBetween( + Container( + height: 1, + color: streamChatThemeData.colorTheme.borders, ), - ...widget.customActions - .map((action) => _buildCustomAction( - context, - action, - )), - ].insertBetween( - Container( - height: 1, - color: streamChatThemeData.colorTheme.borders, ), ), ), ), ), - ), - ], + ], + ), ), ), ), diff --git a/packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart index a361f1ad6..e37cd379f 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/attachment_picker/options/stream_gallery_picker.dart @@ -217,7 +217,7 @@ extension StreamImagePickerX on StreamAttachmentPickerController { final extraDataMap = {}; - final mimeType = file.mimeType?.mimeType; + final mimeType = file.mediaType?.mimeType; if (mimeType != null) { extraDataMap['mime_type'] = mimeType; diff --git a/packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart index 6c8f1f59c..ada845c06 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/attachment_picker/stream_attachment_picker.dart @@ -240,10 +240,10 @@ class WebOrDesktopAttachmentPickerOption extends AttachmentPickerOption { extension AttachmentPickerOptionTypeX on StreamAttachmentPickerController { /// Returns the list of available attachment picker options. Set get currentAttachmentPickerTypes { - final containsImage = value.any((it) => it.type == 'image'); - final containsVideo = value.any((it) => it.type == 'video'); - final containsAudio = value.any((it) => it.type == 'audio'); - final containsFile = value.any((it) => it.type == 'file'); + final containsImage = value.any((it) => it.type == AttachmentType.image); + final containsVideo = value.any((it) => it.type == AttachmentType.video); + final containsAudio = value.any((it) => it.type == AttachmentType.audio); + final containsFile = value.any((it) => it.type == AttachmentType.file); return { if (containsImage) AttachmentPickerType.images, diff --git a/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart b/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart index 602383016..054d9cc4c 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart @@ -1,10 +1,11 @@ -import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; -import 'package:stream_chat_flutter/src/attachment/thumbnail/video_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/file_attachment_thumbnail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/message_input/clear_input_item_button.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:video_player/video_player.dart'; + +typedef _Builders = Map; /// {@template streamQuotedMessage} /// Widget for the quoted message. @@ -40,8 +41,7 @@ class StreamQuotedMessageWidget extends StatelessWidget { final int textLimit; /// Map that defines a thumbnail builder for an attachment type - final Map? - attachmentThumbnailBuilders; + final _Builders? attachmentThumbnailBuilders; /// Padding around the widget final EdgeInsetsGeometry padding; @@ -109,19 +109,17 @@ class _QuotedMessage extends StatelessWidget { final bool reverse; final Widget Function(BuildContext, Message)? textBuilder; - /// Map that defines a thumbnail builder for an attachment type - final Map? - attachmentThumbnailBuilders; + final _Builders? attachmentThumbnailBuilders; bool get _hasAttachments => message.attachments.isNotEmpty; bool get _containsText => message.text?.isNotEmpty == true; bool get _containsLinkAttachment => - message.attachments.any((element) => element.titleLink != null); + message.attachments.any((it) => it.type == AttachmentType.urlPreview); - bool get _isGiphy => - message.attachments.any((element) => element.type == 'giphy'); + bool get _isGiphy => message.attachments + .any((element) => element.type == AttachmentType.giphy); bool get _isDeleted => message.isDeleted || message.deletedAt != null; @@ -150,14 +148,6 @@ class _QuotedMessage extends StatelessWidget { } else { // Show quoted message children = [ - if (onQuotedMessageClear != null) - PlatformWidgetBuilder( - web: (context, child) => child, - desktop: (context, child) => child, - child: ClearInputItemButton( - onTap: onQuotedMessageClear, - ), - ), if (_hasAttachments) _ParseAttachments( message: message, @@ -184,9 +174,26 @@ class _QuotedMessage extends StatelessWidget { ), ), ), - ].insertBetween(const SizedBox(width: 8)); + ]; } + // Add clear button if needed. + if (onQuotedMessageClear != null) { + children.insert( + 0, + PlatformWidgetBuilder( + web: (context, child) => child, + desktop: (context, child) => child, + child: ClearInputItemButton( + onTap: onQuotedMessageClear, + ), + ), + ); + } + + // Add some spacing between the children. + children = children.insertBetween(const SizedBox(width: 8)); + return Container( decoration: BoxDecoration( color: _getBackgroundColor(context), @@ -229,193 +236,106 @@ class _ParseAttachments extends StatelessWidget { final Message message; final StreamMessageThemeData messageTheme; - final Map? - attachmentThumbnailBuilders; - - bool get _containsLinkAttachment => - message.attachments.any((element) => element.titleLink != null); + final _Builders? attachmentThumbnailBuilders; @override Widget build(BuildContext context) { - Widget child; - Attachment attachment; - if (_containsLinkAttachment) { - attachment = message.attachments.firstWhere( - (element) => element.ogScrapeUrl != null || element.titleLink != null, - ); - child = _UrlAttachment(attachment: attachment); - } else { - QuotedMessageAttachmentThumbnailBuilder? attachmentBuilder; - attachment = message.attachments.last; - if (attachmentThumbnailBuilders?.containsKey(attachment.type) == true) { - attachmentBuilder = attachmentThumbnailBuilders![attachment.type]; - } - attachmentBuilder = _defaultAttachmentBuilder[attachment.type]; - if (attachmentBuilder == null) { - child = const Offstage(); - } else { - child = attachmentBuilder(context, attachment); - } - } + final attachment = message.attachments.first; - final isImageFile = attachment.title?.mimeType?.type == 'image'; - final isVideoFile = attachment.title?.mimeType?.type == 'video'; + var attachmentBuilders = attachmentThumbnailBuilders; + attachmentBuilders ??= _createDefaultAttachmentBuilders(); - return Material( - clipBehavior: Clip.hardEdge, - type: MaterialType.transparency, - shape: attachment.type == 'file' && (!isImageFile && !isVideoFile) - ? null - : RoundedRectangleBorder( - side: const BorderSide(width: 0, color: Colors.transparent), - borderRadius: BorderRadius.circular(8), - ), - child: AbsorbPointer(child: child), + // Build the attachment widget using the builder for the attachment type. + final attachmentWidget = attachmentBuilders[attachment.type]?.call( + context, + attachment, ); - } - Map - get _defaultAttachmentBuilder { - final builders = { - 'image': (_, attachment) { - return StreamImageAttachment( - message: message, - image: attachment, - constraints: BoxConstraints.loose(const Size(32, 32)), - ); - }, - 'video': (_, attachment) { - return StreamVideoAttachmentThumbnail( - key: ValueKey(attachment.assetUrl), - video: attachment, - width: 32, - height: 32, - // constraints: BoxConstraints.loose(const Size(32, 32)), - // errorBuilder: (_, __) => AttachmentError( - // constraints: BoxConstraints.loose(const Size(32, 32)), - // ), - ); - }, - 'giphy': (_, attachment) { - const size = Size(32, 32); - return CachedNetworkImage( - height: size.height, - width: size.width, - placeholder: (_, __) { - return SizedBox( - width: size.width, - height: size.height, - child: const Center( - child: CircularProgressIndicator.adaptive(), - ), - ); - }, - imageUrl: attachment.thumbUrl ?? - attachment.imageUrl ?? - attachment.assetUrl!, - errorWidget: (context, url, error) => - AttachmentError(constraints: BoxConstraints.loose(size)), - fit: BoxFit.cover, - ); - }, - }; - - builders['file'] = (_, attachment) { - return SizedBox( - height: 32, - width: 32, - child: Builder( - builder: (context) { - final isImageFile = attachment.title?.mimeType?.type == 'image'; - if (isImageFile) { - return builders['image']!(context, attachment); - } - - final isVideoFile = attachment.title?.mimeType?.type == 'video'; - if (isVideoFile) { - return builders['video']!(context, attachment); - } - - return getFileTypeImage( - attachment.extraData['mime_type'] as String?, - ); - }, - ), - ); - }; + // Return empty container if no attachment widget is returned. + if (attachmentWidget == null) return const SizedBox.shrink(); - return builders; - } -} + final colorTheme = StreamChatTheme.of(context).colorTheme; -class _UrlAttachment extends StatelessWidget { - const _UrlAttachment({ - required this.attachment, - }); - - final Attachment attachment; - - @override - Widget build(BuildContext context) { - const size = Size(32, 32); - if (attachment.thumbUrl != null) { - return Container( - height: size.height, - width: size.width, - decoration: BoxDecoration( - image: DecorationImage( - fit: BoxFit.cover, - image: CachedNetworkImageProvider( - attachment.thumbUrl!, - ), + var clipBehavior = Clip.none; + ShapeDecoration? decoration; + if (attachment.type != AttachmentType.file) { + clipBehavior = Clip.hardEdge; + decoration = ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, ), + borderRadius: BorderRadius.circular(8), ), ); } - return AttachmentError(constraints: BoxConstraints.loose(size)); - } -} -class _VideoAttachmentThumbnail extends StatefulWidget { - const _VideoAttachmentThumbnail({ - required this.attachment, - }); + return Container( + key: Key(attachment.id), + clipBehavior: clipBehavior, + decoration: decoration, + constraints: const BoxConstraints.tightFor(width: 36, height: 36), + child: AbsorbPointer(child: attachmentWidget), + ); + } - final Attachment attachment; + _Builders _createDefaultAttachmentBuilders() { + Widget _createMediaThumbnail(BuildContext context, Attachment media) { + return StreamImageAttachmentThumbnail( + image: media, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ); + } - @override - _VideoAttachmentThumbnailState createState() => - _VideoAttachmentThumbnailState(); -} + Widget _createUrlThumbnail(BuildContext context, Attachment media) { + return StreamImageAttachmentThumbnail( + image: media, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ); + } -class _VideoAttachmentThumbnailState extends State<_VideoAttachmentThumbnail> { - late VideoPlayerController _controller; + Widget _createFileThumbnail(BuildContext context, Attachment file) { + Widget thumbnail = StreamFileAttachmentThumbnail( + file: file, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ); - @override - void initState() { - super.initState(); - _controller = VideoPlayerController.networkUrl( - Uri.parse(widget.attachment.assetUrl!), - )..initialize().then((_) { - // ignore: no-empty-block - setState(() {}); //when your thumbnail will show. - }); - } + final mediaType = file.title?.mediaType; + final isImage = mediaType?.type == AttachmentType.image; + final isVideo = mediaType?.type == AttachmentType.video; + if (isImage || isVideo) { + final colorTheme = StreamChatTheme.of(context).colorTheme; + thumbnail = Container( + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration( + shape: RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, + ), + borderRadius: BorderRadius.circular(8), + ), + ), + child: thumbnail, + ); + } - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } + return thumbnail; + } - @override - Widget build(BuildContext context) { - return SizedBox( - height: 32, - width: 32, - child: _controller.value.isInitialized - ? VideoPlayer(_controller) - : const CircularProgressIndicator.adaptive(), - ); + return { + AttachmentType.image: _createMediaThumbnail, + AttachmentType.giphy: _createMediaThumbnail, + AttachmentType.video: _createMediaThumbnail, + AttachmentType.urlPreview: _createUrlThumbnail, + AttachmentType.file: _createFileThumbnail, + }; } } diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_input.dart index 8bdbfd99e..8ed8e2bba 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_input.dart @@ -1169,7 +1169,7 @@ class StreamMessageInputState extends State } final containsUrl = quotedMessage.attachments.any((it) { - return it.titleLink != null; + return it.type == AttachmentType.urlPreview; }); return StreamQuotedMessageWidget( @@ -1316,8 +1316,6 @@ class StreamMessageInputState extends State message = message.copyWith(text: '/${message.command} ${message.text}'); } - final skipEnrichUrl = _effectiveController.ogAttachment == null; - var shouldKeepFocus = widget.shouldKeepFocusAfterMessage; shouldKeepFocus ??= !_commandEnabled; @@ -1341,10 +1339,7 @@ class StreamMessageInputState extends State await WidgetsBinding.instance.endOfFrame; } - await _sendOrUpdateMessage( - message: message, - skipEnrichUrl: skipEnrichUrl, - ); + await _sendOrUpdateMessage(message: message); if (mounted) { if (shouldKeepFocus) { @@ -1357,36 +1352,29 @@ class StreamMessageInputState extends State Future _sendOrUpdateMessage({ required Message message, - bool skipEnrichUrl = false, }) async { final channel = StreamChannel.of(context).channel; try { Future sendingFuture; if (_isEditing) { - sendingFuture = channel.updateMessage( - message, - skipEnrichUrl: skipEnrichUrl, - ); + sendingFuture = channel.updateMessage(message); } else { - sendingFuture = channel.sendMessage( - message, - skipEnrichUrl: skipEnrichUrl, - ); + sendingFuture = channel.sendMessage(message); } final resp = await sendingFuture; - if (resp.message?.type == 'error') { + if (resp.message?.isError ?? false) { _effectiveController.message = message; } _startSlowMode(); widget.onMessageSent?.call(resp.message); } catch (e, stk) { if (widget.onError != null) { - widget.onError?.call(e, stk); - } else { - rethrow; + return widget.onError?.call(e, stk); } + + rethrow; } } diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart index cfb9e25c4..56dabbfe7 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_input_attachment_list.dart @@ -1,14 +1,11 @@ -import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/attachment/attachment.dart'; +import 'package:stream_chat_flutter/src/attachment/file_attachment.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/media_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/misc/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/utils/utils.dart'; -import 'package:stream_chat_flutter/src/video/video_thumbnail_image.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; -import '../attachment/thumbnail/video_attachment_thumbnail.dart'; - /// WidgetBuilder used to build the message input attachment list. /// /// see more: @@ -93,7 +90,7 @@ class _StreamMessageInputAttachmentListState // Split the attachments into file and media attachments. for (final attachment in widget.attachments) { - if (attachment.type == 'file') { + if (attachment.type == AttachmentType.file) { fileAttachments.add(attachment); } else { mediaAttachments.add(attachment); @@ -123,7 +120,7 @@ class _StreamMessageInputAttachmentListState } return SingleChildScrollView( - padding: const EdgeInsets.only(top: 8), + padding: const EdgeInsets.only(top: 6), child: Column( mainAxisSize: MainAxisSize.min, children: [ @@ -203,23 +200,19 @@ class MessageInputFileAttachments extends StatelessWidget { } // Otherwise, use the default builder. - return ClipRRect( - key: Key(attachment.id), - borderRadius: BorderRadius.circular(10), - child: StreamFileAttachment( - message: Message(), // dummy message - file: attachment, - constraints: BoxConstraints.loose(Size( - MediaQuery.of(context).size.width * 0.65, - 56, - )), - trailing: Padding( - padding: const EdgeInsets.all(8), - child: RemoveAttachmentButton( - onPressed: onRemovePressed != null - ? () => onRemovePressed!(attachment) - : null, - ), + return StreamFileAttachment( + message: Message(), // Dummy message + file: attachment, + constraints: BoxConstraints.loose(Size( + MediaQuery.of(context).size.width * 0.65, + 56, + )), + trailing: Padding( + padding: const EdgeInsets.all(8), + child: RemoveAttachmentButton( + onPressed: onRemovePressed != null + ? () => onRemovePressed!(attachment) + : null, ), ), ); @@ -258,7 +251,8 @@ class MessageInputMediaAttachments extends StatelessWidget { height: 104, child: ListView( scrollDirection: Axis.horizontal, - padding: const EdgeInsets.symmetric(horizontal: 8), + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 8), + cacheExtent: 104 * 10, // Cache 10 items ahead. children: attachments.map( (attachment) { // If a custom builder is provided, use it. @@ -267,27 +261,47 @@ class MessageInputMediaAttachments extends StatelessWidget { return builder(context, attachment, onRemovePressed); } - return ClipRRect( + final colorTheme = StreamChatTheme.of(context).colorTheme; + final shape = RoundedRectangleBorder( + side: BorderSide( + color: colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, + ), + borderRadius: BorderRadius.circular(14), + ); + + return Container( key: Key(attachment.id), - borderRadius: BorderRadius.circular(10), - child: Stack( - children: [ - AspectRatio( - aspectRatio: 1, - child: MessageInputMediaAttachmentThumbnail( - attachment: attachment, + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration(shape: shape), + child: AspectRatio( + aspectRatio: 1, + child: Stack( + alignment: Alignment.center, + children: [ + StreamMediaAttachmentThumbnail( + media: attachment, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, ), - ), - Positioned( - top: 8, - right: 8, - child: RemoveAttachmentButton( - onPressed: onRemovePressed != null - ? () => onRemovePressed!(attachment) - : null, + if (attachment.type == AttachmentType.video) + Positioned( + left: 8, + bottom: 8, + child: StreamSvgIcon.videoCall(), + ), + Positioned( + top: 8, + right: 8, + child: RemoveAttachmentButton( + onPressed: onRemovePressed != null + ? () => onRemovePressed!(attachment) + : null, + ), ), - ), - ], + ], + ), ), ); }, @@ -297,61 +311,6 @@ class MessageInputMediaAttachments extends StatelessWidget { } } -/// A widget that displays a thumbnail for a media attachment. -class MessageInputMediaAttachmentThumbnail extends StatelessWidget { - /// Creates a new media attachment widget. - const MessageInputMediaAttachmentThumbnail({ - super.key, - required this.attachment, - }); - - /// The attachment to display. - final Attachment attachment; - - @override - Widget build(BuildContext context) { - switch (attachment.type) { - case 'image': - case 'giphy': - return attachment.file != null - ? Image.memory( - attachment.file!.bytes!, - fit: BoxFit.cover, - errorBuilder: (context, _, __) => Image.asset( - 'images/placeholder.png', - package: 'stream_chat_flutter', - ), - ) - : CachedNetworkImage( - imageUrl: attachment.imageUrl ?? - attachment.assetUrl ?? - attachment.thumbUrl!, - fit: BoxFit.cover, - errorWidget: (_, obj, trace) => Image.asset( - 'images/placeholder.png', - package: 'stream_chat_flutter', - ), - ); - case 'video': - return Stack( - children: [ - StreamVideoAttachmentThumbnail(video: attachment), - Positioned( - left: 8, - bottom: 10, - child: StreamSvgIcon.videoCall(), - ), - ], - ); - default: - return const ColoredBox( - color: Colors.black26, - child: Icon(Icons.insert_drive_file), - ); - } - } -} - /// Material Button used for removing attachments. class RemoveAttachmentButton extends StatelessWidget { /// Creates a new remove attachment button. diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart index ee85693ab..995ec161e 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart @@ -104,6 +104,7 @@ class StreamMessageListView extends StatefulWidget { this.loadingBuilder, this.emptyBuilder, this.systemMessageBuilder, + this.ephemeralMessageBuilder, this.messageListBuilder, this.errorBuilder, this.messageFilter, @@ -149,6 +150,9 @@ class StreamMessageListView extends StatefulWidget { /// {@macro systemMessageBuilder} final SystemMessageBuilder? systemMessageBuilder; + /// {@macro ephemeralMessageBuilder} + final EphemeralMessageBuilder? ephemeralMessageBuilder; + /// {@macro parentMessageBuilder} final ParentMessageBuilder? parentMessageBuilder; @@ -915,13 +919,19 @@ class _StreamMessageListViewState extends State { final currentUserMember = members.firstWhereOrNull((e) => e.user!.id == currentUser!.id); + final hasFileAttachment = + message.attachments.any((it) => it.type == AttachmentType.file); + final hasUrlAttachment = - message.attachments.any((it) => it.ogScrapeUrl != null); + message.attachments.any((it) => it.type == AttachmentType.urlPreview); - final isEphemeral = message.isEphemeral; + final attachmentBorderRadius = hasUrlAttachment + ? 8.0 + : hasFileAttachment + ? 12.0 + : 14.0; - final borderSide = - isOnlyEmoji || hasUrlAttachment || isEphemeral ? BorderSide.none : null; + final borderSide = isOnlyEmoji ? BorderSide.none : null; final defaultMessageWidget = StreamMessageWidget( showReplyMessage: false, @@ -935,13 +945,34 @@ class _StreamMessageListViewState extends State { showUsername: !isMyMessage, padding: const EdgeInsets.all(8), showSendingIndicator: false, + attachmentPadding: EdgeInsets.all( + hasUrlAttachment + ? 8 + : hasFileAttachment + ? 4 + : 2, + ), + attachmentShape: RoundedRectangleBorder( + side: BorderSide( + color: _streamTheme.colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, + ), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(attachmentBorderRadius), + bottomLeft: isMyMessage + ? Radius.circular(attachmentBorderRadius) + : Radius.zero, + topRight: Radius.circular(attachmentBorderRadius), + bottomRight: isMyMessage + ? Radius.zero + : Radius.circular(attachmentBorderRadius), + ), + ), borderRadiusGeometry: BorderRadius.only( topLeft: const Radius.circular(16), - bottomLeft: - isMyMessage ? const Radius.circular(16) : const Radius.circular(2), + bottomLeft: isMyMessage ? const Radius.circular(16) : Radius.zero, topRight: const Radius.circular(16), - bottomRight: - isMyMessage ? const Radius.circular(2) : const Radius.circular(16), + bottomRight: isMyMessage ? Radius.zero : const Radius.circular(16), ), textPadding: EdgeInsets.symmetric( vertical: 8, @@ -1061,14 +1092,8 @@ class _StreamMessageListViewState extends State { } if (message.isEphemeral) { - // return widget.ephemeralMessageBuilder?.call(context, message) ?? - return StreamEphemeralMessage( - message: message, - // onMessageTap: (message) { - // widget.onEphemeralMessageTap?.call(message); - // FocusScope.of(context).unfocus(); - // }, - ); + return widget.ephemeralMessageBuilder?.call(context, message) ?? + StreamEphemeralMessage(message: message); } final userId = StreamChat.of(context).currentUser!.id; @@ -1088,14 +1113,21 @@ class _StreamMessageListViewState extends State { } final hasFileAttachment = - message.attachments.any((it) => it.type == 'file'); + message.attachments.any((it) => it.type == AttachmentType.file); + + final hasUrlAttachment = + message.attachments.any((it) => it.type == AttachmentType.urlPreview); final isThreadMessage = message.parentId != null && message.showInChannel == true; final hasReplies = message.replyCount! > 0; - final attachmentBorderRadius = hasFileAttachment ? 12.0 : 14.0; + final attachmentBorderRadius = hasUrlAttachment + ? 8.0 + : hasFileAttachment + ? 12.0 + : 14.0; final showTimeStamp = (!isThreadMessage || _isThreadConversation) && !hasReplies && @@ -1119,13 +1151,7 @@ class _StreamMessageListViewState extends State { final showThreadReplyIndicator = !_isThreadConversation && hasReplies; final isOnlyEmoji = message.text?.isOnlyEmoji ?? false; - final isEphemeral = message.isEphemeral; - - final hasUrlAttachment = - message.attachments.any((it) => it.ogScrapeUrl != null); - - final borderSide = - isOnlyEmoji || hasUrlAttachment || isEphemeral ? BorderSide.none : null; + final borderSide = isOnlyEmoji ? BorderSide.none : null; final currentUser = StreamChat.of(context).currentUser; final members = StreamChannel.of(context).channel.state?.members ?? []; @@ -1170,27 +1196,39 @@ class _StreamMessageListViewState extends State { showFlagButton: !isMyMessage, borderSide: borderSide, onThreadTap: _onThreadTap, - attachmentBorderRadiusGeometry: BorderRadius.only( - topLeft: Radius.circular(attachmentBorderRadius), - bottomLeft: isMyMessage - ? Radius.circular(attachmentBorderRadius) - : Radius.circular( - (hasTimeDiff || !isNextUserSame) && - !(hasReplies || isThreadMessage || hasFileAttachment) - ? 0 - : attachmentBorderRadius, - ), - topRight: Radius.circular(attachmentBorderRadius), - bottomRight: isMyMessage - ? Radius.circular( - (hasTimeDiff || !isNextUserSame) && - !(hasReplies || isThreadMessage || hasFileAttachment) - ? 0 - : attachmentBorderRadius, - ) - : Radius.circular(attachmentBorderRadius), + attachmentShape: RoundedRectangleBorder( + side: BorderSide( + color: _streamTheme.colorTheme.borders, + strokeAlign: BorderSide.strokeAlignOutside, + ), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(attachmentBorderRadius), + bottomLeft: isMyMessage + ? Radius.circular(attachmentBorderRadius) + : Radius.circular( + (hasTimeDiff || !isNextUserSame) && + !(hasReplies || isThreadMessage || hasFileAttachment) + ? 0 + : attachmentBorderRadius, + ), + topRight: Radius.circular(attachmentBorderRadius), + bottomRight: isMyMessage + ? Radius.circular( + (hasTimeDiff || !isNextUserSame) && + !(hasReplies || isThreadMessage || hasFileAttachment) + ? 0 + : attachmentBorderRadius, + ) + : Radius.circular(attachmentBorderRadius), + ), + ), + attachmentPadding: EdgeInsets.all( + hasUrlAttachment + ? 8 + : hasFileAttachment + ? 4 + : 2, ), - attachmentPadding: EdgeInsets.all(hasFileAttachment ? 4 : 2), borderRadiusGeometry: BorderRadius.only( topLeft: const Radius.circular(16), bottomLeft: isMyMessage diff --git a/packages/stream_chat_flutter/lib/src/message_widget/message_card.dart b/packages/stream_chat_flutter/lib/src/message_widget/message_card.dart index 24da1ac30..455da2200 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/message_card.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/message_card.dart @@ -22,6 +22,7 @@ class MessageCard extends StatefulWidget { required this.isGiphy, required this.attachmentBuilders, required this.attachmentPadding, + required this.attachmentShape, required this.onAttachmentTap, required this.onShowMessage, required this.onReplyTap, @@ -80,6 +81,9 @@ class MessageCard extends StatefulWidget { /// {@macro attachmentPadding} final EdgeInsetsGeometry attachmentPadding; + /// {@macro attachmentShape} + final ShapeBorder? attachmentShape; + /// {@macro onAttachmentTap} final StreamAttachmentWidgetTapCallback? onAttachmentTap; @@ -200,6 +204,7 @@ class _MessageCardState extends State { message: widget.message, attachmentBuilders: widget.attachmentBuilders, attachmentPadding: widget.attachmentPadding, + attachmentShape: widget.attachmentShape, onAttachmentTap: widget.onAttachmentTap, onShowMessage: widget.onShowMessage, onReplyTap: widget.onReplyTap, diff --git a/packages/stream_chat_flutter/lib/src/message_widget/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget/message_widget.dart index 74835bd6f..16a1980ec 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/message_widget.dart @@ -49,11 +49,9 @@ class StreamMessageWidget extends StatefulWidget { this.reverse = false, this.translateUserAvatar = true, this.shape, - this.attachmentShape, this.borderSide, - this.attachmentBorderSide, this.borderRadiusGeometry, - this.attachmentBorderRadiusGeometry, + this.attachmentShape, this.onMentionTap, this.onMessageTap, this.showReactionPicker = true, @@ -334,21 +332,11 @@ class StreamMessageWidget extends StatefulWidget { /// {@endtemplate} final BorderSide? borderSide; - /// {@template attachmentBorderSide} - /// The borderSide of an attachment - /// {@endtemplate} - final BorderSide? attachmentBorderSide; - /// {@template borderRadiusGeometry} /// The border radius of the message text /// {@endtemplate} final BorderRadiusGeometry? borderRadiusGeometry; - /// {@template attachmentBorderRadiusGeometry} - /// The border radius of an attachment - /// {@endtemplate} - final BorderRadiusGeometry? attachmentBorderRadiusGeometry; - /// {@template padding} /// The padding of the widget /// {@endtemplate} @@ -542,9 +530,7 @@ class StreamMessageWidget extends StatefulWidget { ShapeBorder? shape, ShapeBorder? attachmentShape, BorderSide? borderSide, - BorderSide? attachmentBorderSide, BorderRadiusGeometry? borderRadiusGeometry, - BorderRadiusGeometry? attachmentBorderRadiusGeometry, EdgeInsetsGeometry? padding, EdgeInsets? textPadding, EdgeInsetsGeometry? attachmentPadding, @@ -603,10 +589,7 @@ class StreamMessageWidget extends StatefulWidget { shape: shape ?? this.shape, attachmentShape: attachmentShape ?? this.attachmentShape, borderSide: borderSide ?? this.borderSide, - attachmentBorderSide: attachmentBorderSide ?? this.attachmentBorderSide, borderRadiusGeometry: borderRadiusGeometry ?? this.borderRadiusGeometry, - attachmentBorderRadiusGeometry: - attachmentBorderRadiusGeometry ?? this.attachmentBorderRadiusGeometry, padding: padding ?? this.padding, textPadding: textPadding ?? this.textPadding, attachmentPadding: attachmentPadding ?? this.attachmentPadding, @@ -691,8 +674,8 @@ class _StreamMessageWidgetState extends State /// {@template isGiphy} /// `true` if any of the [message]'s attachments are a giphy. /// {@endtemplate} - bool get isGiphy => - widget.message.attachments.any((element) => element.type == 'giphy'); + bool get isGiphy => widget.message.attachments + .any((element) => element.type == AttachmentType.giphy); /// {@template isOnlyEmoji} /// `true` if [message.text] contains only emoji. @@ -749,7 +732,8 @@ class _StreamMessageWidgetState extends State bool get shouldShowEditAction => widget.showEditMessage && !isDeleteFailed && - !widget.message.attachments.any((element) => element.type == 'giphy'); + !widget.message.attachments + .any((element) => element.type == AttachmentType.giphy); bool get shouldShowResendAction => widget.showResendMessage && (isSendFailed || isUpdateFailed); @@ -762,7 +746,8 @@ class _StreamMessageWidgetState extends State bool get shouldShowEditMessage => widget.showEditMessage && !isDeleteFailed && - !widget.message.attachments.any((element) => element.type == 'giphy'); + !widget.message.attachments + .any((element) => element.type == AttachmentType.giphy); bool get shouldShowThreadReplyAction => widget.showThreadReplyMessage && @@ -853,6 +838,7 @@ class _StreamMessageWidgetState extends State textPadding: widget.textPadding, attachmentBuilders: widget.attachmentBuilders, attachmentPadding: widget.attachmentPadding, + attachmentShape: widget.attachmentShape, onAttachmentTap: widget.onAttachmentTap, onReplyTap: widget.onReplyTap, onShowMessage: widget.onShowMessage, diff --git a/packages/stream_chat_flutter/lib/src/message_widget/message_widget_content.dart b/packages/stream_chat_flutter/lib/src/message_widget/message_widget_content.dart index e84f91f13..59c99732b 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/message_widget_content.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/message_widget_content.dart @@ -48,6 +48,7 @@ class MessageWidgetContent extends StatelessWidget { required this.isGiphy, required this.attachmentBuilders, required this.attachmentPadding, + required this.attachmentShape, required this.onAttachmentTap, required this.onShowMessage, required this.onReplyTap, @@ -150,6 +151,9 @@ class MessageWidgetContent extends StatelessWidget { /// {@macro attachmentPadding} final EdgeInsetsGeometry attachmentPadding; + /// {@macro attachmentShape} + final ShapeBorder? attachmentShape; + /// {@macro onAttachmentTap} final StreamAttachmentWidgetTapCallback? onAttachmentTap; @@ -341,6 +345,7 @@ class MessageWidgetContent extends StatelessWidget { isGiphy: isGiphy, attachmentBuilders: attachmentBuilders, attachmentPadding: attachmentPadding, + attachmentShape: attachmentShape, onAttachmentTap: onAttachmentTap, onReplyTap: onReplyTap, onShowMessage: onShowMessage, diff --git a/packages/stream_chat_flutter/lib/src/message_widget/parse_attachments.dart b/packages/stream_chat_flutter/lib/src/message_widget/parse_attachments.dart index 3477a751e..57b849ede 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/parse_attachments.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/parse_attachments.dart @@ -16,6 +16,7 @@ class ParseAttachments extends StatelessWidget { required this.message, required this.attachmentBuilders, required this.attachmentPadding, + this.attachmentShape, this.onAttachmentTap, this.onShowMessage, this.onReplyTap, @@ -31,6 +32,9 @@ class ParseAttachments extends StatelessWidget { /// {@macro attachmentPadding} final EdgeInsetsGeometry attachmentPadding; + /// {@macro attachmentShape} + final ShapeBorder? attachmentShape; + /// {@macro onAttachmentTap} final StreamAttachmentWidgetTapCallback? onAttachmentTap; @@ -104,6 +108,8 @@ class ParseAttachments extends StatelessWidget { var builders = attachmentBuilders; builders ??= StreamAttachmentWidgetBuilder.defaultBuilders( message: message, + shape: attachmentShape, + padding: attachmentPadding, onAttachmentTap: onAttachmentTap, ); diff --git a/packages/stream_chat_flutter/lib/src/message_widget/reactions/message_reactions_modal.dart b/packages/stream_chat_flutter/lib/src/message_widget/reactions/message_reactions_modal.dart index 8dadc47d8..072ee5bec 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/reactions/message_reactions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/reactions/message_reactions_modal.dart @@ -50,45 +50,47 @@ class StreamMessageReactionsModal extends StatelessWidget { final child = Center( child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (showReactionPicker && hasReactionPermission) - LayoutBuilder( - builder: (context, constraints) { - return Align( - alignment: Alignment( - calculateReactionsHorizontalAlignment( - user, - message, - constraints, - fontSize, - orientation, + child: SafeArea( + child: Padding( + padding: const EdgeInsets.all(8), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (showReactionPicker && hasReactionPermission) + LayoutBuilder( + builder: (context, constraints) { + return Align( + alignment: Alignment( + calculateReactionsHorizontalAlignment( + user, + message, + constraints, + fontSize, + orientation, + ), + 0, ), - 0, - ), - child: StreamReactionPicker( - message: message, - ), - ); - }, - ), - const SizedBox(height: 10), - IgnorePointer( - child: messageWidget, - ), - if (message.latestReactions?.isNotEmpty == true) ...[ - const SizedBox(height: 8), - ReactionsCard( - currentUser: user!, - message: message, - messageTheme: messageTheme, + child: StreamReactionPicker( + message: message, + ), + ); + }, + ), + const SizedBox(height: 10), + IgnorePointer( + child: messageWidget, ), + if (message.latestReactions?.isNotEmpty == true) ...[ + const SizedBox(height: 8), + ReactionsCard( + currentUser: user!, + message: message, + messageTheme: messageTheme, + ), + ], ], - ], + ), ), ), ), diff --git a/packages/stream_chat_flutter/lib/src/message_widget/text_bubble.dart b/packages/stream_chat_flutter/lib/src/message_widget/text_bubble.dart index 2fa017ed2..af5260a23 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/text_bubble.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/text_bubble.dart @@ -51,7 +51,7 @@ class TextBubble extends StatelessWidget { @override Widget build(BuildContext context) { - if (message.text?.trim().isEmpty ?? false) return const Offstage(); + if (message.text?.trim().isEmpty ?? true) return const Offstage(); return Padding( padding: isOnlyEmoji ? EdgeInsets.zero : textPadding, child: textBuilder != null diff --git a/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart index b1b165ba2..36b676f4c 100644 --- a/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/scroll_view/channel_scroll_view/stream_channel_list_tile.dart @@ -228,8 +228,7 @@ class StreamChannelListTile extends StatelessWidget { } final hasNonUrlAttachments = lastMessage.attachments - .where((it) => it.titleLink == null || it.type == 'giphy') - .isNotEmpty; + .any((it) => it.type != AttachmentType.urlPreview); return Padding( padding: const EdgeInsets.only(right: 4), diff --git a/packages/stream_chat_flutter/lib/src/theme/stream_chat_theme.dart b/packages/stream_chat_flutter/lib/src/theme/stream_chat_theme.dart index e7449343d..c24948b38 100644 --- a/packages/stream_chat_flutter/lib/src/theme/stream_chat_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/stream_chat_theme.dart @@ -201,6 +201,7 @@ class StreamChatThemeData { urlAttachmentTitleStyle: textTheme.footnoteBold, urlAttachmentTextStyle: textTheme.footnote, urlAttachmentTitleMaxLine: 1, + urlAttachmentTextMaxLine: 3, ), otherMessageTheme: StreamMessageThemeData( reactionsBackgroundColor: colorTheme.borders, @@ -227,6 +228,7 @@ class StreamChatThemeData { urlAttachmentTitleStyle: textTheme.footnoteBold, urlAttachmentTextStyle: textTheme.footnote, urlAttachmentTitleMaxLine: 1, + urlAttachmentTextMaxLine: 3, ), messageInputTheme: StreamMessageInputThemeData( borderRadius: BorderRadius.circular(20), diff --git a/packages/stream_chat_flutter/lib/src/utils/extensions.dart b/packages/stream_chat_flutter/lib/src/utils/extensions.dart index e83583064..b1ef9a2ce 100644 --- a/packages/stream_chat_flutter/lib/src/utils/extensions.dart +++ b/packages/stream_chat_flutter/lib/src/utils/extensions.dart @@ -1,3 +1,4 @@ +import 'dart:io'; import 'dart:math'; import 'package:diacritic/diacritic.dart'; @@ -5,6 +6,8 @@ import 'package:file_picker/file_picker.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; +import 'package:image_size_getter/file_input.dart'; // For compatibility with flutter web. +import 'package:image_size_getter/image_size_getter.dart' hide Size; import 'package:stream_chat_flutter/src/localization/translations.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -114,7 +117,7 @@ extension PlatformFileX on PlatformFile { final file = toAttachmentFile; final extraDataMap = {}; - final mimeType = file.mimeType?.mimeType; + final mimeType = file.mediaType?.mimeType; if (mimeType != null) { extraDataMap['mime_type'] = mimeType; @@ -151,7 +154,7 @@ extension XFileX on XFile { final extraDataMap = {}; - final mimeType = this.mimeType ?? file.mimeType?.mimeType; + final mimeType = this.mimeType ?? file.mediaType?.mimeType; if (mimeType != null) { extraDataMap['mime_type'] = mimeType; @@ -367,7 +370,7 @@ extension MessageX on Message { /// Returns an approximation of message size double roughMessageSize(double? fontSize) { - var messageTextLength = min(text!.biggestLine().length, 65); + var messageTextLength = min(text?.biggestLine().length ?? 0, 65); if (quotedMessage != null) { var quotedMessageLength = @@ -488,3 +491,46 @@ extension ConstraintsX on BoxConstraints { ); } } + +/// Useful extensions on [Attachment]. +extension OriginalSizeX on Attachment { + /// Returns the size of the attachment if it is an image or giffy. + /// Otherwise, returns null. + Size? get originalSize { + // Return null if the attachment is not an image or giffy. + if (type != AttachmentType.image && type != AttachmentType.giphy) { + return null; + } + + // Calculate size locally if the attachment is not uploaded yet. + final file = this.file; + if (file != null) { + ImageInput? input; + if (file.bytes != null) { + input = MemoryInput(file.bytes!); + } else if (file.path != null) { + input = FileInput(File(file.path!)); + } + + // Return null if the file does not contain enough information. + if (input == null) return null; + + try { + final size = ImageSizeGetter.getSize(input); + if (size.needRotate) { + return Size(size.height.toDouble(), size.width.toDouble()); + } + return Size(size.width.toDouble(), size.height.toDouble()); + } catch (e, stk) { + debugPrint('Error getting image size: $e\n$stk'); + return null; + } + } + + // Otherwise, use the size provided by the server. + final width = originalWidth; + final height = originalHeight; + if (width == null || height == null) return null; + return Size(width.toDouble(), height.toDouble()); + } +} diff --git a/packages/stream_chat_flutter/lib/src/utils/typedefs.dart b/packages/stream_chat_flutter/lib/src/utils/typedefs.dart index 2a504b2d4..12e254688 100644 --- a/packages/stream_chat_flutter/lib/src/utils/typedefs.dart +++ b/packages/stream_chat_flutter/lib/src/utils/typedefs.dart @@ -259,6 +259,14 @@ typedef SystemMessageBuilder = Widget Function( Message, ); +/// {@template ephemeralMessageBuilder} +/// A widget builder for creating custom ephemeral messages. +/// {@endtemplate} +typedef EphemeralMessageBuilder = Widget Function( + BuildContext, + Message, +); + /// {@template threadBuilder} /// A widget builder for creating custom thread UI. /// {@endtemplate} diff --git a/packages/stream_chat_flutter/lib/src/video/video_thumbnail_image.dart b/packages/stream_chat_flutter/lib/src/video/video_thumbnail_image.dart index 11ff945e0..693274527 100644 --- a/packages/stream_chat_flutter/lib/src/video/video_thumbnail_image.dart +++ b/packages/stream_chat_flutter/lib/src/video/video_thumbnail_image.dart @@ -142,6 +142,8 @@ class StreamVideoThumbnailImage int get hashCode => Object.hash(video, scale); @override - String toString() => - '${objectRuntimeType(this, 'StreamVideoThumbnailImage')}($video, scale: $scale)'; + String toString() { + final runtimeType = objectRuntimeType(this, 'StreamVideoThumbnailImage'); + return '$runtimeType($video, scale: $scale)'; + } } diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 3b793463d..6b3937be8 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -7,9 +7,9 @@ export 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; export 'src/attachment/attachment.dart'; export 'src/attachment/attachment_title.dart'; +export 'src/attachment/gallery_attachment.dart'; export 'src/attachment/handler/stream_attachment_handler.dart'; export 'src/attachment/image_attachment.dart'; -export 'src/attachment/gallery_attachment.dart'; export 'src/attachment/stream_attachment_package.dart'; export 'src/attachment/url_attachment.dart'; export 'src/attachment/video_attachment.dart'; diff --git a/packages/stream_chat_flutter/test/src/attachment/image_group_test.dart b/packages/stream_chat_flutter/test/src/attachment/gallery_attachment_test.dart similarity index 52% rename from packages/stream_chat_flutter/test/src/attachment/image_group_test.dart rename to packages/stream_chat_flutter/test/src/attachment/gallery_attachment_test.dart index c8c8d264c..5a1270c05 100644 --- a/packages/stream_chat_flutter/test/src/attachment/image_group_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment/gallery_attachment_test.dart @@ -2,6 +2,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import '../mocks.dart'; @@ -18,6 +19,27 @@ void main() { final themeData = ThemeData(); final streamTheme = StreamChatThemeData.fromTheme(themeData); + final attachments = [ + Attachment( + type: 'image', + title: 'example.png', + imageUrl: + 'https://logowik.com/content/uploads/images/flutter5786.jpg', + extraData: const { + 'mime_type': 'png', + }, + ), + Attachment( + type: 'image', + title: 'example.png', + imageUrl: + 'https://logowik.com/content/uploads/images/flutter5786.jpg', + extraData: const { + 'mime_type': 'png', + }, + ), + ]; + await tester.pumpWidget( MaterialApp( home: StreamChatTheme( @@ -31,26 +53,17 @@ void main() { 300, )), message: Message(), - attachments: [ - Attachment( - type: 'image', - title: 'example.png', - imageUrl: - 'https://logowik.com/content/uploads/images/flutter5786.jpg', - extraData: const { - 'mime_type': 'png', - }, - ), - Attachment( - type: 'image', - title: 'example.png', - imageUrl: - 'https://logowik.com/content/uploads/images/flutter5786.jpg', - extraData: const { - 'mime_type': 'png', - }, - ), - ], + attachments: attachments, + itemBuilder: (context, index) { + final attachment = attachments[index]; + + return StreamImageAttachmentThumbnail( + image: attachment, + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ); + }, ), ), ), diff --git a/packages/stream_chat_flutter/test/src/attachment/giphy_attachment_test.dart b/packages/stream_chat_flutter/test/src/attachment/giphy_attachment_test.dart index 2203de7c1..755686c71 100644 --- a/packages/stream_chat_flutter/test/src/attachment/giphy_attachment_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment/giphy_attachment_test.dart @@ -30,7 +30,7 @@ void main() { 300, )), message: Message(), - file: Attachment( + giphy: Attachment( type: 'giphy', title: 'example.gif', imageUrl: diff --git a/packages/stream_chat_flutter/test/src/attachment/image_attachment_test.dart b/packages/stream_chat_flutter/test/src/attachment/image_attachment_test.dart index 37a5c56ff..03ec5fa8b 100644 --- a/packages/stream_chat_flutter/test/src/attachment/image_attachment_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment/image_attachment_test.dart @@ -31,7 +31,7 @@ void main() { 300, )), message: Message(), - file: Attachment( + image: Attachment( type: 'image', title: 'example.png', imageUrl: diff --git a/packages/stream_chat_flutter/test/src/attachment/url_attachment_test.dart b/packages/stream_chat_flutter/test/src/attachment/url_attachment_test.dart index b1636fd40..cf12e07e7 100644 --- a/packages/stream_chat_flutter/test/src/attachment/url_attachment_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment/url_attachment_test.dart @@ -26,6 +26,7 @@ void main() { child: SizedBox( child: StreamUrlAttachment( messageTheme: streamTheme.ownMessageTheme, + message: Message(), hostDisplayName: 'Test', urlAttachment: Attachment( title: 'Flutter', diff --git a/packages/stream_chat_flutter/test/src/goldens/attachment_button_0.png b/packages/stream_chat_flutter/test/src/goldens/attachment_button_0.png index 2294ea844d5a2c166be1e6bce2df662a287362fb..096c345d2ee0f24108e345f42fb2b04907bf78b9 100644 GIT binary patch literal 24543 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᧾U=rjBI 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/attachment_modal_sheet_0.png b/packages/stream_chat_flutter/test/src/goldens/attachment_modal_sheet_0.png index 8c4b011c5299baef846af000ad0a21c5d234dfb0..c4704cde9fbdd8d708962641ceb03e99eb08e06f 100644 GIT binary patch literal 49357 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 z zgE(;{v^Ipta_8Rx+$V_%VvoLM_g!se4MQ=$4JY^7eN3@V!&ssw*^W?~S>7AA z=CfcRCLUcEKjt>T7_3ZypspaqKh)RZ_n>Fd$^=x8Tgf2CIc?plOt?S@9a;DHK z`1xaQEJ{j<6a7+}fTep}Yv+B}HmPq6=nZgRLDf;Kj*$P{>Ag3u8##{`l}-SmAJD%#J@^`F_{qtEU8@bepT?qbjKk52bL zU2b&nef*caE+IJ@icHO>rsKP@r7G-hhM)5wD?aPam=1hUJZpE~c#a8H4|`$Jn9MA> zJV)B`=#*M#3*{Gt>oq|^Ye%ia72M_Z{d$*YSkYTN%Qh)z2SoUfvuY&07%J+tLRT(H z90DzWqT41WF0Oi-$!vft01lSnNQnCB8V1Vl;v@T#9{5TzGP|PrBgS?nP#mv(!$cp_ zFee>9Pe_TjXR2w2G8PC!W!Ss6NS|r`;cY{Pq|;_s+`yg|`{JkkGxu?P)S*xaU;023 zN~0M%F0V`FQ&|E+4Po-Q`^B=_!|;J#xpmzlLNb5BiR_l#5Ae_^scNflG?flasDi>5 zYG*7+$e=Td84AW2CUioTQ#GaF+`VsrnaKG;CGv3J*PA8r_KZ(s>hsz3y&u<>e7pkv ziKuDys#Uds!4ASJcU~|46N%Y#OqKY&Obg(ep;^{Ps`gE)pBs@@q~wBJedRVywK5v%!~+K|YI zcDcouAwq`%d)sb*_o3!KZ@i>LGC|8k%QvzI7&y5QvA4CY5ozXlF^!qXD1auW%DQ^Z z-vA(i5r{Mt0k5u{v-bWc^jLB7V+=mF52O$fNi(#I>4>lZlr(2?wl_~+Lum>H9yrI6 z@=vQ7$|Xx8w2-w4#Ygv{n9d_XlJO1l877lm%MUi8ZLQ6(L7%cF$f55{&iwCJeE0$U zTN85$0z90Q=Fge{{I4nf`Bm%oz44bKEWm+Viz)_bwRjB~!TcTseBx?l2W=?4K8*OJ zvFY*x>7iHA`(&3mJz0GAd!UZnAZ-+i^X4eSW^Df9WWxvs4&!MTNBAfjC=ehq)Wrg= zJ#K$E_^8iLC499jvZ^4Ijf z1B^AlrZi7z%g@Q+e%4obHQZ50Tkm_v8B}EY>?RY!*M;Qv3PO8xnF@fba0I*i)hp?h zNK(XlN``8o8-z!hNZ70}V)p&p5c^6`lf?ze(X-x?{$+u{>gdpug#LqPU6smM0U41b zNEo-%VnhrA3NOZ5SM0#B;Mz1qdIb)a;qT*vxiu+yRc1YRl)kkf&_8#dP@HqRl&}E= zosd%L3&pGc!Zp|5>0%MEBk6m1Gg5wO!1QywsK_l!7P=tlocamvBW_LVooAtWT`0ki zA$WR_{&yvgyetPHsBI~(vM(y=wry#A=Xy{OQxqwgdMZ&&e4mWy_B{OWbibj$>3hOU zcSO?y@LIuqR2EKdCG^_9V&fR7vLI41Ad2D+AxYX^DV`<}bS`bt8M>%~gy<^q#II!E zQxLoCe^5E_+u#+KTap`dpf9!|A!Fgl<8S=&n5LC~F!jT~{rUz44qubk7h-rp3@-@5 z@NSTn?cv=pyc>phgLE?phIhm8ZW!JT!@B`jV7L?vmxAF^FkA|TOTjR#!d>wHdt$ug z)gqD3+kKbaF~w`r@{vQhXU+_}AzXFM@NY{B=I}L%ctH&B2I(3Q v4DW{jz1>hfvY-ay5$;N-OI*)K4VLRb|;2UT7=~pf@GmcwoxBp)Oj@&sC diff --git a/packages/stream_chat_flutter/test/src/goldens/clear_input_item_0.png b/packages/stream_chat_flutter/test/src/goldens/clear_input_item_0.png index a6503af8ffb4ee6e3614c7359a6b894bbb5b907a..53e98a8bc14ded9739663d6094d587e4d09c0774 100644 GIT binary patch literal 24062 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 G`F{Y&F&$O_ literal 24076 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 TxNCgC4l;LkaIw$d?|bo|{^Bp( diff --git a/packages/stream_chat_flutter/test/src/goldens/command_button_0.png b/packages/stream_chat_flutter/test/src/goldens/command_button_0.png index c294b279eae99d3f3a92964295b048de7f9701f4..0674402d2a22b1175ecb86a85f9564cafd509421 100644 GIT binary patch literal 23302 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 literal 23312 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/confirmation_dialog_0.png b/packages/stream_chat_flutter/test/src/goldens/confirmation_dialog_0.png index 9a2676adf78817fe28ad0cdb89903e6c93c67f49..55b0c8c9479080ffc3112207aa6c05a456f765ae 100644 GIT binary patch literal 56197 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/countdown_button_0.png b/packages/stream_chat_flutter/test/src/goldens/countdown_button_0.png index e18ed82d86e61e7d57fb09c9ee9ff53e0b15409e..8623c9c36221bb933bee4e3916b222a992df1183 100644 GIT binary patch literal 24785 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 JalrEGzW}Iw>|_7{ literal 24794 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 V=`!}{oN&l(bAqKAV;lM0{{gX#p#%T` diff --git a/packages/stream_chat_flutter/test/src/goldens/delete_message_dialog_0.png b/packages/stream_chat_flutter/test/src/goldens/delete_message_dialog_0.png index 9e7f6a7389377ffa7f7cc7aefd8b2481756e51f9..e144913d46d45fd10b658e3d9084185c5a45f0cc 100644 GIT binary patch literal 69258 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 F{{uo3sqp{+ literal 68100 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 Jl9xCf`acG$?wtSt diff --git a/packages/stream_chat_flutter/test/src/goldens/deleted_message_custom.png b/packages/stream_chat_flutter/test/src/goldens/deleted_message_custom.png index 36f80c62bfb6aaa4ea2858f1180d58d2ba9d474d..5bb1cc015f47fbf7055c8f06805553159c1b4137 100644 GIT binary patch delta 57 zcmbOv(JnE;k#XZjr^Q@6N9Wr!XifOMKJkE*+hjq;9g`Ed-Ng_8XZ~u?Rm-uhW)1@o Nc)I$ztaD0e0swza6>9(h delta 67 zcmZpdm?Sa5k#WyPr^Q_2rLWJ+SFBnkWB-1~-C0~L5!rL|9#*6b=UhgYt5SJ!#QW~UAyY3r=Hr)_?%N#*uI5%3kHMP ze&#gpJO=akWejFB4b3LFlG8A^5&pH#=Dfm546&MZ06uKAIeF#+4g9#$T=B+W_F~T9 zPF!$|7;Z22`#Q;1POj0bKV@@s5n@cqJPt*s8-)Y@#Ei#lVdsSbkvolCR zlw(uTm~7XF`NHE*6tlL%JXU^QSAKKUk;!vRZ_Bfe8BqOZf73WNLRa6)c^l7-c`xA9)(imG8WEccI@Tf)BSWt*Efw_!X{2?=_7CKGBn!gPReLz7v(iC{+z>_t1cIDnip5@oubU_2#ueA+Msu898PnDvLly|?7DrG~f3z}RH_Cjs)v9tPi>%DSp0WW)G&69T7QQQ^ z?OWad%b#}mrnNAxy!XVK_m0pTWQrGs?J^Lyx_<15xu`S>nU$Z{|NZjLh2hT%+8p{L z_T#Nq6~W_u6{N`_Nh@v*^^eVylbhn1H?gexO_yYylBT}C_{3rD1TwF zLBry$spqQmVeGZo13nHkG~BeaNKwOv*mzY@O!&qEr&)P+b%q$1od!p@uG{l_R>P;f zN)0F`xPig$*-Tmcn|(OVVFk*=LOTu887L1|p7tsoS@ZBlPCk3eHod|6q=oKU-Qj=! z@sc}CaZqocv^A4t#c95yY^A5TPue}o9%8ocean21GAy4rjhQ25*tCB*lMU9)`8GU! ziZW;Vod(Av%8Kf*I34GS*U*sDl;&J@F;8Znv^hD-LWJoI zCht=g!o2tG;AYAzj^q9Sm1_@Zl3FP?`g8=V?m&t7r+?uz+xJsO3fXC37esmWC3qJ< zWvi|+!NY5oaTgxmyXN6t2AR=o9#-^fuw3)7I9AlxtRv|sy%EzUvD~lGp{eG02MDuGmrj8Xv>S!G{X>4SP z;NhmsE3gF~E0&#ky71%e-5)Xeqo&RgPZs;?R4StN9G|tdwX`@5nR@kZTph@^{>QZo z>{1Ry*O`U!NC}0RNB22KtHe)IjBMKkcPOV4Lz2wQB7M^UixU~JA(XXCD0?-qQf{B{ zq)B3;n4lX^c3xu{6P)HG#f|@=^+_9~;EiY0E`y6I6lah=_%?CPz|P8E z7uhHSZ-arEDFZXoU`gGSkuLv()ATz)G1M)r0e>K65t~kXWiqaL_z;$~K$-QC%bdxx z6lb{Hh0_$L47~U47Jj9Jk47#PQE;yVaF1wV{4sTMQiA6260iG1aVYgg#jEO{mh#hc@(&g{6KpoD@W4P_SJ zHvnvEG?H+dn<*HBaoJ_SrcANmFy71V2<4d@d$FV?$}-YtNB$uB-iMHFZxop^_q_aSF+rnFWZyA_4d+*KW}@&1Gkm^G3K5`&bOCr|GX_hZiUmV zo!TC4oY%#Rf8Lhs#F@$B|>al*6`^m zE6EcyzjxWT1tDd=Z33&Ld%={|)>XpdS#8F%);|lu#%o;PIc9XNyH1>qTak5AV%R3|#BIsTY~ndTB?}9|PYxC%1OsO-7&Bj>PyFc7_rdmv8K$U;C~TkO0@r zdXrhl+F5UFk^19Z1;^K}_%YwwPp*A0*WP=X5VLkko~@P4YsSS)9l@_1x2fDiYtbO=un#S6PLqCuF@i2|Og67Y}dh7QtV)CxqNbR9O?u&@MtEf#w0RYU& zHG{6fz`c|-j-lS}Nwo~s38+p$MFI@f38+p$bpj0438+r+Khg=7Du`?=y8pHx*-`IC zyJ=>APRH0K zv(&|54Ksd$sp2Sx-+sGSVg2fnKaBV;irn}9A!hYdHeeYbC92_24s zsIG&A>F$qr(yfO^hjbMP7HxTwdOA+uoe8T0wUsy*WsIJilAbN(y4T5}dVIEaXeibh zU-D3tOF-nxu(L_~vzh9DKQ}%*^!ufr-UW8iuj}MY>$$K8gi@_$c)HJTe>YZ>m(<>} z`d;F#sLesF6-Dvaeq^S+;2No~wHy(>#U^QwQ&UsJ;U>m9W#xlNe-B?xvuMrAaU>h! zaN8Jb&BMjyP5RzrFTn9i?{coLx;Q*)Z+E}e18q^Su7&WQf(|SG96o|%s^y$ zK4t&<_3IaU)BT@gD#ko|gEh{l#w$MI^t5~AIN6|~mTHwhBC;;ILNnjqVz@P1kh6vM zvaqnQ9Q-^E36bwCa!a-I`StEM+lhUX0$o=xXlt`9FO4lnG1o*%OR~Fu|8GbW+ZHi6 zIN05}G}3v#r<~n|FHR}ko{jhS=2{+iYRvZx|D0vfx~nIEMKmsiZX+?$*VngX=8=j_ zu5z#r3xlAZ|5gTplDk_O&f~RyKd2$UIoT{ZHuivsWm{;vTO(0dRZq{Ijpuf_MzQ7}792{Kw_U_i6BzVW9z(As@rDgRT^RG3(ZzsfUAaP}Ix-U8q^knCj z46@*LjGwf^>mT16jp)!RD#L{L2E!j;KYUKoNL7wbA`%5;7ANY&oPJ!Xudm0sySr~=5#hVHjcFHHP4&Ws ziP%(+`Kb}rix=tPJ)g6!IvI~$IlYbP*naRlroaCBYoy4bB7{F7w)Nf)Hs(|JcLc=6 z#fdpjTw|4XKE8uPhBY7{;OMnaPZ`B-Tvm*f5O$s(ZBNL9Q0@8t<(>7{_YcKfXKsA$ z?JfQE>{QI_*T>8Jnd%I5HJ)c>iSY39#=LrUERbEA*~!W2=;b$_{hh@giVxIy5p4V%kC zj~YGqSYBc(A8XFw7PeeuPe~QEXnD*W#3Cx->*pt_i+6K#8*Z8GOxeP%6t){}(j#t_ zvd=LJD{E(y+>_nmZ064_%yW;HgZ<8??PsMr1@sCSqur*oSjBGaRgRRPS5i_+7>Z3! z=G(NLxqiSo&nya@VrRbnh;L$I;>*ND-?_QDLjnSU|Ni^$A%6aVSFc|6fBxX{qB=^N z1>FQuif-~_5R4m5fq~0mD}qA`!!4H^8XFY=Z{$sqd97!@f6+`glyhC0?HgfN z)6`_d69fX7gs$2$@`-sYxfU!=wQ3Pm7lt!x&Zjc)U#hn_@oF@=I3eM%da@>#Ma2Al zQ)7!;vQ=jhxr9#THOtkRy6C0H&V|=LKSxm6TR~8OaP7`PK7cE687pK6l9}r_UXJ5d zjzGWVUVjYxa7)c@28Qxi#uXA$3L24;4gz{^lMPMz4pwDFq~bo0#YPW=7e*ZgPHgwu zl%r+X#tNtPTz`Dv9*G(X5bf~(YwMnp0;lor5N*rc=PfME%-z8ndOmLRQwOrLt6gv< zMnTf{&ExeXQrS>yaTK%c_ct4u)+NJ44%u~}UE|~PU!DnCKFw+~Sf7x*E*bp4{9`b0 zOnUm!^um$FA1PLDym2bg9R`u$3*>6av68X?7NM!k#cIDj{Jyz1eQ`_bu%6Sd#aR$~ zbo1;k!|4KlrGb0w8WTKx*az^pEb(H}u|SKF1yTFqCda{qcurYa*~Fxzp4`4Dzr4J> zlJu0CcMcs++@J`Zzs8NJv@XbO#FnpXIa^ zn$Kqi4&z9_4V!no&{F{j2;tNE7aL)gl$$HAo^pwv!+pl!eqWe~#U(!7yop!qnvBW= zOScLZJRq}aM+<|E0=T1Hk6E{?gdI@=v35I^cX(T_qw*o^cd3&5fL@nJOq zmm*r3nZ1+FpPrsLYByN#Z?uD5im^s!-aJCaE$^KT;9hBzw99iyIe<=&CPUTYl}l}E zqzN=Gulu_GyOXfDIe4Q*UdB>}Nln>!jVwpL!`SF|9RR*`NG$yT0?hM&tf=VW)t@~}GMXCe{5Fm^06-LU8HW580~p(01DoTAk{sK;ub0>)Y!4x{?d|Q29OZmWjEg%MajzhzN0;gYMJ$od+beGLa3^9mYBU z>f`~*etXIy!nX6tY4I>{a6z2Xk|Cf2DAd1EY}$ zmtSA6I~F)nJ-hj*Gvz$gCG5~-yPN9%sQGJ8>d86U{_J*pZ5*!cW(7a+i>Q`ja7)Lo zTbo<9580At$NP+CfAsoTKmt5^z4is8&{f36S#X}MeZqn1!V}Ey_HYg+{MC|6*(}{i;a3y`w9_+=-i(@_aWfu&TWwRVi z7Ww)4$v-Ltxz|ggAzY@0k=MeuH^J&S|CyK@N>$L((z@S%rNusp8AkVqeDY&_93eK- zGs1L-iy*tl0@>dNe5qv2V|m_xL@iFyr?$5CWlBmwq097D+oW8?49LK7c+xGp-rTb8 zi*%5OtQP_BCNn>rQBvzFX+P{u?kP7Jxja6YlzO#Z)O}&*5HGJEL_=9ep$pxA*%0w% z07N}z`tz5RCzr`V9+mxKB7h)_;y178(7a#?@A|5oM>~KZclL2)!LEDg)D`JK5B?NE+SG^9Vtmy6FAbE&0RGA=GF$IkB<+l zLi&hTi4IKB&X$L~Yr4Fd!*!?7)ynrRkxBXAW+8ZkAl>q&r{v^_9aIW?oJZT3svrGw zXu5dWZDFQdwtA-3W8$-dPb?D`=e_MLd*}`-dOv^ue5Tt^&~R~XGQkako?MF;ETwh- zeh1h1=G(V#j#JGhbdAn1)5>sB!A-R6tccbM7R_*yh`Qk|`oPSrie|4$Eqs5+WMcdDe9OnbTA|4S0&>w_VMEHbW+z%^f#)y1o* zY^~UWPxHtiH#ETM}0e&rm_=iAgNz7?<|srm!z64vWQyx1Hp?edv|ZUpOwdat4~*n zM)6#OCiuGHhctlHk~_3Aj?I?{{Mvhf#3-AGOS{-F%rzD(2gm})be#EeUnqn;4*^cs znSm1WM4gHW-<@pho-)Ut08s&LyooEaE}6}t4LjZG;bCYAo5kK!9uy?IL=H-@(9Sad zKy$gFzWzmszhBPlZS6ts6EXem`3|P7$yynPPzv}wZC2oL+YJ<9_6SLS0?`phPVF?%gF&eLT^8H3~`8 z|HqFXj$iIFoNrYp>M%VzsB|{M3X+`<(dO>myX43*S8jQK#)mB;Hs2}%XY3cIvWu1e z@;tB8uzK;+DcVw4-mX?4mvn*!-%s+qY;I~|MAS{(=G*>2 zvsQXO&h95BQ7F9Y9RU(iD3=Mkll@9EegGi&>}*4^@FfXNsZK>Uvj4F#1$ zry-PrJ`bw=nS^%Dm-{o(LHH$Dn}iVaA|?XG5krt~id6_=Pq!VY#hEQ7 zN_1*Dhldol$W+*M=DXwEKzzRIQgx`9wV@OcGsO6l_x(HJ*(zE@4!|9XZI~hV(6POQ zbS!lHpMhsjCca-x+IQ++NlcJTSd)EjFDAbg;HL*zP*v!of`S6gS69w-GcjOQ)z$Y* zx7nzak->80$y5*NbpFB~E!=dqO=~XCp+oO;9JmDRcwN6fRM^#88?6S_p^v3LWOyGK z04kj;UXpcVu@g43GhKJI2!~mv9B-7>h9R2gUlS=wpux-OIFqhu-~54GSVmdMM@xDvEtJ&Whf%B?nBJxv zm0z{(y>13&fKP9(shOG48_#tK*3R7V19kBZIbXlDJ9M%EzjM!@mmC5c2aNaCD3rve zol%IqhIj+bZD4T{sz!6?pNuRhn{QDe$&4fxiSoRfN5DgWz(vyFmcoEPa!sOu8aPy;<5dN?ArT{uV*3M5~O7@9& z*V@F4wiP%2_!!4fW(#sjC5>cOL;Kpj#SDqo;C3%BH~Yvg7&YEj6SbL1 zgt{Lq5qkXkc}}m|!K_wGyzTDUua8uShdhNX+j2^1I|PdtZla`wGOGXg(+c>FS-MMn zoD$nuGsA>Tlnt4P=Iv$z@%e))w4Fdci0^8YqQ^mjvJWbpBxy@Z{S;%M(B4tw2GQ-{ zSTy=?%8-&vZE6E##S$^;ofD(^WAbAig+_A|15Eg*0gOkVzr%d)ec`~B-xDZFoIQ3G zU{))CXXaVjJYb#a@5U#gJcpuLt?^{5OE2KKkCCK}TN~7D3Dt&dcV~(BD)_mdu)8YK zZja?XeE3Y2!dzipe_SDJdka9es<3sGozdDf(x|8vO^T3|-a2kmf1BX2A#0gtpyok<^2|TWW zH!?CZhdKfji9JZMP*bA=CVXai>~yML;q!t5DbUtJTBd+2mP?Km&>0&WBlm{7Y&2vn zgq`zDadpwQ+SF_)0CcD3tXiL?SR9ER>D>3+=2jvoi1u-nL(eS;3Eq{Kssj=&onT1o z!;Gz2`E9_TyW?dSuLHdo1J1S+m~jA>OWrooOdCML@Nm7|5UDiJZV0Uljfj2^si{JS zqs8?4bswPQI4JG`$$3D%2%gzN$XBV07G|?sH|#$eNqEG5GDjyg zSrXNMVZvsH?Rj>D?N&O~?`UONfk6jC5gwl<{F7)J^;Jh=tq)%o1AGgWup2a%yr0Rv zX!UT&i5N$Eb2$krZGpdbY7=Vx-*3A-Inp})(RZG=7MV1Gx2Bre#j-( zFj38nt4cVXEv8jr!n^>rE!)pkMTiRlAL-6))We&nzI=K5uZ%5QwirU}95o{)?;z~) z_ilP+j8E1pob!#6gE{+&Vvd5%5n?> zI;RT-4jt;BFk#re`^D{T1F|Ijin*F-+2}fxY}5J0d~N6N1DE*Yks9VP^Nzz1ls~3< znDcXps)XKJLNqbcfcdXjGX46>3T|IMoKVVfy9&ZYTFSO}9H3jkIJkwQk+ArJJN} z6(Hj_hXa4AZ)mVyB6D(bp^nbb{~K~|C^q|tE&jIBLgZi z+!yD1bxwhvS{W%R`mH*WMc}vZV>3(3qJ#UAFD9u2 zjX_cgr1{dXA07!wM7Y6P$sI0Zc7p||@;j^+R{}w82zZN>O(^D-HpU|v_AY~-_xxzS z;Aq|uQJ^8xokQn(A2Dg4+Y(}%P~MGB%(n{E5tiI)BE%nUDQh3jvx#cW1BmZgnjZ^_ z#S_ZDyu0565&*f`Bw7wIraK22ABv0$#GG2)ing;!9EVzc&*bE!HIm$+Qvr9FY&_oy z$o(=o*&j6rte3~y^F_H_Gabp@p`ZoHf0_VZKn7JWYu>FcH5{_Az+a|yx+$v_yQ*F8 z_OjlSn$1&kZLVLEpf;{Q=A>Z=1pO!w2+NoK=l5QQRE$2Le2RpC`LW{Y!H8NQ&k!coxHR`B)k+?;YplJVTQBSQy{oC%!^2bxGKXMQt=+&rU(mq(&ygBF zP31vX#A*R}Yr*pe`gu_PA@W}deGib~k*b~UJULj>`6VU0!xzBC;js5Z_Ir4Jy&n~q zq006lL*B9(H6)D8<+RZ0mFr8bcHtNq*#JC}pdhhxxPHb|J9=ydpL$Qp|cqeZW5aY~8mw-5CUdoy9_92Dudp znduhYB|eeF!u%l>+Knli>70;2By7370XBU8GV8uLq#wT`1}+C~($pi7xSG}Y;1@3-Y0(dC_p0%sB zF34g&J0&?;QD=IfmauL3&_b{hWRIA%=>4y zx}CA>lZtn^JqMCNhMpP(&v<5J&xDD#b9Ql7#kM%JRy*FsLg;__#A?$*LIe7#RWnX5 z=O{;Qgh6vNC~#2aP@e-X*WQA9N!i7V7WsDBq(Ew_)cg4&�{&bCl-?1l3%ZH}dl(o@ zY(-~V8jC_0Q+0BWb%3OV+xe`hNT$Pi2%^AHuDi*~wTC5=IB#0t2_)DNL=UIJX-gve~BnBgvKMeAF&ms^+ygx`gk&J@+MJvplChdZT zMmflc-BqHUima_7J8QKZ+U+!+F99Pj{n1;|Q{qGS8TJ->C@5#6Ehf#S-i2n;{8o}eO3B{U7Y0RW_k7Xv(mYc1_b=^0u4&qk z=s&Bp+={z$k44m~gB7+tC-KC)q}cp#PN@6bH?p)i-veE$Gq$%(3yFHJBweP=hg&jv^*|;oNw>K3yt#UDVZ5dsJohL0}Vtr&N77q7> z`MfVs;o?Mfe#s21*dO(b=r2n&UU}GEBl51m986log*M~|h)QxOdhe$MH4)O*D2B>cb86l&{ zirihwRIwF0EwZD~(sG1C@O&#AAz%bqQ_=3i$EiE0O`QMQw!0y*7#h)#3<#k$h|0iT z$E2kl*|K%38s0Zk7z#CD_@>H}4kS21VFY9yH9zXJ5byx{?5Y^Ci%<1f93q3m#FrtW znFi`<=zoBq$FbQo5YFQ(Z0;_pl7_`JgJUoLpN07h6!H0vl z-C?KkcfS>F1M1xU>^{3MG$rG+0B1@O$MW`O1l@;K)?KQ{4a#MN$0b>ih|571XYiP- zi$329N_vsoygbx|uk2@myvM&1sM5T2DU61`X!cupLKkTRt<+8sjTIP*M<(lZ$0MSn zIfA68G@lRE0kc4rjjE2$O2vajpJ)%zkq=~TXFh%i8hN`QOcX7&A&8PMW%6v=!O94Y zBdujUAPWA_IpEH!ik6iH9C*mAp`oFlC3G=qV*Yq{ZAKh)tF2R$b@N4#3SRezz}-&o z@Wym9oR-UXIS9Ypo(y`PH=GN>bzOnH<}=C@*^ss20`7JGaa|X<+^rxxrwRu)4rDbp zHfFQvU4q`gV*`l49|5NTEeiVdsMWncfZl|u_Z5m%!{|RCRH^m_0DUFE(aCsI|ghWXo6aP z*ScrWPvk}?40^}g08vr0id)Zzs3lP73yv#o1)d{t&LS+cLLCUTQOoP==#UAVvO2?e zr-1|lST`hypfisS+G*B3J#nWSWG6p};u2uVh&T3xLVY{)O|+N^QsYqVbX8pb5C;@@ ziqSICkanK~l$$Lg$2x!yDFG#4XgwB-<#7FeVsJ9e;GM)mB`|cDs+p;jMa%2t#*;uB z6{DoYQN;qYZH+sDlv@;5a9V~00R5XNI0i8$jcjAX*0UsW5 zmv=5yb(XwTjX|9qpG$R;>60KvgSt+K&XGV5SPm#FsRkg&c10(HI^%ss{;T0WAQVOb z#URH#B0GWGShream(r<7VL`w}IF7|;x81~}ZjiM(=#S=YIY)&pBMDjP9L|LsaT=+5 zOnui>;7-)VvchF?T9^QnCLVLy$rMi)zPvX+$vF(%%^$5KIlLLgp46*u_Gjz8(nWgrJQa; zrCbVz%V1Xnynq&@mDI$iQzQ4f&*Je$aN@`s{z*R32*kJyStH|WmG5>IkrzZih{6@2 z)bqHYpkSQhlU;?*lfGbJW1S5EX$dA(_c@jv{&j}ham0SZ+LI&=Tvr!rLXussUac|K z71e&#SeLW3oL6?YEeG1&-IY&-tf8Nl(;K4w{N>9-Ky(N;jNhQPvIZQAha5jqh7zvBV~fngYc5wP8}Afl6d7l8hPOt+2sct4)y`!(o6L+cs`SK#=BkR?c^ z$!w1$V!*ZSh{!$Ra8};&V!%)&=Ana4=g#c}Q5c=O;@wf^#$;PAg-$JimC-XWkLN1U zG6cBykmpYdv?b?u%?#JLD@VGs)QT!Kg4mb&CVJ+AHK8go*NbMJE)ECy!b2=dG4!wyM z-46PnH+y=s6u1A4`Sc99uH#5%V>h?#>={-``{ec>;G*4;4jpIAD~y?Rf88B^rlUcx zBUxL={C(c+y_aklVg@Q-Pzw`KWu*#3{|)TN#|T(tHt3zRg!jI5m$CmUrQ_}8b}JQ4(Hq;CYLKd86t?A--Nn2K;D)U^YN=~@140~*we1F| zM9@txy3g+1A6EbC7{Cp#if|z}+bQY$dWE}PP2=b5h1CiVbiWVRa>&${#5{NfIYsmJ zHPx~yAa+t&R-IAUBGf#Mk8gn~P zg$A7o7>uYFWOh_f^gzSZ8@ha1E^RA4&o-MNWA|St{v;9Ea1| zQKHfvOCCi|g%uc2mTEYK&;t|%?JTe{)QDz0a`_)rfH_YM!#%$URn9Z$;+mU_tGDm0 zi(ZhcuaC&v z@IAG{EA{8bVKAOUL^L=2P?x6NDc7Os<%w9`z#HU(0W!z(_|RL8-}k*CoP-i>aOJeH z-F?G$?#(@2UyMF~`gB9u)DMxAe(Wj3>WR}OEUN1?cZksFc>PB{C@rj8iMK&RENM|sL?=;1`HJn zs8B$Kf?qyBjfUTbpymc@ZlFd3H5$MIR4AZA0Tl}VS3^OjS^3Hz{n@)CO-{9bqK0MV5kW3%L%B_K#c}!H2m@bDp~k#2r60l zX^H=>@F+F^Gzf!PAASaR;=+n0{P$cRmgyc3Mq>-AB+L?a&!HWgPM3<=g)U DG{aZ| literal 33581 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/dm_checkbox_1.png b/packages/stream_chat_flutter/test/src/goldens/dm_checkbox_1.png index f07b2a9de2bf0f4336d6ee304fc1e74ae0d6b42f..51f7c436643b38beafe8e3ca2c319a0f1a78b361 100644 GIT binary patch literal 33425 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 bd<;jfj`H5WDDsIP8RMdyk}U4*?Z5vQ0c-V9 literal 33436 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/dm_checkbox_2.png b/packages/stream_chat_flutter/test/src/goldens/dm_checkbox_2.png index a5b1eda7593d6b2382ba7b43dc2f74ed62a513c7..5d411f66ce245f6ae6cb46f649fb69d2b2ced80f 100644 GIT binary patch literal 33242 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 literal 33252 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 K5|3W^=YIjG72eGN diff --git a/packages/stream_chat_flutter/test/src/goldens/download_menu_item_0.png b/packages/stream_chat_flutter/test/src/goldens/download_menu_item_0.png index 2b5939181269c033e344dab26895433c85a99de4..b1fbcad840f622276c95bf1b3ce9a8e320249b85 100644 GIT binary patch literal 27768 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≤z9=_yB_{ewWibZM|EbX)A2h+1~(>Ufm^q!3>~ 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 literal 40338 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 Bs>%QW diff --git a/packages/stream_chat_flutter/test/src/goldens/error_alert_sheet_0.png b/packages/stream_chat_flutter/test/src/goldens/error_alert_sheet_0.png index f484ee2a0c74aca9f277bae4ec33086c718f4bd1..4c1637736dbef709064ed3a55a4b19ec5ca7f593 100644 GIT binary patch literal 42252 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/gallery_header_0.png b/packages/stream_chat_flutter/test/src/goldens/gallery_header_0.png index 3c8e020f8bb562d587a8eb66c8478eaf3348658d..eaac9b1143885adf634ade0f903062cf04f64b4f 100644 GIT binary patch literal 37165 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 literal 36343 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 literal 58698 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/gradient_avatar_1.png b/packages/stream_chat_flutter/test/src/goldens/gradient_avatar_1.png index bd466f798c3453d1b47313d8f33bbde956e5823a..4d3ab3b6e8e1f06261dc20be9e179b6d23e2dc49 100644 GIT binary patch delta 36688 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 delta 36722 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 nU(BaB{%aASYZ*rVy?6|Ro$LaxGVrS2r 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/gradient_avatar_2.png b/packages/stream_chat_flutter/test/src/goldens/gradient_avatar_2.png index d7d671c4fc4d937534ba5532417daf5a5b817d7d..30fe9dc9f98c1703c91e82d6f9ec90dd07c9a963 100644 GIT binary patch literal 58676 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%0A-KPCE+Y-wg_Wf9;>cAy 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≤697L?w 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/gradient_avatar_3.png b/packages/stream_chat_flutter/test/src/goldens/gradient_avatar_3.png index 5381c0f0a3052fd67f973d87b256afb9893fbaa9..6b3f5cdb13945f18f87a9f8efb9d9a392fa1d5f2 100644 GIT binary patch literal 58953 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 literal 58956 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

  • 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 YQ(Z;*sqd?4d~qzytV|m&-}&Xg0DR#%Pyhe` diff --git a/packages/stream_chat_flutter/test/src/goldens/message_dialog_0.png b/packages/stream_chat_flutter/test/src/goldens/message_dialog_0.png index 1a7faf9cc65575a22a5f8394add54b3a52d757f0..68abd020e53e224a3e21d8f007922c4daf6cf118 100644 GIT binary patch literal 44372 zcmeFaXINBO69(9hV^$PVk|2r-3J4-mqK*Uw0TBsG5)hDVi%m{rLb3q_i7En;8W4~i z6ljzvIR_hwO@@XhZ=Lp=f!SaC?6ZG%*ZwimmwQjBQ{k<*>M~wemF4&BWZsFvVD?MYl*|vTAR=ASgwD>3dv&r_F{9hP+4a+cm`P25V%h$KV$7TENrx?r;%w?Gi z*B!z~yNY~%l3B~AYV{f~+TQ!~z)>F6eGgc+HCXO^9>VSWY*&l9{o^w8qYo^PI&5P< ztbLNRU5lr+^~U?`kW2R-9oXdKv2QEyzFj`WH@ACUXbcK_*l_?WOv;fq(HH3H36K|I z+gdmw-TQ5+K=AdIPrG0p)K5m$fP;=yu0vX9E;f2tb-?bPaZI?bzKzpvuDeOYoBp}& z7GGtws^e&V%)L>{RIL2#j$k%-9VwTE{@C(2fBeDo&uupqAIWy?Nd4#Q9U)qJD~{qn z{`dV2Sw<@(2=mX}9?JU+>g3iR7P|-!Z~yn?*E{vFm~E`YY6W*p;I(mSoWi4~V;de%+(p|w zPBDk8Y#Xj7SJO7@O*I8>Ph|U3>z_^B*E@79=^-)k6s^Ym`qqXX3(IPymujl9Ct1_2 zPkhMgX{!HzeI>8dTt$y9{~O|biXfB03F^3E>*LNU)6q6dP_H^~xOy#uwwaweTh<0y zB#W^p$r8|PkK`u zK@$^NZ~OXsi{Dhy83@r*uU`Il7sb8DX*FI_*Xz2z-re=8>`B7ZHQ22mz!|M{87(Vs z>TE~tzP1#RL?%Q1WPJXgb}o^tWb)QH=B1a8}7`w6AO*Rj-S%*h)sLO5xuXVx0FG@bB70|IeyM zFFqF&pFtYK`omS19+i!4c=%6t9=r8pDyH>H4cY(i z37&TSUKwmqsf^Ndc-z_8-tI^;f7Jiy zzZ2bWoW67Yu!KF{g|a*oAtq0G>B%-;eeSPyA>VI>JCsxKuM#aRBD_<<7bh^#zFObA znDV10mi60bJ+>z@t&3u42d&1+hBG$_e>!nATj2j+4 zN!z@Rh{p@pQEadLmCb{LXE<4O^x}B71Wf z*IAhH;S-a0*uK7s$<5$4HCvixw6?AL7>x6N16JjA363g0!kt-v=I#;N=GFCW7QdCz za$fgk7y(*?m1pZR3VFSqw6x*w=TB2tH=GU&{Mvo}*XLy(t&1BoaAtP<2Ip2~{B@%W zg>+m!#wf*FL&ll6m%UnSl1Shiqipd{m&szu|+!L1;SFLa_+?}&#cV5 zPZo-QxfyzeqXV}W;X~?YcfvdPgC#~y_hf}8H zm(UZ1q4ysA>wP~oty@^KxV%FkCE>ujG`@QX%W28`r6{c131*L(+M}RS&6o}2Zp}RU zMWHY8+Pd7%mxTJJ4tV|N!PDPm9tqjFsC%y;>m4t#V@b0A9gIHy*q58v|9jhOF1U^G zpE>Ch*uUJo|KHo^anSNbpZn4hE;F1=-#;M-R%8CT*In-W@FV|v?d|Ih0Q1*|NjLbwBkN%t^ZRy>-;(*Q1izKwwRo;&YuvF!!#+#mjqap8Ia|5<%aX+xrad;=bTv7XmrE^ol*$JZ0(^Dowu+9T_{H|E&}%>H|L zNQ8b12ZZ49TXR4Pzs(AS@Y^Z;b_yT?`262@3b!A!_JU`n_5xrqzatk2^LN|@A^Zj< zAcX(N5Swe!ER5#iizgY{+s|ve+k|rD;<;0SqZjo}NO;#X;ZB;^wQJXwX1I%mTAyVU zukB0tWYyP}Zdxa(G&(U+en*f?at}Ok?BVAlP6c|iODmKgd)*mvy5*gnI@i_JotQD0 z;$7XMqN0>{voP{4;Y_PT9UUF)+!##nr9vjt(>y#fx-BuLP*D(|HW`G!jx{rMb{3b5 zR<*RTapr=;jwrvndfAsRf9>A-P)kdTQe#R3cPmp%@}feuMu~$zf_kCjNR+$wVUk#p`oAxlXFnHTG5P@p8HKWT{HlO zGa(^?!I}V%i|$4+dQw5RrEFlpWVdI@osLhlEFftC)fSviq02eEP7cxQFAzWwb&dAs z9dn736;_(CjHHBwk;Hw8cv8JBJit!{+j`#xt2KWdggM-&B}zx;mtx}JXCoO@XOWR9 zy(8#NYDuA<1YEe4v}fzXY$vig2&-NVje!d79!&NV-31QwUG~vd9q2NK1C}>cslR&m zpDpb~xk9mTdwaV#nT$iz74tXYSSJeR^?3OBf+JyL2YwCJAgE+%Y3X1NC)4`~&E`CB z-H6k5f+M*5q)^idM!zeZi}&&K^9zZJV$cV9g+Hjfb6~JGDgdqx<>HYvdVRAufs{>( z3!LW-U0u7R;W13jC3W?wZs&=ziVB6{Q?P_nsDfI2;EohX@)jkcq|< zhWn9o0m(;AT^)_Zt6!)?-NFNOC}&Q<2AZ0hTHD*XBtfhmn%OQ3_t1R_3DgUsn^4{q z@`qAGX_*g$B+}nAM@Mq~_ew9Hfz?r$#qXMeEUec-SVY9g%}vh*20C-0{gdCq!a{3j zCl4A}l!LmYN7Fx#z;^Fz>FN3B*-tpV0O4{3q7;ndI~=fLFt2P2j(YBQ|42yi-YZ2p z^3UdJ9Z~UTpz>eC--Y8Zy3X6 z^7FRH<9}j2cA#DXj~$cCibJtxR4wn_4fgD?OiA009`@kez6o=y3WUnQtFsTCYSlhd zkYET4k_4j>NPsKtyqpip2ZIkUS#c!xTXo*S9i+Nz?j>VmeGA_ZZ2j5bD~w#4kD zLpyrL&q8D5>RNzi4sk^LI(bKw#XALVzSPm#c^?mQ`hrHd`gD*TE{g83*4T>i__*%i zLWH90PJ#wf7jVm4!fja;9TY6~j4gF1rb%X@+4qO9p-Y%6uhGdi2*#MgW~xw4x|qp4 zlmniRCgoD?G~_I}5hC#&T4_xPQiz&MEjZ9=u0pVc-bPX9KQP5@R4ZYcJa`tyG%Xve z1PlCxmU(xpurTza!BwhTH8P5(?raCznW%Bek2B~n&_b#h2UX$HAsZGJ78g|~sN!AW zu9bpcT)hSsNtx;!`sH?t8>w#M6u4Dbq@*Oc^z*7KZqjykb_yVJkNEx_f5A8>TJXA5 zfnL>V5KJp9)N_LR{*}{IRX+tbS2e7Q5R-l)j?QZcKJt@ zTw)RuTHD&Za`B4bdp+Wb)F})Y`1B5-GdpAV%T((HK*2^(5x@6O-8{R~p|PhV!R9fA z4PZbPE%+d$Txw->k3cMcL3H8a<^8pU6f*3Oaraj0AzVjspm@hQ_f?k+D{ZuFOuj}@ zPe4RO1a$%~2V`x^#mU-PRJmU9jWr`SCu{$D`0i%#{48oMvm?PJTID&kU(ru zk@ibSKxXCPHGtGoG#1?K6!PkHaim-=eSJQ(T8>E6yVuJY8tVm40?mjyVr6Q|iChZO zp){%vm8YhqsXD>=V_1CBPs4wy4Nx!OFn#5ssSovP!44txP}gio^$`0(OuHC(!3V^k z_)(k&-d$W=90fq|v}dr?k#~fJg;C8VR<7eyT29Ul>cJhS9vm%%Zt&sMbz+n|O`}}t zak{}ss&r+ji|ww=MB$S4@D3RKE?2nYCQR=Tbxir*Ic~TX8=;N1cIVf%yQJpidOEn= zd;Q!JsBj(Cl4;^ex!HGr{PoY#hll>3MAu6d-TUflC93GuQb@T}Pl`nMgetmcHBr)R z$lt@dFmZT1i87jAOVv%UUk^X}arY#$om(auR)%tsR@2&#O;2(d+oc&+KP-hLIZ6 zjH;0cCz&B&!BvIYkQ=tPD_S=k2NQ?Dafa-1-<|fUue(4$??mF8&$spkuu1bGeIbM* zm!S97EEGa5pQO=1BaYR=!XhmrWAq6K{Rjk`ZF@fvSLS={FJd>rao0^O9Ra1*8*q-< z21+2Bha+hW?+`FHGdp!y%H@Dcl-qs_3r(cj=Vc_;F7+u$xGr9naG{)h_3D*^O6aK? z0<6-UDlJV>`*9s~QiMk5!3cZeNR#_P9T10S^Cv5vBDd3SDom+ZD z&7wv1;T>uKksK(Ks+~pd`VJ5lSQK?zuxqO;aP9d_*{Q{$=l}&3@JDG>e?*}HCz@kB z2x3)Oo95H(8)-^J28&S}StOIDY}V`wW_{x`va%S|)v0d6sGNEltP;t0r(sc?Dv?hi z26(99$RkY-(?7jBQkDNs2WRUdf}ozuHWlvhq?nj~_|@gAYBF+D7?a{o9qC93$Nh?m zl`(Nw4w@QcFcj;^BM?DsCYO7^ziNqfz@@XGGUPIycd{Ryq&_uNR}vCNqQbh#2cVa3iw*8iS61+|fnEbl;KCiA zQ?1EDBId3HI-FbK)z##_x@b@9FJc^~AUlWWNb?F!1et>(&(v9WW*G28*3Zl9wJqu&w6V^S2YEFdG_O7nek{~n!wUw$6 z&?Iuc1eu%KdF*IdjtT&TRB0Kp0|3!&`E^RvCSCn|OX~iE;&42d`0IHFAquwfStjxC!L+0Rn@Kcg2p1Jd7g4_{sSz4 zDiT;gu~!bZ?@8SDfDdM&$o<{oK>_Q?@*S7!n)oC~r+r}STrhhOw*{Q?0X6{$Mr_oR zV<&P-FL<%}?~Mn|Uz~kOm7#K3fZMFyFIhoq^t5MrKm;lFc`VgJC!5AqbqW?!VmLw9 z!Vb=I?pA| zKJxmZco&vSFS^8{2Y3YrJdZ`PGl^vL*&7Gi7h&H`)#cvC)2COAW}U2YV!K5iL%2g~ zV(9K(1Y@Kk^@QUremz9yGJSIqVF~K*iG2a!&kWd;l9PiXVXb#f!vCfze+|haLNUEt zlP-d?%A-6HZRB+>-pCrS??h;|jRl#avo4*Rvm4%FRNHU}ZR8%klccFR2J_URueZ0? zr~ViQ^Cl2aB6jB3#+dpR^sKGU*O923#DvE~J}WQnlsD^}mW3QZf7NzO@#rrJC8I+k zba(3LBj{OmymsGV|8yY?CLMKw7GJS|yzWt2R%+^1w5jv_H8LrKmU|$HLvZX&!}6tN zr`0xCaMf8;FvL$=F}IqLHF#*=)S~23gP%8+1D@2QHpu5Ug6TLFB%pZYVF)@il1p{* zj7C&Bx0l09CQe_p5)<^OA+~Hss@@nR;?$#1{dLRgsv8Kw%D~|5EFd@!Vz{4PGUR)p zXKzj-DNSCBWP@Ma6-JXPAzYn*y{Lx|S>78_Q;<@xI+FMQKGe#PN&BxslUtU2s7q$F zt!aiW<%-bI&=j7Ogpm{+XR1XMRTwSSmWtLispqRjnUP*g2idiM{(J!~_o^>)C;$8W z=E*@2|1aUmhnEmez+jA*$L))Jz{eGm=RfyO^p#7mV*i$<9_Y(o?{^4{WEFM!{kTg> zE-G3W2tyhPI!Lu~O!#v^0F>IbWvkKgaf16wi+lO18-s2ZTa>%ozQLN6Bi&A10Y+(L#pz>v5)~*#Rm(_*AsksiDa_O}h=`#J5CIA>) zF~w`?_JdP5YZuliQMebP3byqLmyYhgq3FEx@uM{V6E_wGo1gm{KjHVqJ+pekR9SU~ zASPvZ@D#0VqfAL$pxw>A6?K1+mrD5bbGj#N@g%Xq`!AMO>}JXx3%Vx;mvA*X_?8^3 zq=Y`$`0GEB8gtbps3#gWet16B`*6+Ii;nZXo``Wppl_PpSbLd)C)rD{z)3bj498{r z`l@ju2xF*aA}~bCbPKT161RaFbPbXbv?&bK9KlEIWP!s-+GGs?5W z4V+u|Fkd&Pa8-BM6tQaRE#wWgrOWSTlSoe_l`bBDn;k-q2l9vTOhvTs8?DL%|EA@(eWw4&UAD(Pp?U@#u4z6wz%}F=t z#yYZmUc7igCICffv`n#2xTC%huUBw$q*J)VGJTWgAJS56ZWIF+*V$SDg7du8@h7{P zu5IB)o1~cSFNS|VoS*M@R(bs+@ynMlK#^GqTD1#?3bqNO=P5s5I`YFxC_~X^X}3Nv zH#*0uL>+#(O`p-eXC?UL$&(+3`e%+IdHYVPmu7XfDxAtG+`ieFODy0&^$HU`mTXRmtUwk~f z^WuvpV-P=(}KZT6U`^r>34c>@xXxcK<7F!}|C0 zhW!->(<*uMO1CiV_8$Axflmmgn$A^@O<)TiJMRHVeqVzdZRKB`jgyv7zL{B(l)kpQ zR9>{Ua$90$wgFpqFql(sCcu4Ja&dlwZ4a~HSLcG%v^#b0jF%T`?bXRBy~kjtuN5RP zz`v=dv~us8<qmMz%XI{EUP!N_2zYNG(j&>1oC@UR5$ z6UgUZ-2~Q_+?aF7I$O$ZEkg zp(4E^h{IcTNY3E3uU_59pmXLV7XSYJ@qwz>FYT><-Megl{g)1J@u5Ghz+%(((O6l2 zFGri>V1(M>KuyFU@v#iG8lhlbUFK-{B4*oxDnG#FrAar^jq2XXs>Uggeb6s*vrJc7 zX?30NiiVWE?t^M{ev6(?{_)r=uS59@JFN4NSrslVR`M13rWutJTGNb-K0jCh6?p){ zxY3xbEy65h&gjQ1){|g2mi$gBtZQcJ z3A zrm63m*{ubS8b!Izogx?BNH-~i^}pcnE_7WYyKPO>NcKj;2;n!P@(c?z(ta_D!DV(G zLOv08?WgQo-^z}rme8avjpqd~tt`5xo7Vc%9@9f)Wl@OqT7y>VEd$F!$Lc$+sRn{~ zz8{(Ec8(eXV~3x6^PFGt=^tKOsC7SUo@v&=VGh)efraAYYk8UbL*I|ai6v^L_-FOF z<<*Zg;&sK_Gt6G9B?A{p5TD4Wd&#Nd4;ZD~mx&EYocZx%Z8`8nMqySXWkB=N!C_Wd zxGQRtK6O|h>afaMjXY~wGs?(sD0AiY*%Je`QEb3i_*RSbNZ55^<66z)SdBbcZ_2=i z&yFjeHTaU3cCSByOyE!s4{;b9ZL>8TZB4t8%+ChgC$d@JDL6dYhFB%r1R*1WZ-}(J zTTG+Z*JWqA=Y{s8U>|8^@H&M|>0p%mVZK6&;gyg{>#8sjzE?b_{HsM$n7~B6efSD* z7tCAT08OVeDlcT38L0L-XFEU`ZA&*Ct~XXq(NjgI$1H5gxHQ(nD|UbADt)_9&@HkZtWgDJ zH(LH!$?K!0JRFRRU=lDXJr*Fbf3M_hZPJ8UgUP(;M80jbVle(jPkIduuur7h;Ua+o zm^R=}Poe7p20kzGiDfm3xz^|#P2Awp(rcx}l_fLX<-Xo&N>HCF-n_T8WUn;KF8bSU z+oRsQudQNh&JD^L7#L`@1edHkia*eMY8 zRea___yuKZ;0& zj&+E{ku$9eEQpjxJLnWw+IBMwo_w;G?G^v(Tt}Z#V)7?%2uY;{^WAi4@<90H_zzTv zmG2ShWON=)lb`cZIb&S0R@S7sc9hhk9dKB(4`P#FtWp>Oyw<*Q7Tfy-A@}7zwrG{8 zlFCdx4uyoV_OW1!0F$t#gYu?`slM{^_&AgC3$;>9I-}Wr{x@12p}s+UMCV`2Xw#ai z>dP#|mB@?~8d(R#5fLd$@57{VGthaR`*kU{I~|oG#Dx4Mrl0ywZQ8uG^vwkZxzenj zT5^j%!%GgOiiCmJrjbm*j46+hT>C46(pvNu?A3GzCrg$Hej?pk<6;4lb9Z!bP3la2 z@`oL7>)3aZ&ozzotTpE@E9925gqPjoX3pgTwGxL;-^_Sg zv`S8yij(eoy_m!qNwFUVqlv+rg1o7oZRo8#;VJF0kITI5G!m1=*}V^TfoFRKYT_?R z%hf}#eO>1yRxQK4Dd8g@a92u!$AHhraGfu3>NxIS8zIgqwKST3uSL2)@MT|W$>Qzh z^qHFEkGbyPIk97zEd&Ek)=)JH7rWu~&v_#V82qrx5D^oV?2MxUv%ir=5)BhWvQUkt|J-ywaDbz7@!ksFThdH_jYOV3dkn_pDM|l^YcZL zd+do5C$L~YrRN62BiavIU(`x7l)VxvcxrKO?2vtrtG&jBhfklr7BD63;ACOT>aw#) z(#bhHIEdHH6JCYHykEi0|KU0B1wp}>wb1*i!_rt*A840fA|6Rl32Jj?i01P{2@eQVdY-3!NoSv9J+FS=P|NYp77FI zOL}&;Xj&LJ<%_mXd)+`IynZA;eG0*mk0e(4>ask^lmH4UaKoA)u&tz z(()UYJ{@X^QvvnDfiTMc{4wSQ{^;rg3wi_V>ZVXZvln9X$P;W~(7B3V+`Mh|?1VE4 z%nZ7Mq6A+iHM~&%>Y@d9d8)h|xI?z&o5l>w3bp`Xeja#1dHejBzLz3zjwpyP&+yA5 z`@WwqRci7yuv0HYNlE$yI2*MQY`|p=ybe>azMEtI;GWN)MyL15ZEdM1c&Q*LdAuvH9K<9*DED_2@Rt%x@3`^;1)=Y6Uw7HDv+Fqx z$B52U38d@QW@Bwm_}dTH=Ttevxw3)8HJabPIF9U+M<@G;b&m0+Zh5>bBpTQ{*@w0? zok;?KR7A(K`wXi>M5e_mY%iJvvJtdwJ$Wqr26$_!RZ8ETwzGNTN--b*EyJwAu-Ic$KYr%>#Wi2xAd0Y1kTqp_8^Z0(4##s{ zij|sNoL`z7QyU!58BCcX`tVs7H!Vveq(Y}GTG;s`5$Ej_T>6bO>cB+NnqJOGAg4=a z4Tz2i&cN^Q&D&n(X~>k4TL$ecn?D*?5@#D!_%taaOEsc>vlOVbaKG1Z1gt1H0XPvH zmcp3-^|lH+L9IbP_Z)G0UY(Eza{mtIBmoGX_gcOZ0IEcZN;%CAX%#r(G=yT6BVI6{ zeGS?Qh~a_;PJyHcF@Ld}nU>#$k}67WbnD-#pDbYB_<>Sw?gh z3f<_B5Drh%NTiw)b*{-L3LcZo4;K@;ciT>0Mee=*RdMjO>3CY&ei|hu2*k5v&JH=G zBmpe(k?8Pyy2`H04UwR|m>`vHR5*P#MXz9}KE}fQY41CqtpG6u&~5`xe`+;+m`qAY z#CwCy$JQ`FCa^MZ!{$7mqdA&CQ^?=l6oaxtx1})#$SaIwWL&1daZY{S#`Y@r3D9*P9hRp! z4b!WIm#jy91(XABq&M#sOVTUgc(Oa^L>fVsK{v1tmtfr$6|}Gt7=t4<*8$SI)1Gld zMyBeu0B5)RTEVpvdXXL%+xw(u$(=iQR;(;f!@{)zRX7Wp)r%@96nX>lARMyER~=dE z8_%2Y=T6E0Sk%`S&*$GOWAA z`dsxOiByYI_S3cR%B*5GPF~4u(er`i;!~BFnX^*4KPw913I#TEqiy_mzQ1W)fUHh* z_WQ+XShH%Db(dDAxjKM4Avu4S6Xba*%hvBhO{CtTrbPSKq#8L$g++fpyJ!fmGvLdY z(|s>hr2GI*mrefo7E!`pI2P(a^x~8S7+!b?vcqcPbY;rZAnq3F7uFSlr>3C7!yz>f z;)5{W<&<^LMTA5G__|EeU#nnb6Q8RFX5CG7V1-*F>7-EV97<_z+?P6%<^r<16}mkk zQO|pLQ_8&Y>#|A$@~bnoYwGdynP9$iUG_z-uuJN~j4NN2m3q+;d)C~}f)yU`7I0mh z%_e$t6KljLlD_*tn3Dnh{Gjy*;?NHM{IZMh%AQ*g>Hs@?L$p86n>YG#2#V7&p4TGX zS92K8O$RkD2-JuQ@ItWm#UVJYEJ`5%U)%el0DqYR|AGR&b|W z*@Io}V{;DxpxR}x4oJE)g7A6U`J{`T_ZW4Pk{qJ3|E##a0rv6l^^z_Q$8u)szLuN zOwh>h1NP+lGjKg+fO)h>gv!bki7iEiC+B*KTv5#D#}Z4m(oK{erx;HW%dk!AnlUwi zDl+*UCVQ_*ADO6&HiiAs)ukFtZ%amOR8}|F%I4X6`l>Hq{frUU+ zCe)(yQoSH9(n$=FBaIV@0EPg{WyyhI?;k|e4CK2?@wE#hi77-dFU4>Ra8bM2R<8kt z#cnv?HUAXSzq3M&lYp>HT>sQDw&-zNbNKmO9%VA|Z}BL81JH=NX;cvyAC#GYHUgy+ zfHyd{?g8^Rv<0+;INr7QtN4%$03ZZ;`+Nmz zomXi8dkbAQN#drO7b(D#KO;_ zXy9$IgHE_(pa+zmyBtN_&44!214&=)kEr+qC&+Bq=q-!Y)U`32dVZzl3 z-QX%>5NDXu=o|$OtkH;eZPHUZ$=*^c6x?mOjk~iWvGc)}8Kcowk;)|1Hu&os6BKAN zyEa05mjsyym%r3vNNEl*0_wB%AMY&=o0dLips7hX)Cx+z)K%v#eZ86V1HjFdh`hDc zBH7x=*Q`};A8uxv^WQ4=02J`DBL5RRP;1tzT3R9etBa(RGGJmA3Pi$gU6Cn;KkjmP z0B%+XEWlxu56Ln_GM`dsjTF6z_P24+6fz~fCU7RP#~GkQpU37Gd6tsXUym7gNB!)$ zHQX0(u~rCAmz@aK2^SRs-;f_!^cFYKEs4#~h`xNRaD|oTkZ?xTVw;WtFiGLf8n4i? zpiL|PNY3cHdyE~O*d0jGlSYs)#}~}yHZH8K^sH4oDM{Z}0e01+;uiz=H>{c-Sly*- zo28_$1BisMTqp`aGFm?1F#qkZr%@AJP@+IHz>=4u-Eeo3f9p~q{pp*fQ{_?5L`49S zQ7C-@wtD&yd2MgXU$}4~zT6B#?P(g(H}cJ7pi9bIEm8{T1}k>%mYnaj_3A@Long}> zMG^ua%Hc0I@}V?`_L$sl-MEj-KlW?fg!RY) zF#TA#+WXM?gnw{g;O!>Kqy*eZ<0))@60iA7julR_J;hbPv<6PuB+v;F-_x^+^k5h7Q&7eJ`zq-s-?|!1YL(q3^Ve3L<87gS zT|2x$+hZrwZd2rHTbLq|Yo{dj7u1)3UR9(rS&@vQmv@@`vn(jYcV*P;ks`$HFBfo* zITWw1ES1xUk3MtKf5B?kdemw5()ibzAD%g^n_JX>MZ@Wqu+!TEamW=KFd)q+1zs-adb2+QM4zcse&Rte{R*O>)pb$}+ zqt`xhyYAiN`1$v)-y85TInR}95mwxhIh{2s<78oG=rXdQ-W7Fod1PBBQUB?K1 zhr&b)fj~O$?+#q@RHtn%M-6D_Ir6!f%i`UFWAkBm=P`C~pygUn5W;d&t;Ob&akz6qEw=NR}0sHar?9q>keURq> zZ%KJqMUq~gEGeBb@;}D`xxqcRRWa8^mPpanX6?RdvHhnsWo2dKZT$`n+Lfxw$aLl6 zYzs~6-(U9XGdud~V`G9k_svgN#s$?6%FhQO7c=6y+<#8l_F|h8>1VI3S<2YAmz2<{8YqdCLgxS4p_V(vw~CR}we;)`jEiy-Lg&}#uUq6@ItqqB z-KrQ77%|U^gqRR_ShocgA*MdQ$8m*2il#@t7xan2bw;UwBJto`APIUqz}O>1r9j@0 zfVvSJ%KanWnbuZW-=^bKehM`HiDoCj4A+_iyDucOBT9*!T~p{9@HNjGR*#$j)_R#T z<=9ePrh=pTW0wUHDC>FbdGqGYk=*;k%(}Vv{h*(>9741aWzxV)o->9C;JE1Y*EIrU zJ_qy0b1g=20A={Ve4l1p3YooNxyNv{P0L(QI3 z2WS%zkLC01#?;IU4$HHWXMCsLN1yTW9w~zy-Z<{3s%dp6#Wo*&fRtKdRFSXX`ar=h`lu z0#@NlzRBuxRSi4s^Lf=vr1z41?1pV0W2C(>%@4MGE2onpH>yoFs;Q_Cr7I}B$lIGX zrIjmq?syAe;XU~;riVLo)H?4~Rx|b46p-!YFc!;{D!d$EXegct)6!y#H%Sr)!dg<) z5$6I_!32K6J@bY5!hHx0xa62EsgQW&H|Ds!$6<_I!)yv2SsZ%*W;)vV?PX5@idfMv z0hk&ee(C)E!Zue;5>T=xECT0%Df7iNR|Ij>iGLuEwjDb*s(AydSMHLp=4}kyX+6xk ziiNj^RZ!!_!d=v6e*R!Pl+O^!+=nm}q~m21?rTep$A+6v@#^gd{nJa*N@F(~2dJhX z8JU>R=0ShpfJ{Sd_5MMqF_`6;uQ4V8_XriS^v{u;%V|@CF9V7@Z+aK1;ay$?|o(6$tsqm!JD?8^fQR z`xxNTuT2trv+_M}0`D%t$@TOog3`%}7>$~L)vjqp!TPE`8yRVS9x*pEyFi&jv>LZUBKY1-|0{P?` zeskSCcxKlEk8jX~*9WOuWj5Yj5t7+HD()m_T6NeJ6sfR^+g(W#vKwtB7rG5b{G>4->)>QF(qe+6KKDLrWv(MQ zZw^YyFU97YH1&h>+>BeVQvvf=PZWEK;hTbJ`Q6%`~D%`a&T) zDTl&P(b8hkT0}S{pI7%qOIi&Sv?dY3|t5=^bivV3YZLh+8`f5SiYIRrOuWhI=tdXGW z4HHDo(pJbKr5R@Br9cV^44{MzH5ve@EVnlTZ+SU6%VCO$%6mD@f28vdM(xh-OL}Q%lH*SI6e)vcl3q`doh5Pf*7)>z(zn^#{Sq2OSF6WRai zQ%(J93Aag9BFGnk1U?vsRprq-<6baT7p?CHWh(|++KK%1)w=t%JzH(4NwJtkQ@aEX zcqDFxo8{6k$U}9h615{{vwjC)kDol1+U zVA?hXLR8GV0Pq&iPz;b-!#sImW-yrBL%n_5hZxqNjQEpdrs58hvT1$(f2c_d;YijI zv}e63a|Ie2&+Zth!NCtff<{R5NGV)2*MZ}srRBdrlLC`|$oTunsqDy4w)vbrhY zA!l_l-0{wc{Hhpj%py1A=*s_TgcvEfj)wwuIW%%a@JqQZcVH<$T?-^AB` zER?AN1(qFj95OI75t;;SDwtmc{FTIG_I3~z&cS}7A#6>w&kS;IOH~k$%ucXUpu&Wo z6||2)Gy3mW@ypATn)6JSXMl{lerYAb-a4p#3>As187<)0h?yueZV{vBximq5Qf9%u zrq#4dOKr+gQdXN&9{F8pClzMQR}gsO>FQ8khsZrppAd0-Wr9n&|F^$`H`5F~=bwZ0 zMGlL_n$N#`Ke%?aEB70#=jz0o6wizvSIc4N(dU#b^UiD=_m*Sw9IVo<+-c3gMzI1g ztzp!+-~B^;!nZaAEhoeBHPb-C6>Xb{WhdXKS{Zj#bIfa_q88>Q+237$N$5||el48& z>u8TsI~kOLOHyWmJba$(y&K5i5Xw7>;ff>A>OPGf-k~W+Yl z>N18udG$5K?zpvbU@YG@v2^O3?b(M4(pw|MjJN8s7w*Z+2WpF{?|(6rvpXG_D;ZT) z6Go$|5dQcspZYI4J(@*s(`gZ2Xr>j1I_ppnnd`G@EON8 z?-d*B^-VJE4Wck5heE_3so9m$z&#O5WuNKGQFJd0Z@@F@rrTMQj z{EM2LgrmZD=@e*zMymj*og>lV+9Z{R%AbRl9DnFY7$|sxcn`0>LyKSI5*nc=pmYlL zs=$0Alja}H%|3sH>}o`wX{$Np!-m0GC}d6kC=np+g*sv5O_a5LJz5|@koR>sM+k5i zH_C^0h4hj4S_H7usJw^8+fP(ID~mOUrU)gLC_%GpfQIjH zPI;2>37T+@qtvk!vX5ZR>gh+vx&KPhd#&rK=kQ~pRPuvGOI2$1JbCmr(|2az@_ZTj z*^Tn$17?*k^<+Ua4*_`A2vK_|dX@rX6rs+_CGSbYN>^@^I~?nqrdL4Y|KP!c#+%Te zb7@%@HF|ip#61q+?r>W=A#LB9`gRH^*nahyI{B9+nzS+YdlJpVh*SX4M(uk#8MiX8 zGVVr8JC&%v!UYtYI(`wzD5VIC&TK3}3to&+yJ!GhsHq+)2kItjgV0m(%(j3n5%PEe za&|lkpT~=;s`(>skZex@$t?z0LOZfwR;Cm}O@;2m(TqEF?BoJFh)}VIRYFaGWb!J{ zu(||AUbc&ri&pKUhXJnfkVC;$iA=3bLp9>Kgvipktl6eORO~3(Yif71f`9@vKpY>> z!%lZz4w+;*;hIJ_Lpj(-*s4A+&{ZF3+RFTaXBTO{F@}j^|01+*+QzaEtgvDv=U_6h zsPVQyJgC%=Q3J_*kGnfj2TF|5A3mHM3_Vm4o6QL<=J`+5F02YOI7BZ9tO0+9!bm!R z9voXDC7tb{>fYP9@P1MarZs}%nO6$~)H;EsvQ^&n5Yc&h?kkz4IZ#9$;#&Hi$7KmD z9Cjo=j-%!v+y~jh>A^`<`k+Pa0jLg%ZB&(yT}>)V$-wg~zT){dyzmqB%^W+LR?bmV z4FV#!)*MF$jA}F9H*a=-9Aj_Hvv(T09RZC+G85geH-)lsK|q0QKqzrgPG+Q5f}IFc zJcSI#RF|9B5w()yMo!Egj4UGHT67OF=s6g48&vGE@;UwK3QLrTP4`y4Z)*+drU6O# z4*Q;;{ttSB@9#En#3$|smc<*am!qZt7RnD4Pxwfe>%6Y&wQDa#?OP2z`|}IoZ>zsnJ*J)#dhyl;SXWTaYkfYjniw}r~T14xEY8NYD>nnd!dn8QNpR3!LuPdco$sRT57oJ)P#I-Zx(TvDXSJW>`R$u{H39ZY@f=ZZs{zo`5%BEdTmE#YIFI zRThD5h5j8TeQtA?e|iCKq{Js6M1^&M9>=u1KfdhA54FLKT(@J$ytr3VP#Em;YzhL@O@kgvg*dk1~3pKNNW*APN0>a^#j|9ZO-p~a3S6n%m6jy zox-hx#QhqSNo?p9Wa4w2zRQ&CZl-&R;ZEj7jm!|$)$870e%ZL7qz*N(?B!{0D0cWU zAM}K*Iv@U&e>~gS+7SL@K+NW%%pQ_FsDzyrHyZ=`z^f0i`SC%T^FLFd_W-RTrbZet zKGff~@SD}Y_nlusHDDAbAPK%Cp^=;r*rfCU*p&E9#cbx#E%dtO{_u;HsfVO+#{myi zRV3=5mQv`?GYq9~AV~R_*WAklMea=E0a6UE6B5g!eC7 zV2Pnl*GXcM&aYUjwBs~Wx?^fU+a*GUtwM1H72gw@cw@G{NGV!fL}1SF^Mfs3GpMf) zS}yY%i#l5LoOP8ilqGyTHBL=I{g~AY0K<4Fl|iAALEn|Ej@&dk6dD19Bb~?FfOPzt zUP4nH?Y6QN>1kQM;|ywdy&*{ox2^F5w;JT61a6xMG}4u^SR@Zo;?qJPju}ydC~BTb zGpQbd2GaoOK#F_t@%jR1re0cz&Pq6k*kh5z@2YKL#Asi9;nADEY+}YO=G> z^|-Gkk&>Yd8<7nOPTx?pd!$n}*etDz#FPwbNtgpZsuf%Q3UG1-YR*Aj9PwRSjulD{ zq(XjWtEZ`c2WTFmg<0uST7F2LP~$BsH=`;Z@O|3L!z%6xjpPH6u_BV(eQo|*qXl&7 z6&k67yC*hld%mw>189COIpt$GuDK0V)aJe2Q5WQaP^Aj-XaECX4Xk~Ye8FYV1$YQj z5qsDp^sf7t3F*rOzOiW-knA6A@V(uH`CeU37Tue!s>XC7IarNr9rlX+He#L z?7%+HvF>uHm7Krbq&ozseR)rdtc=`O5-FvKzBu7HGE|5Yl8a>Vn8vFrGJ#APt&D;e z%{+)NZvT72W3$uG>l0AVSJ-n4I!bsUmcE=}K2|uEaUU8M%eOErCp41ic|zEL$MN}5 zlAhQB+rO6AX=SN=E=J#6qyT&->N+i2%GE3QX=K5D6ZA}Nvlc?X!}i@^px5*RBE$!Q zu{sMljdYLog`nVJ90^HtX{(C<^;s1IV$Sv%7leY?&AFU|+0e(a3dvI+VXd&5hPfOhzArny9Ov;W=!-B2)pZcx{p zp^hw@ZXt9eP_*|#Apv#Jjtf~`0^AKRH|V6RZc#@{#r)R@Aodz^eJ-9n?)p`Z;Z-7p z9w;*Q5P^C7wq#!qx{^KLy@YzE@V!k|T4D86RB23GjJoNML;UjVS)H3^6d6y>9*zyO zUEP<4iuQG~3}uNa{{Fz!1&SZIi+D6Zp%-4R!_qLz;jq_nMH zFXt&ZcLl{l$L^`jd%Lcpav{8ekVYA^;j0}v`3+iH%ApKR2i4V=(520r=760}d*763 z(@G<1ru*1w_G^k!)8}pT71YFb6zcAdO-pZquBSGTqVr<`m~^8k3iiyPOK-ay@{zzRA`EREVaKBoKCeuql{Nt;`# zL;EErL80AK(Zyn6`k;EjBc+<@{z?RJ(r$kvqO_OiX2!`^ryig4(RB*wLb;0GTa%p{xBEXZiQev5p z(YF^wRE`1Wf@`FuhhwBAg^f%Sd8%vI7E^WW8ZT-pn;m8=hnFD?yYp2Hp|G54LM7 z?mo~dW%T8C9~jgvYp*3lr}#~0xmtiDfs8JgAY4=wKmjlg5rxYsa#i0~h3UU1q zSVHoMv4)s4yR@CQrNQ3Q)j;zT{MCs7 zXuc!t;>&;5vVvMufPg-S#X}y=dUVI~hgO6rDe>{DO;B)zpZK+*pANcpiv0h{VSoTT z0)%9QnjhrqT+n6xOtb}|2rZ7{tp+Gw_QqX8eQy|#dk`(d452fmaLEa}vmnsgmjZvC zp6d?PSS&P&#?`EW+vA&O-Xwg0N+n3kQj-OYqZ4$W693+I_$%XDrT(~ow7=L{*mk_u zC(9ee0))lT9-zoC2Oy9r1f|9R;5F2TLN{^wAlAhrD#0Aeqc^pieBevMHFzRH?~9xj zRf+%f@M{N!>uXe7DhoWNrceN3&<;Uccvpv(4O)LeZ%zo^N>v7sgpfi2*rDdn7n`{J zB%dpF(Q7v*jGVA+gwfTT6k&9(V<6gMl~9bvFq~M$CkW`G(6V9#2=AaqI&{)Rx=gzp zflef*hGGsqfH7YGx)nn?Ws7Kf%=vTBC?*VVXzfK^DqQb@+C1Hd%B_MJw?Jx{WBI`F zuSsaMVj4E>IwArLqc>`>fN&nwvH~3|3OaW`Z%G46Kx483BP`*}9>&a?st|`>pOrR7 zLS25p<5rL|{QrgQf$_%W11OtQ+^7sbXmSp|HG0I zRP4mRDs}~U9*-!&O-c1TZfy#zg;qW~XgKwHyo-SVHKgclN;*)pGp$afT-B`c=ClT7 zaaqU|67;Bw@v~eRlX#!Hl0bMIGx?IkLtTtoy|MYVG8p^g2o*{r%>&7@aid@V`glm7 zhyM5Zc^NTIzdlD)eyI%gnvKMmn!Nw|GJTwC3)C;qIDb#^TTmFx zZ;gVt^?ut0=C=dE{9p34%kHCH&UgDwU3;cdGPw26{0zrfTs$ha)!8cUv29ha;+<`$ zGDs1RQtxdmIr~^anP4Yy{OjY7Phw?h8cD)?@^+J%LvFu6U}t~!w1YU=de& zUwPFOkKcM%HXHtkqgChrgHx1I*_D!3E$2CQ$y|xSX{TyRfTYFcDEJc%t|UhfnO`q% zBR~HCzn>4;QeUOUc<4k*&|-&vbW_@UW(l2H&cwQj*-}FH( zSp_4BEP??8LI{NLJ#zwm`xo?w_u^cammxW4=9y=?=b1S(_c**ZEN7$(u^aPr#iV1o zV@>qMpKCH`j|T1;aAu79CP$+^s@2}TqztdtWB1UAyg*;y?e9FFzZhZt^iB@++PQRA zT0rhp($+6EH}RS^#`-jQe?Q(A8Y@IaZ|=2$9_Lvw<;k>B`NCy<+H7L_^+kj0g_^F5 zvy9W9^D23kwwHUJ-Kpe<;1&GYSLPYgQ7Xzg%9H`aKHkG?kW3wbJF?P`68yS+Aa^x(NBZJZQ z6-px32)NELqm8dQj@_JN)MO4)SfXY}%V(}A2eoWsIP(mXC}qBs#PpHl z6;DNC7n)v~wn2_;zfg<_vp|~M&-J8<2pjxdygt2Kn%$daT5C``X=%Io=mvSxs3um9 z6=AS&)Xb0F%@7`~$qd%?|5K&%OXbl&NTqYCZz9cH!vi;JuC`0|A7&TN9YLHl0ai<7 zQmOFc zt$GPcC#Bj789O+GK)R{*58U+*1N6m(Hb3 zNdqbUMjnSbW=2$qBwy`fldHX2DLHf#e;;}N$eH>CecEu_=r=?X`A<#%>5cJuNBxFR z;F+3sS3FPo1JMcY!qQ2a1mgsrwOgVVOE~kbov#{|@`B6E%80Sc7tW&$GTbIBw$9Wf zQ!bplBHY41Wwx%rONP`xIcmY)>Z)CEe**YAtLB!DwQFnFzxpTl&xf2!e=gpnU+;~K zk?gGJ+#X`b#7vDr&*eiFGCs^kv)X#M3;G_A9R_qRt2|9_mL@@4OP||lS{o*0Vz4m! zOH8s&aC58@zcg@TM#cHXaZx>XFa2W}o@&eEiY16MD7;2yLHk=@D5hvYWCK!gK;$%& zX|}+**i}yEvO9Vzi)Q)M+_2H&(Gm;+>Z+)%WK~U3f@sS@?p= zg)7a!zKMx_u$q`Ip~&yWQ^SeGx~B&{_A-X_uB&obwPnhqVR8JfddJsOubx7xdu!>oXs?gwB{-RCq9-@$t2u-J5f~4EYbK$36(X=W=ZT4FtMe)vdTRb!6 zq(U0RjU6{&9)CBL8R7B1u{m#0Wi+h2{5Ojd5UyeAWIjT@j{hU><6*lv{sI{2m4Dqm zzj2io-Z6fCy#l{yf|DKv;jwMsa)b?@6_V4KzF~Zg8AvIV=d6RGHZ7egS(ArPqi2!vLHK$rkm+8HrPbAQP z;rE(Q&R;clshC)gXEYEMiq7~x{5awI?zIG+duR@k{BE;KGwUpnWotw8zU^N*H` z!|O7LN*y1+vKnBdQ&@Q$so|8xI?+}h_l}T){z410fL*9LZCu$SJz+o&Dnnyq=jCGv zbgbOW_9v+w;C2+AW`a4?DNnSjuGN~v=ZWYh&}ZxM3HtL~36+}qATx;Cvg97&S1H8s2O8YAWkNqBl|5_cl6 zyHGf%qtOB!9oi2@ij_0?am(%GgOZjVlsuAbMrr5 z6=Hv$m-gTawaOg2&SX=&7xB`JjkLmnY<9;`qc~%Lv(>=K@5xDNUj;cCJvoUapRobd zm$w-775f-SLLobrlAY4Ju(d)SXS3VAWd}}{^J6j?X8aQh8hUOlmAkXPwKrzpyp7Vl z&S$H*2Aj!FyKIG?A%=Vm`dIjor3-!a;!Hxl`We-QmTu0!@bxTdCpqHtuIs zxyiv?v~6!|@$9;%Nu=VY=UGL(1q+WZl>-y=63HWB(Tx-JP!Lf;FXE^pi*gD`L#*F? zE0H)rIzp}kelKPpA_{9x(iLNO(I-NTw^BxF@2J7CZq~uEm*C%K35P(^xn0{~&&vHi zQETh8_6Ef0^a#<3wsm|%9LD+|awu-B4*{9CI_)VYIg zQl&E1^^)WLb3-Nrrz>3Y)nW>3bD?)E2u29!$tMr!D!#3jsLw3cHU@kelN;*YNZNF ziEv6uXa8Nw$;>}|4Q(dkmBl%12yKYo5h4jG;1cGD=7aVb#Ug>l$pW1iPK zOl=p}wEz${GD~YGHX!0P&-mozD0s=YpA%m6 zVG0<#YF_T$;nJ}Oz<^-y_X^f^4Z)U6bLTfQ*ld zj*blomXwic(o4N$nbiTWqmqznaoMH56a62*WS#r02&yte?nN-N+#Ay;+WV5K$1%>a zYD6TS_8o6ro^(GR=J%=hhKj;W{CkXK{d<*&*etu`C|J__0r9rxyTF@ik?A?Vaj8qS zD(b+2Xn~MRSftiL_2r-^d^^~d8t4J@-F@m%xz#675&TsRr5-D>jdUo8Lux4e26+^( z=KXv7@imu*VG*;tm^^5_)8&aZY>$#HaVnH;ZG&li3uM~aH7ZfDc_4%)joXa1X@@Ut zM*1{b{S7r0xNI|!1fNA$ty%?PnBLQKuNc;0dA36J#3ERnvG2T-lV_{5$v^J}Y3JtW zz2I98ora&8SaQ!hEIQ3#oJKK&c4XQr8y66pkZ!DlP{2@Y#nyg=4In-uAbXoQJhT;- zg89O&Stm2G9#9F3=+^C3*7rbPHJ?6R#QX%s;J!+0`PLTDAMtM=v91LsWm{N53$1-( zm@1h(-#2{UR(Y5T{*&JT4`1vrJplgJXVKdW`<#c+h>7}QU5otG;v{p&2Tfcsg+U5a}0o$e5drVXu#9FA+UBMX-hqt2g z2=VsFrvJDbd+IU94=n|%k(85b(MwZc^_8Ia$fH^aviCqlt=5K5wqDI01zs7XIik?v z!-sQ$bumEjN{NR;$qVRa5UOH23?F}FmsP_Wj z47fY^4fwX!&D7M?KGD)=u)2%^TXaKV&s14FC`~H^RxQ-eu--D^TQHDlYaN)z6~RP+ zSKPgOA+SgSHrD4_0J_LdNJgZl%4ax${mrvF81JhCJr);yZPnwdZz~wzN8Sm)C}G2& zVf5lTj!FduU5IIn0aZo*`s=T|p_dzmfEharhIx>Y;Rq{`Fz7Vx+9D|#{Nlw66wWE> z7-g*Pg9i^7KqB)}FEDub=1|rD{6{$EnD%$yeV1mrS6d#uO^1+U73T6}%j?$`s_Ijg z-G5|H^UiEb&e{eJiZN$I!}}ioE)+J?z%sc|SkhqeqXT&=0taN1EE{ zxfZIy^*{RvG^+XD6(y^|4a(5=VU#1|0xl0oNkTa-YXCv=ji#oi3V>c7>EMGUJ88j;=6KfY?Me; z_ww>G-y4GoR5XC>O$<7jx%v6?=NODt#e@3AfhoO8O&jITcV8gj$9eC~K;KOYzRR@S zTie}D#E>NaVO?DvA{@R|g(SXZ4}C6LfA&|0i$LPgX%43zwoarG6^9UxT&lr|Yg^^wq z#Zfp16b)f|Np&cYbaZqS=;cv(L_|m)s8b9ZQ&_$D+f6`1tvt^X8Q87WjF3s^H%#p@ z$B!S!AQ)%z2;Tmqo;}48jnVC6)@|5O8VUgwa92}9Lp(4r5LH2_cmGx%toKOCrl{u2 z7jI0vZD*l--G#?v;Tef_sHd!QteCJuCk!Qbz}}40P5W_o4IH2XDAQ*Fm84;FXjVUE zT84&%gkXK1{q2yDHOM8hzd}Bq{VPPcq^v9^E)M!|Z}0sLM1DY^PCVRo=E@lW z!Xf0w1PMqvJ%FwOi#SJ2iJfgVHAb7)-oVNqIeEiSeuIqGEu?O5ERM2MkEL&d!zo&j zN&=M80*Ku)$FPPPV+Rmyk(QDQ85kH46rctUxa`5+q z1PQwWs#R#3dwzd6pz% zem?f6tuh=Gl!(p->BX|oUP1ve96AC?Ny!H6+?4|w0Q{&5K_KJq5&}S;ON@`-U$}Tt z5dkKyv!S~?4lCmL-)Rq#3U(#GPI!m)ndmO7Llg=H0vJmN!J(GWu(u7;!=~ouTG)At zwZZ-dd=iJqNAN;OK+Z%+05J9d%Cl}*vVb|`4zzedM$5e_CJ@w8XNzdHWbMzN-{o2| zcy}2m^S@bGSU`^faA7Ll_W^;>2o7*9QciCR0%+6&xXZyOh(&Yc;NIV3*0|YIcEzoH zzJDTe853Gh?%wPGgkzZ5KwtTx7_Q2mKYMn^(9lp~5U8ciFzDt@M^{%K4tFW4&6zcSfusi)FVR-dKwQ9xw(aAP3$flo>) zkxaC7bmEcC2=&skvX}d}futgsq_LS+Sst(wvK9dx3RKy12;g?@x^KC65cLk(3WEFg z#2iCW4tq`rSmpxJ(l!J6F%uS~K;QoZ)_Qpq-rku2W?DXYHTcYUzclJgWI!{DFieJEuK~Iasq~Y3(03`{Vnp6v zXaENM=rwqKb_g>2FbJC+#^>`<=kEv@99ruz4zscZA#8@!#OL$-YBFrvU_$a_S_{h2 zF@-3D)}l2%j?T`zvBFQFUp4DY;fmTeX9u+`UhTxP*Z?U!KJrFPNt=vwP2q7O$Zw7JA%9f~%{mQBR9fs7+v^R5b3XD!r;xx9KdXJ&V;--SHX;P<0KPuIzziHZDFs z6f!ZO6Lp8I9LxKlB4-b9Gk|DD?}fYwNJyYp#L^Uyq!c^a$XOe5AtXtM%c(^0*fXPF z8UVJBq@N5yLpXGF*ml&2luIX0oH%e@LtUNeau~|}`G(;@c-N{88#bILf*0j`qMHO) zfDx8`E&WxvJi88m6SgDQ5?m{vSM;#r11mnT;sYx_@DCs0QG8fvXpFPJMVprKkub*n z2j#O%S2RjI1=q^gD>}j9Rvcm_8deZu2?P7GQa8=tV zW7?mTBjeDEQo$AQLlwL*5?m`^ujmAh`TpN^h_C0i4B?OWBy=D<|8T_ADA&;bxBmxN C_RmfL literal 43765 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 literal 48105 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 a21I12v1#L2XAb@2DN(D^l9~?c?)(NaFV6x1 literal 38907 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/reaction_bubble_3_light.png b/packages/stream_chat_flutter/test/src/goldens/reaction_bubble_3_light.png index d67e928d2eebe3a05e8b2f19ecad195dc7610cb6..3b9e6366f9f99b2ac23fb9257ce83273d06af55f 100644 GIT binary patch delta 1719 zcmV;o21xn(5B?93L4T-8L_t(|obBDeZ`=4C#_@;LFDh4??p>C&fQ2m0AqA)`cPem* z5FkKraN{ik3WQ66pkt?QF#=rjCuC}}IazWkkk&(ybSU8a0r-ZX(vV!b9Au>M5}RU_ zGbxhd_XgRnomj3v6lGcR^8&cU7X7jC7D-c7r~yzQIwXD60|L-^laL03kM;aOpL%7lTwQJXK#bR;i)pk-SrQmrUI=&CXFrewZ7s=hbik7ex`?xGoH%2tAX5>$Xs-RK|YyG;lC0D=V<9@=h#2|M0^Tw^iv!DFtU^ zqqn8iGiWsGs8lMW9%~>2orke)8A#%=h2FM5$Cl7<7<-$!2lt)G5*99mhejScG91Nk`b%t9Fd(yoTvQy74BRcXM+S z-6%pXUqG|j#K#|>OLeZJlz0nMtyWPgm7tVD7=|boi{f?MyLS(d9z9ArLSMiCn}Oalu{^_N;{_=#!=#6u3VW10K{<@1;Y^Uik?4ze~wnG1>g6Rj2Qxc63jm1Y7+K*7xwW-5JbU&G0C48anWQ7U=lSax ze|^~t=KM$Ly|0>o#=N?&Lv3yJOmjM|(T-f=gI>?;ZJK|4+r~$yPapbmj^p6Yojdz( z+6}|N!oot5aqy}g<9AgsB51-g#7+dcGu%EJFvbh|B&f(8_^!qErFbrJ2d^zbjn9A?}SJ6~n!=FCMCthz_ z^9G#`vRi+DO>RGT<0x@3OG|(6tw7Hp2m+`>9w^Ms&0%I{X3xJFhJm@cxul~202V&W zN*Dy0wv0rahRt``><2byV=26}7Y<;(wIc6K(=TLX^cpw(&t zNOxECsvYB1yZ0-lxhooE-ra8vtgf!&+__(+HrFVBsHBT++sgBNwYll3jrDaEhM}Up z!Z1`D>+5QB(^H=3E8DgcKi|h;N#XK_?_gOLRNRH<@$!b<)O(jVG*GF0I_j|oGVpnr z>({TtbzNwB28L0Dv$26Fn#^l=C88*Tv#|lg=*8l?E^4)_qaJHuL%T%NFbo(c^b$?q z^LCzpgY8Q+E0xMbeEcNki@?8xX_|X30?!u;$mjFWb$wzl+l-H6-EnKV$VT^;-Dcy}Ah z2ia`f#*G^bJMUwuwOlU4G|inY&!lNI8gN|~^?DtP zi;EL+tkTa=gQ3a8|Gj~eKLII|PXQT|PXQT|PXQT|PXQT!2!kP!Lj`l`(xvzA4o@f7 zfj73kaN&Y-97j2hqi){3sb*$oMt-wxE+btI{)WeoAMd%-JHt8g%fa8!YPHmUw!=9F zzW|q`UHX6V*XPeG$8q)zMk%FQt=6cA=W@hL--F)e<*)GdH{Tw3uj!!E!53fLf@PKa zeh*Ea_bR$-a%En5p07O5SM4`#<+fTXj^jOBm$&V<`tj{s<$1ocZF}V9b2*x2-`fzc ztb7N{ve5B8=(@gjhx-_srXiclAqqoix{iFlfTg7+)M{7XT?I|3p8)Pt^sPkSrc3|; N002ovPDHLkV1mR#Us?bF delta 1699 zcmV;U23-065Bd*~L4Tx4L_t(|obBDuYZHGS$MM%pGLuQfCVszO+yxualM9_-U0C>n z6?*JKp*`)z;9mB)r#-ep@lWt5N(-L8D(Yq7`=u;ig#Ci0$w66AzAd=)Vms4sZGOy5 z=Cg;kS*uO$duGx!>FWV=vF-G2csetgd}1^J3PeYw_j&;8FO$&*N0I?ye@MEUJHK(` z1|}ybQ7V-%JUonIvDnRD*E5w$1+MF2d3hNN3k#@JD!m@5YczD>gU)Z=x`o-<*?|q@ zTUJ(9FgG`cg@uJ)kCM1VgRyNJ4<0;#ZQB5VFbom+K78Lts1#a3kkqd_QBvtNbWMX{ z7)ToibbaScU#V0uJw1(;f0dOUPnevdZP$(1-h9R1b20YJ0#c`!{A8OwsM>u_Bc)6>&<`SNA2$4o>b!HkWKVR3O001)^- zYPA|NmW6CK3r*AF?!K=mrBJWe(QGu3%jJ+Z3;@9R`1n9X6FV5&f3~r>xQIfb0N?Xa ztJN@+&m*1g>h<)A7X$%*+uTGhmxE!Na9tPIuV3%`(^KqVUcY_~+qT=Wocr#(Q+HJ9 zL@5PlV*_W-oI%v3y3;Gz{hQsMTr+ z!w|M@qg*ccdaPJte;r}oy?cjZv50!D20fKRE|(MiyyG~?X0xy?E9wXb`mhyZ$kZ^D zNjBc7^VVuLgsm2`xg1tjR&eFYl|<({PLYo=V`F0|7K;eO5T55Do6U;%asU2(JbwH* z>IfbE<#`?d_*XOW{YITPo6W-WJcMD0VzJo1?a+@R2QxW2e+gjcSy9Ha#HXS+Z{EOl zT{Ievs3RQcr(Xm7cT3^7X0rDqFs*h z@oQJlNB?(`)Vx6uAhml`saC6z=jpZh!K6|M1i>8U(xpp@?B`2=`dxQk^pwmShGF}e zr0cp}nddk}4rY0I8314!2K?Qt|D)*iEW@%ajE|2;9S3L4gP#?hH8uSGk7nfkCN;0u zY{J}qe>S=I*!82x!90Kd8~~6u3^W^!_A`KQnV6VBp-|ZOXO?AQVqzldC;)(&A58rI z?EYxZni^()h#m`&%)Ck|c%IjO<$8X8KGsaV6zipd_wV0hcz8I{O9PJMv=7Zmo{Bzf zh4`?w^H)mpR1|04&tDo?U0ucH%a;?Is~1$%f2~|Ds~`xJ=Xq*leO>v!uV_Et_tnPw zy7D|v1wo+7<#Oc5`y_0!mp3deEn#G21cC2kdwZM98$P4HSl&>rR&njxwO)@EOYHkF zw{PFZ=H@2ShJjoz2WMlWeN*o=3xWX7#zuS9-R9;drlzKPJyvX8TcT-M7OYdcM6*$^ zf1~lm63x-k(SdmTNurCupFVwxd_KQ#5xAMjz%)(hy56_9!@ng6g7z{Gui4zU2z>9z zG6?H=fiAqw@c*}&c)kxc;BPb0G!5n#Z!@V@tC*Ua>ic!PpXMG{u=KA`6ODA0kC1%gw8rD*&ghHXvKJpBjYPH&atL*&z{6Ji* zbkfyeXz=iVZy=HZYm*=WC4b~d!Q8xg^Q%vXr_<}u54J9qO3HB@rhG|Y_*_i8VtjL t@B2ulQpo0Vc=6%|rlzL8+yxD&{{bh`_)p{z=zstK002ovPDHLkV1jF+aGwAG diff --git a/packages/stream_chat_flutter/test/src/goldens/reaction_bubble_like_dark.png b/packages/stream_chat_flutter/test/src/goldens/reaction_bubble_like_dark.png index 86a7ae2cc632553584ecbb6d87e437937f493de8..af735d6a2c4b60206e23509f794f73675a937aca 100644 GIT binary patch literal 1218 zcmeAS@N?(olHy`uVBq!ia0vp^DImeYNoRk+;de{`q}g82;DX_+0y1hARRlUt;+c^d>2! zsBlPfI=MAXm`Ee$$9Gi?uQ${+Xmkm-FlQ`X*vrVUV^z~?*-a(ADv^s$Y_^{F<(WuT zLDZJ7%st10BkUbQr>G@!r}gdfZ8kmn|3BYd{7Fh?rd+nwT$6j-GJjr*Ivksrzbm`MG3M!luV;@{ zeS1^+IM?gt+IuPY#C9oU?rJkUd!Osc&!_I8mGd4ykFU$EnPVt-sbufhn%KqMlT^4R zlBN1PNpZ_e=Ki?*|#&4-ekD_mrrpL;Mp+ae3c-x0xuK8>7z0yi~0=i?7kQ{{hCzbj`kGG_gA;K zP4T`~`AJky@ijXzq7v8s|K-kC`Zn&pepI%`(!`!dL%A-c<8OYX=1*Jsxk~WKnUm)m z+BgnR-uv{=`G!}!+-9wtsL~zRW^sA7!gt2E%j)7i1&oARdRP>d9Zz^r%#6|O*jlH* zPWV&(g{qkmk1IR;^e0YV7w&O=b=;hW`{8S!x4Rq`{8KFcZ`JFlLnSLrPgMMRw)FJX z$QfT>-Cvisd%D>>#cRKM(+_AZ72x}3CHczkw!{*RA|5t=seE}JxjR3c3?CJ(tv~zp z)76(tKkDg4U;7ntrhogsOHDg69?KPd_;B&1=J8iwKDqIw1|F(li=35I_UF8AUzPnI Z_AATsKeW{-y8_E022WQ%mvv4FO#nfWC$s;GA>EN zdE3ROS(9E?Cf1uRTM}YsLyY1I=l+Mg=kvULo*$oI9!_wOkGYwR83+V2_wywXmox5P zflZeE)ZkUpa;#tyeej^VZiIHZ7&GyHB=9m=;5YyTTIJ|R_=%KOGG1~x58(yNY!l6- z9B-oSn5#S#ymS!&{;)MRUJ`t`;JMj23uwcq``WGU)v8J1^Di(fIqvSlLUeq`{87F@ zBGA&u-e@ProN#!{3+c)gj`VVT_Kp9a1N|wW!gjZul#Q_nsSUR%;~>hL=wIRN#I{07 zPb0KF=yzF#9s>C(vc#$(|BBtv&ry&Xd!JMTU>#GtxpOO5KuFV|WS95K(b5l!vV5Jj z6J%w&(ozZv+#cW4QjvU)!i_*GT${v3v7fpz*X14JAG!8JSZJ(6B`TQ)QBcH8tR~{( zgK7Oq=)8=HAU?u*_zNFtEJtF2m5CCfeQVxRqBi!o7zJrWBk`jR%8zzt%~Z| z(}K^%BBhk+a+BC9U9qS-;cIDH2Tw%_2!%N(?tkt48+5-CI2bu7dw-x<_3VUb;*}F9 zhU-lAq4to5|B}~M@zzdt+4%#84N{8OK+^FWcY09?{+#B?JMkE?0ZvQuXl)1R8_D=4 zL}o852pmoCjMz2;JCiZshW5sTpN|;!@Q_w$d@U1>xyyTgE)1#f8+o~=-!K~BVBKe}k*Z zh)u!9^=Kv1>ptj1`+{l7?yl}x>pWM_g}Kpp-QrCq8H>Y8fx25)94{|BpmV9O-!PT5 z_BGyOxRu`4OD1DMlFT%49!VDAugHPjP=ZD}>LVH;|yqv3PoUp!NP(Fkrv(pz2m zgvVfxE*_q)91y6(sC2_zN667K!TqV;U68#Q)5#jiB{Wtu+G>HDxv&)-YK=SEwM)ui zFw7n_sL}_QSDdyEIhJ~;+US{3i~rP9Q&<7ppc*#!Vi^GFAd4*z5F1KLN?%b2n!l&!xV38qr%2ZDJfy$b7I)O zoPorlcbEjh)4JR3G!?sg+Y)AdXz4NMP7{rATqK)yZIMm)zTuRWmIl2ZxJ3xPT5%0L pgzc)A*qmtPW7&u28MjD_tBRW~dG4$j?DB_#{Jeq)b@-^Pe*i9;pkx35 diff --git a/packages/stream_chat_flutter/test/src/goldens/reaction_bubble_like_light.png b/packages/stream_chat_flutter/test/src/goldens/reaction_bubble_like_light.png index 86cdacacc5129cf2eb0cc09f4b34b6753f0610ca..7187ab2d839fd97f9b59ab884489a30d80bee249 100644 GIT binary patch delta 1104 zcmV-W1h4zf36~0xK~ljmTxe4pE0HC#k8lf3#At3-E z_?=qen+C3N2tJ@`8~`ASVkoT;M=^91K`90A1C$ETdR$Riu}+KLt`#8!xZ0wwYh=bC zNfN|S1RX^H&`N4xs|wcI)%GM^*N`#Q7D^#Ie=>Z7vMiAqgFMd%3pRv+<#LItEMbg+ z(kp3WkwPaV1i*U_V0Gn}h@@9ziG<#~>}uD6cy zv2*=Qh=iU=_O3G=*>PCCp)qMo9Oh?dlpyk_@JPdU^r? z7-Qa*dzxi%b-i;eMred=YKTYNHdFhUf6Zoicz6H+TwGkdD}Svub*So~c@AlsRg?7R z>ks_#?OSiUq9|~4bF(*88DnsLecik7pWnaZx8J`2;C&|HJgWoT-QB(GzA;wlglMhd zo2GaBY&PrNb|`!~=Mc5cXy!L4G(x&U(ptkE5ORpi%gf$v-g^*xSVJSE>tKqLe+0Iw zdQ{20Ea^r0KC1up>YmLngQT#VF6@9x_*!l z0?OqZzMP)^qc^?VIOp)=$%NQD6XgB;QJ#7X`P-DclA)ykC7WjJh)aBc zaRu1_0g=%nlMe(Xe+&^q#=C@!aTNJj860e_lv+=WX_{sf%jAuj!5XqX;U$V9BuO&5 zNibvLC?Opp=JPmMqD|8roBGy+Yx+T`gfB#e5F${U{a&8w-1dZ2uR6 zEZaYU|L5x~vMk$K2w(U(dnbK%SAA73+okcsYI!525GM&-B3(mijWo^H%T);f4u1iJ W#~j>xz47q?0000pF!&JycB^mf`%K`FN}Zf~s9XPWj4>4i8q{Y$fUt>?pH`8u3xDB# z_5&P(<2YNt13*<(8=rlp7eXAz`JaGoX_}u^RrOL1y%42dqH0-|uz8L=&rwzt3TpuX zuIE8H4t(E-=lf7fttFOa`B{(tCLGpd(al;>mL;+@g)s&Lt)C0tb)j7M`Fc^n76nX} z!5D)e2r$rkEwfLxg;GdUhRt&%Nq>TY)(FF}Gjvr|h2?UIEKLzb5j@{t|K0~FltSu% zc5V!kB*Abrg6AC;U9GivoX-(O5&R$kfL??zx^C}l87HTw2g?8e&+~9{dWs}TVDo$< zZ)T{Tu-RrTmrD#sqs|c3mEUkQLXsrw+VLm(eFT(3vNXj&>&}`H$1&10-G7+5UW-rjbm3&Rk`7->V^g3WUbwC?;T-{0S3Hk)1>iQ|(K0K8)ox*F2O z&CShT?M7dr6QYztSro0;CzDC*wO!%MS_}6L1I&+xPl)Tn?hvwz^Yio8Yh_tdH|8}o zLh1%L@O|W~-q1GMdR1C$TwGkV-e2$u zc-)$2RaG#?Y|Q+!Let9vUV2)~B!O~WL{Ze5HjZP=W-|c0LluDMxvZiUhXs%c zX|D1uo}O?t9KLC$w~4hDPmhoIc678Ji!j#^s*qI|lu`;&6yb3`|D(dIs%pI^(p)`c zhDr$V5>7ndM-)Yfr+-t})!O+XSZfharyHw=%%Q4=DrD7cTf)^^L+`nSn=Y3~UoGMG zK?Xo71Zdyn5DW$gf&faXb^BtiT~FJaER#(R@5#1pKqk*oz1jxkI1YlwHlXG`eS%&H zu-`_x*Yv4YG~u7z!Div^lG9fSO?n}u$yX@!UC?!V|8+zN8IiC>e6_`4h=q(;QNA3IC5D2kmYVBL=QS_y~K zDnuy--}f>e^9W+|Pf`E?002ovPDHLkV1mFi^Bw>I diff --git a/packages/stream_chat_flutter/test/src/goldens/sending_indicator_0.png b/packages/stream_chat_flutter/test/src/goldens/sending_indicator_0.png index 27eb271482dcbaf9aa7ebd1a0a4c787cd7c81aca..58d1f8901644d2751e3729d5c3799d0baf950c82 100644 GIT binary patch literal 22874 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

      Sc%6 zG%v2e1?=c)V62VVWnW)+hBHM$F^+CB|C2k|h^-cD>?GKTuA%U~8d$=Hsw67GXGmr3 z0HYRb+~)|W_`*3<#`9&sQ#P3ul@6BnBi6D6sR~|97(?4QK^PlC#+od_MaXyyS9B0E zw#R+qA zZt7*~a6`~V%iXP&gSQIy>{=Pr+PWm)%oN0x)<&4!c9|%g92TA!E~*&_iObKOdi&&? zri=bDKXi1owZ-;^aJy9$jv}892k+E(I#Q7^F*#D;K%2-oX)y4>eggnG@)%v2Pz{TXc@K! zXHA^}80F-WdVhmvpH1RVL)ph#V5O+ z;)9jyg&LMZpsAR;?In0Eiw-XeWbBnp=r_n@;p(I5&|0p=CAc`iYR`)Hs)M#fNlDl| zIoVM?So>U`1=zxAv`pXFeU|7`1{dNh*5vWmRfiW(j!b<>{I$+e=y!gLNqf{+lJlYT z(s&}vwy9OXs)oVZs-DB+WB0Sny9e2|QC*4j3LfANCr;ojJiol|eE2bi`d$%%3M+S{ z#bi#DE&yn>aO^fRXs0VTgF3-@N>z(tb_-~Sx3@uxz zTw8X6cM3>raI%9j&s}*j?W@K@zn#j{a?OZo_mq5Umr{g&k;>Dqx=YVAaA?}Qsa$Vw z(ai-g_1_iTgxTBT8KuPDs?s!=y_MdJ zVV1rqQ*wOV%N=&C`nN~0r$w1WWAk8d$J#7e=HO1kG{l(}9im^L=6CoJaji#-wN( zW2UiwFV7-&bAN=BHjvy)`GyMBCIJD!Hb71x4KxI897EGN2pL2IL;|D)7$N~80U`m0 zNPtN2S(0G7sbZ=0bAOHDstb1pUXpTD6ki%}JQN?RU}$*ejRwL*_J#`)0ucg3)qtu2 z`@DOD@rU+E44b(ZK>mIC=e=XJOG#0q{)YM+>Tk04hN?jZ1Um4@fI#wyK?fR1FxC z0we`U3S=BW)gT7~^#;@%P&J@xAP_)OfTRFP0g{5hsuYlGqNO*sS^wM__hn70v5W~! zO~ucBFq2vGU%+F(KYVHG=}`>R36eY);18ytVR?!DDVhi>1Qme*;>ipReqVA>k)R?$ zMe-+o85IdC5>zCpNF-H&+Newm(79>`2t)`(2=p#P#sMUcav+dA{-5NrFuGs*SUKjI z+hcmsI6W0Q?FS2y30Fu}u}POaF$JoaA{ Cxr6Zl literal 24082 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/sending_indicator_2.png b/packages/stream_chat_flutter/test/src/goldens/sending_indicator_2.png index dc823015dd8de98872ee97baf1b810f898a650e9..4c92e52e7407c421ea267be4ba84034cf946983c 100644 GIT binary patch literal 22485 zcmeHPX;4#H7Jk|YQLsA?6cmvqC@7223RrA{5{!tZaRDMKBsC~Bh*37#Y|76mO9 zK|tw3P$57Z&CrM-6I*Ek9b6J@K%rDrWNTK@24-GDl6zCtU0pRl=7)XXA1ar7?m726 z-}%l>^74|s=(PFsbmw6hHs50tbvuU5Wn!2biKI%5{3!aQLj0K(v7NR7t9Yo_L%dLl z*x<2~L|h4^z$6Sa#5}0$cgE!RJ-?m$dTeRK(7*kkxM-^A=$cQfW%$IZh4>zO5=#=yJe)6_q))@kV85(-ZrXUfBE@z|Tf*LR30ahh&4FV5UP;1ac& zD>8=6%hYl4z(fc!Y5>XI%fu zcL#-cPzyL-5|+eI(+t>}%)jZ$nIl`mwbEuWYq@mYJh1L4T?-dGNk`+M(d`Aem?HI7 z1z}O{K;gOHlXx2-18TvV_X$2N_{nYvU}@ zVoAJhAl~}IW-XR2E*ntf5>2>2@GImb(J)-S429{>pJ!>Ekr&58)Icrxp2^;z2TsQTQvcUb^}Ll~~D z2KHWWL}m2RfbkkK>zWQQZr;Sb+YcG5P%NTBn(FanevYOh!>+De_mzO4Ny&UDNIfd! z4oD@(KAHb_kV8z}P^fDH+*%}&LSukizAJ^tf?_^K7`uU(7m``?j{~gC9(R*^ThCdY ziyx?Azun3eR2AP3{KxZAvK*0?puAUyKeomXW_8}0ieBmIDZ!n+?mxFCr*nfEAC#9D zRArc(clUjYJHA7ZI$u#+Ue~%GU2zJZPWag5X%!WsB~CYpskaxp0p=H~N`z

      Sc%6 zG%v2e1?=c)V62VVWnW)+hBHM$F^+CB|C2k|h^-cD>?GKTuA%U~8d$=Hsw67GXGmr3 z0HYRb+~)|W_`*3<#`9&sQ#P3ul@6BnBi6D6sR~|97(?4QK^PlC#+od_MaXyyS9B0E zw#R+qA zZt7*~a6`~V%iXP&gSQIy>{=Pr+PWm)%oN0x)<&4!c9|%g92TA!E~*&_iObKOdi&&? zri=bDKXi1owZ-;^aJy9$jv}892k+E(I#Q7^F*#D;K%2-oX)y4>eggnG@)%v2Pz{TXc@K! zXHA^}80F-WdVhmvpH1RVL)ph#V5O+ z;)9jyg&LMZpsAR;?In0Eiw-XeWbBnp=r_n@;p(I5&|0p=CAc`iYR`)Hs)M#fNlDl| zIoVM?So>U`1=zxAv`pXFeU|7`1{dNh*5vWmRfiW(j!b<>{I$+e=y!gLNqf{+lJlYT z(s&}vwy9OXs)oVZs-DB+WB0Sny9e2|QC*4j3LfANCr;ojJiol|eE2bi`d$%%3M+S{ z#bi#DE&yn>aO^fRXs0VTgF3-@N>z(tb_-~Sx3@uxz zTw8X6cM3>raI%9j&s}*j?W@K@zn#j{a?OZo_mq5Umr{g&k;>Dqx=YVAaA?}Qsa$Vw z(ai-g_1_iTgxTBT8KuPDs?s!=y_MdJ zVV1rqQ*wOV%N=&C`nN~0r$w1WWAk8d$J#7e=HO1kG{l(}9im^L=6CoJaji#-wN( zW2UiwFV7-&bAN=BHjvy)`GyMBCIJD!Hb71x4KxI897EGN2pL2IL;|D)7$N~80U`m0 zNPtN2S(0G7sbZ=0bAOHDstb1pUXpTD6ki%}JQN?RU}$*ejRwL*_J#`)0ucg3)qtu2 z`@DOD@rU+E44b(ZK>mIC=e=XJOG#0q{)YM+>Tk04hN?jZ1Um4@fI#wyK?fR1FxC z0we`U3S=BW)gT7~^#;@%P&J@xAP_)OfTRFP0g{5hsuYlGqNO*sS^wM__hn70v5W~! zO~ucBFq2vGU%+F(KYVHG=}`>R36eY);18ytVR?!DDVhi>1Qme*;>ipReqVA>k)R?$ zMe-+o85IdC5>zCpNF-H&+Newm(79>`2t)`(2=p#P#sMUcav+dA{-5NrFuGs*SUKjI z+hcmsI6W0Q?FS2y30Fu}u}POaF$JoaA{ Cxr6Zl literal 24082 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/stream_chat_context_menu_item_0.png b/packages/stream_chat_flutter/test/src/goldens/stream_chat_context_menu_item_0.png index 9b6e8ed06174648a58971e1401c3959fe7273f40..558b87538b39b63233cbbf772a76d27345094261 100644 GIT binary patch literal 27645 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 bYIuq;{hj9hO$Gi{Xs!$D+G_ddEN}h?Ns{*g literal 27654 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 OGgp<=k-3*lAN&svq;2Z} literal 27267 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 AivR!s diff --git a/packages/stream_chat_flutter/test/src/goldens/upload_progress_indicator_1.png b/packages/stream_chat_flutter/test/src/goldens/upload_progress_indicator_1.png index 1d936b36e9c008fa3614f78c3be14c673fcacc92..3e86d82054465a2b1a41cbcc4c3c1270729253d0 100644 GIT binary patch literal 28002 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 diff --git a/packages/stream_chat_flutter/test/src/goldens/upload_progress_indicator_2.png b/packages/stream_chat_flutter/test/src/goldens/upload_progress_indicator_2.png index 8bb24319dad47b0d21ed76dda81131d1f208792d..c4cfff20d016ed5942f71419adbfcfe4fd21bbf1 100644 GIT binary patch literal 28096 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 literal 28109 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 N>1gXAa9Y-X{STxx=J)^r diff --git a/packages/stream_chat_flutter/test/src/goldens/user_avatar_0.png b/packages/stream_chat_flutter/test/src/goldens/user_avatar_0.png index a155ccc4960e02132050dcb3e22b0e998b2bdd54..0224053b6a4bd965d273415239032a4365251c87 100644 GIT binary patch delta 8735 zcmeHLdpMN&9)DTO6t(lB5fMhE+}qIO7S>3mtS*?8%bZm#Nx3Cz-`PwT6!o~|TK0&F z!E`joN}M^R%X`{tj^Ha>k;xh?e2@!O&L$M)&R zDN&d1T4~rpH)(I*dFjXO4UsH$xfCW@(TuE|!t*7abbgeXm)NO((7LzAac{tyXV22y z*6J$O4?1?={jJV2XY)Um5y|Iz^UJv1>u$td>$-6eD|)l_Wo+c0;(Wh=htegt9eLkV(oiTbZ$g;)y0ct6=W&RyAyz0Qd<9Ql z^1X13M!%kk5a3J?GNW}paK>z1aBq^-`*nty8{Kj0ws~X0yRNE{T`a*-U~GFi1r@pk z-_J1g$Lj2d?ku6Qm!g40zAYR5k~vFlqe|?j8;y%IwhcJOY+?xvAont5R5&mZia*sQ zo?-}MTYe7}`VR>*NM*VTbb>~-{}Kas;`6dqsP{WS?)7nNS9;Y?KHI76{b~StN%$#F zs%pTNB+dlKJlINQTZ@y31vRjsSJCL<$znKtX%7UpEKKHf zEEdOghT`@wVqjdG`dn3pRm8Vn=ImSRpdgV0x&CiSk52Zry6w^p=#L%gjA+UndDSEw z>$Qt8^zm+dJT|6ySxa$=w0FAg9&Vurd^f(cW=P<(C2dWW-C%v~nfs65#&@72g*{LM!yBh z$+Su0oB(A+l=b*pD*&#^DN;}f@YQx-@k%=21L>lMsCa{9>oCU^6gP&HwiZXC~s?*jV2P*JpjCazw# zJ)G*v;yMCOkAeABUDhF>C?B2O5xD9Jtl5b=PGE42i{r=@RQ8+owKR#SkI}jS5 zpELF9;nz(U{o{V<>gwn?+#Aa3QIH}MEq?%SORTeKguMPX#z1`&qKYZpt2ZH+3}Dz!8H09 z(aZ?q^hFZqEm%Cv3#tsSuR%jNtl*at$T)Dk2MhDk0mv#ivKByIOhSdv0aTz9jh?a` zNcBC+Fiiy=ptym>T?{#|M1_+eZHquE`#orgz-}7dMg%O`|9brSrdw8|_xsj^4fqt_ zfED5UGM?3sc-X`?=!nMZZd<_lXAV=*H8ouBh~(I=9IdsMZVkk)B#$#a-VwHE_}*HP zN3BPGNRS#tdg1~;cJ^@tyWfwbnA>7*aU>wXFQ4HX)Td2Iqbq@BgCwXjbUc8FeeSFn z3*d7=4;4-WqP!ny^aQZfkTob{>MT$xJBQT!8)S{0JH?rXDx{77j)C8uXe^*O^3r0I z1g*K|J^zvR5nj#gPEP|9kQaySa+(7o@%SpHe6U>+Wvfe~SQ7ma#H7oU3VC}b;kz7E zv+&EKX;3hy;u2ICV7_~0XZ3z7e6mD6JvrG`Gg$XzDFbv2v(Yqdea|`k(9*q-P_ZVD zv#utxcyeUw9rjDT9p5*1^NLO^<_kq)XjL9cDsE^VVAe2LSN-PT_}JY{MFkFz`0R&(O6zyv(0J_Q`ttd^HstxEP^2~==3Z!NL6JB z(11*ESRl4RS)?+oVzx-Dm0amDL~`Q7Fc)?h^GogOjfyiw2cKWB265p;C_z#7W^LBi zjV@`9{?kJPwOlL!%t>?yxMmlPN7y-&h(bqqh<0Xe^i^#;?7N%e5z5jl4D)`N5!|J9 zxXjQ1#1{>~12DR&03LwX1vlUpZgG#9)xy=Ksc;KddTHXVD(!#f)3RB}iJq=7vf?+b zFx27C@N-d++7=z~0%d{j&Fm zN}N)(hV&_ZX_v#FYGV_>KjwZT>QJWhv@ojOPn+o0&GOP)EN>ae_%D8pAs;dL2gJsZ zznIVmV8W1?Z0RGIZ0Yl`kJnlsR0(WOy8O>m!9Ln#{W&HKiOt23|DRMaV%@+)F^4lD zJvQeS*J?s!#Bj8GQ+VnbDuYmmU2XeA&?# zq=^l^Nd(nmhszv0{9++PMi-M``6Ao2Iy&BUksw?y-~ zlYG`2&!_vhSbv!vLK6LDRDA?d|0DY8&N1p$iFy=emFU*nW(XpmFaFQpkY<)Vr3A5b W{&B}d?umGj=SEi#TE$m^$NmR_H;niI delta 8734 zcmeHLeLR%u8h+{P6rG`?vYp=|F>j$=%$o8eIpX9o9e=|JfBS^jhpwmc8FiB!{<(gL zW_aqzg+&v`?PYu)>N09~iqlUISES5Meel!IK|gNz(0l)Je`m+J$BwOyR&{A0Oo_TL{|@7ZD*P!t{T^ZAmzysAr;jeQ0|SX)T*2+gUsd9RXQd&~Poce^CA z_~zB6FK-5iH-u02ib@zg-MU(L_*{XA$%@TG^oKw4R*dJ|+o0>9$>JHn_X*a+H6Ndk zqM5R%f?)R)BhHl_(xB+*m~?zJwveYOl2O*{LBzijm&oMyCm!V8I_Se1F$Ki!keP96 zI|RkW?`xOS#0(SwoSN^$D(Vn;(8SKrwnYh#bvS&<| z+)kMrQ~jc#zsii`XdGUfhRgiPf~u`!|3XwPOLVm-y6kmKHH4Dy?M0`jsZ!XG8E80&Vh~~6YX?xdZ#|kG=@(4 z&l{DB&p8NAn@%O#9ROC?9yGmvBugW}U;XF~&r~1P{byvvS!D}y9YOV>(A_Ba5fth} z7rp_GR~x6|HGZV_h(Db$w*tWqKcd_)5R9)^1Or#A#~NUCLeg5cBc{cK!;Xk{JC;}O zr5ST1rHiylnrGqObuc_}RmBBypKz~yUY_{GP;XKE)}1WUuDo_&m$2@IKWjnauhH`N zPj0Mb6S7)aRVO+FGIVxZudT488|$tTT??05SVZ3qdD#2(cKl%5ZhzKy7XhPjb9U)T zZ$9C8UBj*g=i*{_cQ)Y(h6yoOFrEw;&tAfJbpSSPJc4rP00HWBwU$JIEvB^|80nh5 zpl+xft$l!4T5BzWSUxJipxjgF!Xz3wGK^cPxNH&NVL6rPf`&czFe>m=z z0o<^!udB03*u6&o(sp^gyyspa<{d_aD6fj>gPP_bGZqZdS1S2l-2k)i%i{i zeK?=LVCTvihF@{H-xc-rbXR!2xE}@@H{Y}0g9t8@jNZyjXaE}B%>7Bu(l94+sCa}^a=*gN|Axx3aCcCRV>VRd4hM0_U` z5ZxHmXe0D#7kC61k!$@x*V}FU+_bV{WpTs(&(K#qfY@$Vi@|gvjxWCEXa5o$2t+RM zVW;Bv2a1;hkIIF$sC3$!z-)l|oad$(fEukpo1+LLF(o)(V z(^^_~Vt#aNG9*b!JuS#$o;Ruq>J`7}M4J^)YI6U_m(-$AbN8+dge&n#x-aKO9C-1TJf9Uu{+}c$9`--4=d7k_%=L*yjiC3v>~0Wsc`V+ z>&-Aw^(d#|GDFpl#Jo8T7l!lRX&v9Am~b!#JpVbvLwR8gIh4J%_tt~wAhP6#Jw~D@ zhRm^9D-D}ygEvYoRXf(;ZDszAo_18Ub^Ew62218u9Y+vr#E5YuMCZbybg+S; zriyjSs(9Xm;%yJvlT;OEfr)k2BX14lkN+C`oXLMjZcOvnB=UKAeyS95o-K-&!Px)nq5X+czP!IR zuVHE$@yq*Ltv^+3NTWYB?tgiItM#YKeU1K9xj&3g9ew5di_#aE5}!i)D*n{Dk02)h zjeZs*&P23s$^?Cb^TgN#2%>vR^&dYS^8(!ox-G7#Z;#9`PHCK<&kAPg!iYV;0hNBV A&Hw-a diff --git a/packages/stream_chat_flutter/test/src/goldens/user_avatar_1.png b/packages/stream_chat_flutter/test/src/goldens/user_avatar_1.png index 189e34326b0cf50fa7a855de17ff4cde6aee8880..9546c8275f9978acebcef7977c145b2087d9541a 100644 GIT binary patch delta 3756 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 ZvV`(15AF!O;5ex&aH~IuS@ktP`Tr|f6@LH# delta 8745 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 diff --git a/packages/stream_chat_flutter/test/src/theme/channel_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/channel_header_theme_test.dart index 1b5499dd4..576e1a8a3 100644 --- a/packages/stream_chat_flutter/test/src/theme/channel_header_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/channel_header_theme_test.dart @@ -70,7 +70,7 @@ final _channelThemeControlMidLerp = StreamChannelHeaderThemeData( width: 40, ), ), - color: const Color(0xff101418), + color: const Color(0xff111417), titleStyle: const TextStyle( color: Color(0xffffffff), fontWeight: FontWeight.bold, diff --git a/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart index 14c097066..1dd0340ed 100644 --- a/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart @@ -73,7 +73,7 @@ final _channelListHeaderThemeControlMidLerp = StreamChannelListHeaderThemeData( width: 40, ), ), - color: const Color(0xff87898b), + color: const Color(0xff88898a), titleStyle: const TextStyle( color: Color(0xff7f7f7f), fontSize: 16, diff --git a/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart index f8d1d164d..c66d41f1f 100644 --- a/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart @@ -73,11 +73,7 @@ void main() { home: Builder( builder: (context) { _context = context; - return Scaffold( - appBar: StreamGalleryFooter( - mediaAttachmentPackages: Message().getAttachmentPackageList(), - ), - ); + return const SizedBox.shrink(); }, ), ), @@ -116,11 +112,7 @@ void main() { home: Builder( builder: (context) { _context = context; - return Scaffold( - appBar: StreamGalleryFooter( - mediaAttachmentPackages: Message().getAttachmentPackageList(), - ), - ); + return const SizedBox.shrink(); }, ), ), @@ -160,7 +152,7 @@ final _galleryFooterThemeDataControl = StreamGalleryFooterThemeData( // Mid-lerp theme control const _galleryFooterThemeDataControlMidLerp = StreamGalleryFooterThemeData( - backgroundColor: Color(0xff87898b), + backgroundColor: Color(0xff88898a), shareIconColor: Color(0xff7f7f7f), titleTextStyle: TextStyle( color: Color(0xff7f7f7f), @@ -169,7 +161,7 @@ const _galleryFooterThemeDataControlMidLerp = StreamGalleryFooterThemeData( ), gridIconButtonColor: Color(0xff7f7f7f), bottomSheetBarrierColor: Color(0x4c000000), - bottomSheetBackgroundColor: Color(0xff87898b), + bottomSheetBackgroundColor: Color(0xff88898a), bottomSheetPhotosTextStyle: TextStyle( color: Color(0xff7f7f7f), fontSize: 16, diff --git a/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart index 651da1ce1..27f98cb35 100644 --- a/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart @@ -66,22 +66,7 @@ void main() { home: Builder( builder: (context) { _context = context; - final attachment = Attachment( - type: 'video', - title: 'video.mp4', - ); - final _message = Message( - createdAt: DateTime.now(), - attachments: [ - attachment, - ], - ); - return Scaffold( - appBar: StreamGalleryHeader( - message: _message, - attachment: _message.attachments[0], - ), - ); + return const SizedBox.shrink(); }, ), ), @@ -116,22 +101,7 @@ void main() { home: Builder( builder: (context) { _context = context; - final attachment = Attachment( - type: 'video', - title: 'video.mp4', - ); - final _message = Message( - createdAt: DateTime.now(), - attachments: [ - attachment, - ], - ); - return Scaffold( - appBar: StreamGalleryHeader( - message: _message, - attachment: _message.attachments[0], - ), - ); + return const SizedBox.shrink(); }, ), ), @@ -175,7 +145,7 @@ final _galleryHeaderThemeDataControl = StreamGalleryHeaderThemeData( // Light theme test control. final _galleryHeaderThemeDataHalfLerpControl = StreamGalleryHeaderThemeData( closeButtonColor: const Color(0xff7f7f7f), - backgroundColor: const Color(0xff87898b), + backgroundColor: const Color(0xff88898a), iconMenuPointColor: const Color(0xff7f7f7f), titleTextStyle: const TextStyle( fontSize: 16, @@ -194,7 +164,7 @@ final _galleryHeaderThemeDataHalfLerpControl = StreamGalleryHeaderThemeData( // Dark theme test control. final _galleryHeaderThemeDataDarkControl = StreamGalleryHeaderThemeData( closeButtonColor: const Color(0xffffffff), - backgroundColor: const Color(0xff101418), + backgroundColor: const Color(0xff121416), iconMenuPointColor: const Color(0xffffffff), titleTextStyle: const TextStyle( fontSize: 16, diff --git a/packages/stream_chat_flutter/test/src/theme/message_input_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/message_input_theme_test.dart index f267d388f..80912e9a1 100644 --- a/packages/stream_chat_flutter/test/src/theme/message_input_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/message_input_theme_test.dart @@ -68,7 +68,7 @@ final _messageInputThemeControl = StreamMessageInputThemeData( final _messageInputThemeControlMidLerp = StreamMessageInputThemeData( borderRadius: BorderRadius.circular(20), sendAnimationDuration: const Duration(milliseconds: 300), - inputBackgroundColor: const Color(0xff87898b), + inputBackgroundColor: const Color(0xff88898a), actionButtonColor: const Color(0xff196eff), actionButtonIdleColor: const Color(0xff7a7a7a), sendButtonColor: const Color(0xff196eff), diff --git a/packages/stream_chat_flutter/test/src/theme/message_list_view_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/message_list_view_theme_test.dart index 264710eca..79fb6dae9 100644 --- a/packages/stream_chat_flutter/test/src/theme/message_list_view_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/message_list_view_theme_test.dart @@ -68,12 +68,7 @@ void main() { home: Builder( builder: (BuildContext context) { _context = context; - return Scaffold( - body: StreamChannel( - channel: MockChannel(), - child: const StreamMessageListView(), - ), - ); + return const SizedBox.shrink(); }, ), ), @@ -98,12 +93,7 @@ void main() { home: Builder( builder: (BuildContext context) { _context = context; - return Scaffold( - body: StreamChannel( - channel: MockChannel(), - child: const StreamMessageListView(), - ), - ); + return const SizedBox.shrink(); }, ), ), @@ -151,7 +141,7 @@ final _messageListViewThemeDataControl = StreamMessageListViewThemeData( ); const _messageListViewThemeDataControlHalfLerp = StreamMessageListViewThemeData( - backgroundColor: Color(0xff87898b), + backgroundColor: Color(0xff88898a), ); final _messageListViewThemeDataControlDark = StreamMessageListViewThemeData( From b2171b5572a138595a5d06f7c8ea215aab797105 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 27 Jul 2023 02:29:57 +0530 Subject: [PATCH 03/11] test: fix test. Signed-off-by: xsahil03x --- packages/stream_chat/lib/src/core/models/attachment.g.dart | 5 +++-- packages/stream_chat/test/fixtures/message_to_json.json | 2 +- packages/stream_chat/test/src/core/models/message_test.dart | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat/lib/src/core/models/attachment.g.dart b/packages/stream_chat/lib/src/core/models/attachment.g.dart index 38a8be165..51aae50e3 100644 --- a/packages/stream_chat/lib/src/core/models/attachment.g.dart +++ b/packages/stream_chat/lib/src/core/models/attachment.g.dart @@ -26,8 +26,9 @@ Attachment _$AttachmentFromJson(Map json) => Attachment( authorIcon: json['author_icon'] as String?, assetUrl: json['asset_url'] as String?, actions: (json['actions'] as List?) - ?.map((e) => Action.fromJson(e as Map)) - .toList(), + ?.map((e) => Action.fromJson(e as Map)) + .toList() ?? + const [], originalWidth: json['original_width'] as int?, originalHeight: json['original_height'] as int?, extraData: json['extra_data'] as Map? ?? const {}, diff --git a/packages/stream_chat/test/fixtures/message_to_json.json b/packages/stream_chat/test/fixtures/message_to_json.json index 94aed066e..7cb322161 100644 --- a/packages/stream_chat/test/fixtures/message_to_json.json +++ b/packages/stream_chat/test/fixtures/message_to_json.json @@ -5,7 +5,7 @@ "silent": false, "attachments": [ { - "type": "video", + "type": "giphy", "title_link": "https://media.giphy.com/media/5zvN79uTGfLMOVfQaA/giphy.gif", "title": "The Lion King Disney GIF - Find & Share on GIPHY", "thumb_url": "https://media.giphy.com/media/5zvN79uTGfLMOVfQaA/giphy.gif", diff --git a/packages/stream_chat/test/src/core/models/message_test.dart b/packages/stream_chat/test/src/core/models/message_test.dart index b5e6ddcc0..c627a739d 100644 --- a/packages/stream_chat/test/src/core/models/message_test.dart +++ b/packages/stream_chat/test/src/core/models/message_test.dart @@ -38,7 +38,7 @@ void main() { 'https://giphy.com/gifs/the-lion-king-live-action-5zvN79uTGfLMOVfQaA', attachments: [ Attachment.fromJson(const { - 'type': 'video', + 'type': 'giphy', 'author_name': 'GIPHY', 'title': 'The Lion King Disney GIF - Find \u0026 Share on GIPHY', 'title_link': From db6febc98962e9985ce5f2af204bd4aed6c56045 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 27 Jul 2023 02:38:33 +0530 Subject: [PATCH 04/11] test: fix more test. Signed-off-by: xsahil03x --- .../stream_chat/test/src/core/models/attachment_test.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat/test/src/core/models/attachment_test.dart b/packages/stream_chat/test/src/core/models/attachment_test.dart index edcc0da6f..e9add1095 100644 --- a/packages/stream_chat/test/src/core/models/attachment_test.dart +++ b/packages/stream_chat/test/src/core/models/attachment_test.dart @@ -27,7 +27,7 @@ void main() { test('should serialize to json correctly', () { final channel = Attachment( - type: 'image', + type: 'giphy', title: 'soo', titleLink: 'https://giphy.com/gifs/nrkp3-dance-happy-3o7TKnCdBx5cMg0qti', @@ -36,7 +36,7 @@ void main() { expect( channel.toJson(), { - 'type': 'image', + 'type': 'giphy', 'title': 'soo', 'title_link': 'https://giphy.com/gifs/nrkp3-dance-happy-3o7TKnCdBx5cMg0qti', From 572207c354b21b3ae7a3f9a74ccd5693e5013d3e Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 27 Jul 2023 03:23:29 +0530 Subject: [PATCH 05/11] test: some more test. Signed-off-by: xsahil03x --- .../message_input/message_input_attachment_list_test.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/test/src/message_input/message_input_attachment_list_test.dart b/packages/stream_chat_flutter/test/src/message_input/message_input_attachment_list_test.dart index a7afeea85..870f5464e 100644 --- a/packages/stream_chat_flutter/test/src/message_input/message_input_attachment_list_test.dart +++ b/packages/stream_chat_flutter/test/src/message_input/message_input_attachment_list_test.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/media_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import '../mocks.dart'; @@ -37,7 +38,9 @@ void main() { // Expect 2 file attachments and 1 media attachment expect(find.byType(MessageInputFileAttachments), findsOneWidget); + expect(find.byType(StreamFileAttachment), findsNWidgets(2)); expect(find.byType(MessageInputMediaAttachments), findsOneWidget); + expect(find.byType(StreamMediaAttachmentThumbnail), findsOneWidget); }, ); @@ -111,7 +114,7 @@ void main() { ); // Expect 2 file attachments - expect(find.byType(ClipRRect), findsNWidgets(2)); + expect(find.byType(StreamFileAttachment), findsNWidgets(2)); }, ); From 93b41588976aea0ae6379c16710aedfe2aa2690e Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 28 Jul 2023 20:04:13 +0530 Subject: [PATCH 06/11] refactor: improve fullscreen_media, minor changes. Signed-off-by: xsahil03x --- .../lib/src/attachment/attachment.dart | 3 +- .../lib/src/attachment/attachment_error.dart | 33 ----- .../lib/src/attachment/attachment_title.dart | 51 ------- .../lib/src/attachment/giphy_attachment.dart | 88 ++++-------- .../lib/src/attachment/image_attachment.dart | 28 ---- .../fullscreen_media/full_screen_media.dart | 113 ++------------- .../full_screen_media_desktop.dart | 134 +++--------------- .../gallery_navigation_item.dart | 71 ++++++++++ .../message_input/quoted_message_widget.dart | 11 +- .../lib/stream_chat_flutter.dart | 1 - .../src/attachment/attachment_error_test.dart | 25 ---- .../src/attachment/attachment_title_test.dart | 42 ------ 12 files changed, 135 insertions(+), 465 deletions(-) delete mode 100644 packages/stream_chat_flutter/lib/src/attachment/attachment_error.dart delete mode 100644 packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart create mode 100644 packages/stream_chat_flutter/lib/src/fullscreen_media/gallery_navigation_item.dart delete mode 100644 packages/stream_chat_flutter/test/src/attachment/attachment_error_test.dart delete mode 100644 packages/stream_chat_flutter/test/src/attachment/attachment_title_test.dart diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment.dart index 2fb988200..0b73a93c7 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment.dart @@ -1,6 +1,7 @@ -export 'attachment_error.dart'; export 'attachment_upload_state_builder.dart'; export 'file_attachment.dart'; +export 'gallery_attachment.dart'; export 'giphy_attachment.dart'; export 'image_attachment.dart'; +export 'url_attachment.dart'; export 'video_attachment.dart'; diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_error.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_error.dart deleted file mode 100644 index 85e806e90..000000000 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_error.dart +++ /dev/null @@ -1,33 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; - -/// {@template attachmentError} -/// Widget for building in case of error -/// {@endtemplate} -class AttachmentError extends StatelessWidget { - /// {@macro attachmentError} - const AttachmentError({ - super.key, - this.constraints, - }); - - /// constraints of error - final BoxConstraints? constraints; - - @override - Widget build(BuildContext context) { - return Center( - child: Container( - constraints: constraints ?? const BoxConstraints.expand(), - color: - StreamChatTheme.of(context).colorTheme.accentError.withOpacity(0.1), - child: Center( - child: Icon( - Icons.error_outline, - color: StreamChatTheme.of(context).colorTheme.textHighEmphasis, - ), - ), - ), - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart deleted file mode 100644 index dc9c34c1d..000000000 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart +++ /dev/null @@ -1,51 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; - -/// {@template attachmentTitle} -/// Title for attachments -/// {@endtemplate} -class StreamAttachmentTitle extends StatelessWidget { - /// {@macro attachmentTitle} - const StreamAttachmentTitle({ - super.key, - required this.attachment, - required this.messageTheme, - }); - - /// Theme to apply to text - final StreamMessageThemeData messageTheme; - - /// Attachment data to display - final Attachment attachment; - - @override - Widget build(BuildContext context) { - final ogScrapeUrl = attachment.ogScrapeUrl; - return GestureDetector( - onTap: () { - final ogScrapeUrl = attachment.ogScrapeUrl; - if (ogScrapeUrl != null) launchURL(context, ogScrapeUrl); - }, - child: Padding( - padding: const EdgeInsets.all(8), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (attachment.title != null) - Text( - attachment.title!, - overflow: TextOverflow.ellipsis, - style: messageTheme.messageTextStyle?.copyWith( - color: StreamChatTheme.of(context).colorTheme.accentPrimary, - fontWeight: FontWeight.bold, - ), - ), - if (ogScrapeUrl != null) - Text(ogScrapeUrl, style: messageTheme.messageTextStyle), - ], - ), - ), - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart index fc995c089..a19e19ff0 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart @@ -68,67 +68,39 @@ class StreamGiphyAttachment extends StatelessWidget { borderRadius: BorderRadius.circular(14), ); - return Hero( - tag: giphy.id, - child: Container( - constraints: constraints, - clipBehavior: Clip.hardEdge, - decoration: ShapeDecoration(shape: shape), - child: AspectRatio( - aspectRatio: giphySize?.aspectRatio ?? 1, - child: Stack( - alignment: Alignment.center, - children: [ - StreamGiphyAttachmentThumbnail( - type: type, - giphy: giphy, - fit: fit, - width: double.infinity, - height: double.infinity, - ), - if (giphy.uploadState.isSuccess) - const Positioned( - bottom: 8, - left: 8, - child: GiphyChip(), - ) - else - Padding( - padding: const EdgeInsets.all(8), - child: StreamAttachmentUploadStateBuilder( - message: message, - attachment: giphy, - ), + return Container( + constraints: constraints, + clipBehavior: Clip.hardEdge, + decoration: ShapeDecoration(shape: shape), + child: AspectRatio( + aspectRatio: giphySize?.aspectRatio ?? 1, + child: Stack( + alignment: Alignment.center, + children: [ + StreamGiphyAttachmentThumbnail( + type: type, + giphy: giphy, + fit: fit, + width: double.infinity, + height: double.infinity, + ), + if (giphy.uploadState.isSuccess) + const Positioned( + bottom: 8, + left: 8, + child: GiphyChip(), + ) + else + Padding( + padding: const EdgeInsets.all(8), + child: StreamAttachmentUploadStateBuilder( + message: message, + attachment: giphy, ), - ], - ), + ), + ], ), ), ); } - -// Future _onTap(BuildContext context) async { -// if (onAttachmentTap != null) { -// return onAttachmentTap!(); -// } -// -// await Navigator.of(context).push( -// MaterialPageRoute( -// builder: (_) { -// final channel = StreamChannel.of(context).channel; -// return StreamChannel( -// channel: channel, -// child: StreamFullScreenMediaBuilder( -// mediaAttachmentPackages: message.getAttachmentPackageList(), -// startIndex: message.attachments.indexOf(giphy), -// userName: message.user!.name, -// onShowMessage: onShowMessage, -// onReplyMessage: onReplyMessage, -// attachmentActionsModalBuilder: attachmentActionsModalBuilder, -// ), -// ); -// }, -// ), -// ); -// } } diff --git a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart index 386eb2df3..5406cb87c 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart @@ -103,31 +103,3 @@ class StreamImageAttachment extends StatelessWidget { ); } } - -// Future _onTap( -// BuildContext context, -// int index, -// ) async { -// if (onAttachmentTap != null) { -// return onAttachmentTap!(); -// } -// -// final channel = StreamChannel.of(context).channel; -// -// Navigator.of(context).push( -// MaterialPageRoute( -// builder: (context) => StreamChannel( -// channel: channel, -// child: StreamFullScreenMediaBuilder( -// mediaAttachmentPackages: message.getAttachmentPackageList(), -// startIndex: index, -// userName: message.user!.name, -// onShowMessage: onShowMessage, -// onReplyMessage: onReplyMessage, -// attachmentActionsModalBuilder: attachmentActionsModalBuilder, -// ), -// ), -// ), -// ); -// } -// } diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart index 80ee43283..938e4dfb4 100644 --- a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart @@ -2,14 +2,11 @@ import 'dart:async'; import 'dart:io'; import 'package:chewie/chewie.dart'; -import 'package:contextmenu/contextmenu.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; -import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; import 'package:stream_chat_flutter/src/attachment/thumbnail/media_attachment_thumbnail.dart'; -import 'package:stream_chat_flutter/src/context_menu_items/download_menu_item.dart'; import 'package:stream_chat_flutter/src/fullscreen_media/full_screen_media_widget.dart'; +import 'package:stream_chat_flutter/src/fullscreen_media/gallery_navigation_item.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:video_player/video_player.dart'; @@ -291,22 +288,16 @@ class _FullScreenMediaState extends State { ? StreamChannelHeaderTheme.of(context).color : Colors.black, duration: kThemeAnimationDuration, - child: ContextMenuArea( - verticalPadding: 0, - builder: (_) => [ - DownloadMenuItem(attachment: attachment), - ], - child: PhotoView.customChild( - maxScale: PhotoViewComputedScale.covered, - minScale: PhotoViewComputedScale.contained, - backgroundDecoration: const BoxDecoration( - color: Colors.transparent, - ), - child: StreamMediaAttachmentThumbnail( - media: attachment, - width: double.infinity, - height: double.infinity, - ), + child: PhotoView.customChild( + maxScale: PhotoViewComputedScale.covered, + minScale: PhotoViewComputedScale.contained, + backgroundDecoration: const BoxDecoration( + color: Colors.transparent, + ), + child: StreamMediaAttachmentThumbnail( + media: attachment, + width: double.infinity, + height: double.infinity, ), ), ), @@ -318,19 +309,11 @@ class _FullScreenMediaState extends State { child: CircularProgressIndicator.adaptive(), ); } + return InkWell( onTap: switchDisplayingDetail, - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 50), - child: ContextMenuArea( - verticalPadding: 0, - builder: (_) => [ - DownloadMenuItem(attachment: attachment), - ], - child: Chewie( - controller: controller.chewieController!, - ), - ), + child: Chewie( + controller: controller.chewieController!, ), ); } @@ -344,74 +327,6 @@ class _FullScreenMediaState extends State { } } -/// A widget for desktop and web users to be able to navigate left and right -/// through a gallery of images. -class GalleryNavigationItem extends StatelessWidget { - /// Builds a [GalleryNavigationItem]. - const GalleryNavigationItem({ - super.key, - required this.icon, - this.iconSize = 48, - required this.onPressed, - required this.opacityAnimation, - this.left, - this.right, - }); - - /// The icon to display. - final Widget icon; - - /// The size of the icon. - /// - /// Defaults to 48. - final double iconSize; - - /// The callback to perform when the button is clicked. - final VoidCallback onPressed; - - /// The animation for showing & hiding this widget. - final ValueListenable opacityAnimation; - - /// The left-hand placement of the button. - final double? left; - - /// The right-hand placement of the button. - final double? right; - - @override - Widget build(BuildContext context) { - return PlatformWidgetBuilder( - desktop: (_, child) => child, - web: (_, child) => child, - child: Positioned( - left: left, - right: right, - top: MediaQuery.of(context).size.height / 2, - child: ValueListenableBuilder( - valueListenable: opacityAnimation, - builder: (context, shouldShow, child) { - return AnimatedOpacity( - opacity: shouldShow ? 1 : 0, - duration: kThemeAnimationDuration, - child: child, - ); - }, - child: Material( - color: Colors.transparent, - type: MaterialType.circle, - clipBehavior: Clip.antiAlias, - child: IconButton( - icon: icon, - iconSize: iconSize, - onPressed: onPressed, - ), - ), - ), - ), - ); - } -} - /// Class for packaging up things required for videos class VideoPackage { /// Constructor for creating [VideoPackage] diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart index bdc6d9cfa..b4318f8e6 100644 --- a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart @@ -1,13 +1,13 @@ -import 'package:cached_network_image/cached_network_image.dart'; import 'package:contextmenu/contextmenu.dart'; import 'package:dart_vlc/dart_vlc.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; -import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; +import 'package:stream_chat_flutter/src/attachment/thumbnail/media_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/context_menu_items/download_menu_item.dart'; import 'package:stream_chat_flutter/src/fullscreen_media/full_screen_media_widget.dart'; +import 'package:stream_chat_flutter/src/fullscreen_media/gallery_navigation_item.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Returns an instance of [FullScreenMediaDesktop]. @@ -310,9 +310,6 @@ class _FullScreenMediaDesktopState extends State { final attachment = currentAttachmentPackage.attachment; if (attachment.type == AttachmentType.image || attachment.type == AttachmentType.giphy) { - final imageUrl = attachment.imageUrl ?? - attachment.assetUrl ?? - attachment.thumbUrl; return ValueListenableBuilder( valueListenable: _isDisplayingDetail, builder: (context, isDisplayingDetail, _) => @@ -324,39 +321,19 @@ class _FullScreenMediaDesktopState extends State { child: ContextMenuArea( verticalPadding: 0, builder: (_) => [ - DownloadMenuItem( - attachment: attachment, - ), + DownloadMenuItem(attachment: attachment), ], - child: PhotoView( - imageProvider: (imageUrl == null && - attachment.localUri != null && - attachment.file?.bytes != null) - ? Image.memory(attachment.file!.bytes!).image - : CachedNetworkImageProvider(imageUrl!), - errorBuilder: (_, __, ___) => const AttachmentError(), - loadingBuilder: (context, _) { - final image = Image.asset( - 'images/placeholder.png', - fit: BoxFit.cover, - package: 'stream_chat_flutter', - ); - final colorTheme = - StreamChatTheme.of(context).colorTheme; - return Shimmer.fromColors( - baseColor: colorTheme.disabled, - highlightColor: colorTheme.inputBg, - child: image, - ); - }, + child: PhotoView.customChild( maxScale: PhotoViewComputedScale.covered, minScale: PhotoViewComputedScale.contained, - heroAttributes: PhotoViewHeroAttributes( - tag: widget.mediaAttachmentPackages, - ), backgroundDecoration: const BoxDecoration( color: Colors.transparent, ), + child: StreamMediaAttachmentThumbnail( + media: attachment, + width: double.infinity, + height: double.infinity, + ), ), ), ), @@ -364,29 +341,18 @@ class _FullScreenMediaDesktopState extends State { } else if (attachment.type == AttachmentType.video) { final package = videoPackages[attachment.id]!; package.player.open( - Playlist( - medias: [ - Media.network(package.attachment.assetUrl), - ], - ), + Media.network(package.attachment.assetUrl), autoStart: widget.autoplayVideos, ); return InkWell( onTap: switchDisplayingDetail, - child: Padding( - padding: const EdgeInsets.symmetric(vertical: 50), - child: ContextMenuArea( - verticalPadding: 0, - builder: (_) => [ - DownloadMenuItem( - attachment: attachment, - ), - ], - child: Video( - player: package.player, - ), - ), + child: ContextMenuArea( + verticalPadding: 0, + builder: (_) => [ + DownloadMenuItem(attachment: attachment), + ], + child: Video(player: package.player), ), ); } @@ -399,74 +365,6 @@ class _FullScreenMediaDesktopState extends State { } } -/// A widget for desktop and web users to be able to navigate left and right -/// through a gallery of images. -class GalleryNavigationItem extends StatelessWidget { - /// Builds a [GalleryNavigationItem]. - const GalleryNavigationItem({ - super.key, - required this.icon, - this.iconSize = 48, - required this.onPressed, - required this.opacityAnimation, - this.left, - this.right, - }); - - /// The icon to display. - final Widget icon; - - /// The size of the icon. - /// - /// Defaults to 48. - final double iconSize; - - /// The callback to perform when the button is clicked. - final VoidCallback onPressed; - - /// The animation for showing & hiding this widget. - final ValueListenable opacityAnimation; - - /// The left-hand placement of the button. - final double? left; - - /// The right-hand placement of the button. - final double? right; - - @override - Widget build(BuildContext context) { - return PlatformWidgetBuilder( - desktop: (_, child) => child, - web: (_, child) => child, - child: Positioned( - left: left, - right: right, - top: MediaQuery.of(context).size.height / 2, - child: ValueListenableBuilder( - valueListenable: opacityAnimation, - builder: (context, shouldShow, child) { - return AnimatedOpacity( - opacity: shouldShow ? 1 : 0, - duration: kThemeAnimationDuration, - child: child, - ); - }, - child: Material( - color: Colors.transparent, - type: MaterialType.circle, - clipBehavior: Clip.antiAlias, - child: IconButton( - icon: icon, - iconSize: iconSize, - onPressed: onPressed, - ), - ), - ), - ), - ); - } -} - /// Class for packaging up things required for videos class DesktopVideoPackage { /// Constructor for creating [VideoPackage] diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/gallery_navigation_item.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/gallery_navigation_item.dart new file mode 100644 index 000000000..5d1af701b --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/gallery_navigation_item.dart @@ -0,0 +1,71 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/platform_widget_builder/src/platform_widget_builder.dart'; + +/// A widget for desktop and web users to be able to navigate left and right +/// through a gallery of images. +class GalleryNavigationItem extends StatelessWidget { + /// Builds a [GalleryNavigationItem]. + const GalleryNavigationItem({ + super.key, + required this.icon, + this.iconSize = 48, + required this.onPressed, + required this.opacityAnimation, + this.left, + this.right, + }); + + /// The icon to display. + final Widget icon; + + /// The size of the icon. + /// + /// Defaults to 48. + final double iconSize; + + /// The callback to perform when the button is clicked. + final VoidCallback onPressed; + + /// The animation for showing & hiding this widget. + final ValueListenable opacityAnimation; + + /// The left-hand placement of the button. + final double? left; + + /// The right-hand placement of the button. + final double? right; + + @override + Widget build(BuildContext context) { + return PlatformWidgetBuilder( + desktop: (_, child) => child, + web: (_, child) => child, + child: Positioned( + left: left, + right: right, + top: MediaQuery.of(context).size.height / 2, + child: ValueListenableBuilder( + valueListenable: opacityAnimation, + builder: (context, shouldShow, child) { + return AnimatedOpacity( + opacity: shouldShow ? 1 : 0, + duration: kThemeAnimationDuration, + child: child, + ); + }, + child: Material( + color: Colors.transparent, + type: MaterialType.circle, + clipBehavior: Clip.antiAlias, + child: IconButton( + icon: icon, + iconSize: iconSize, + onPressed: onPressed, + ), + ), + ), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart b/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart index 054d9cc4c..83e04cc60 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/quoted_message_widget.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; import 'package:stream_chat_flutter/src/attachment/thumbnail/file_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/attachment/thumbnail/image_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/message_input/clear_input_item_button.dart'; @@ -178,16 +177,10 @@ class _QuotedMessage extends StatelessWidget { } // Add clear button if needed. - if (onQuotedMessageClear != null) { + if (isDesktopDeviceOrWeb && onQuotedMessageClear != null) { children.insert( 0, - PlatformWidgetBuilder( - web: (context, child) => child, - desktop: (context, child) => child, - child: ClearInputItemButton( - onTap: onQuotedMessageClear, - ), - ), + ClearInputItemButton(onTap: onQuotedMessageClear), ); } diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 6b3937be8..72470ee99 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -6,7 +6,6 @@ export 'package:stream_chat_flutter/src/message_widget/quoted_message.dart'; export 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; export 'src/attachment/attachment.dart'; -export 'src/attachment/attachment_title.dart'; export 'src/attachment/gallery_attachment.dart'; export 'src/attachment/handler/stream_attachment_handler.dart'; export 'src/attachment/image_attachment.dart'; diff --git a/packages/stream_chat_flutter/test/src/attachment/attachment_error_test.dart b/packages/stream_chat_flutter/test/src/attachment/attachment_error_test.dart deleted file mode 100644 index 6e0385054..000000000 --- a/packages/stream_chat_flutter/test/src/attachment/attachment_error_test.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; - -import '../mocks.dart'; - -void main() { - testWidgets('AttachmentError test', (tester) async { - await tester.pumpWidget( - MaterialApp( - builder: (context, child) => StreamChat( - client: MockClient(), - child: child, - ), - home: const Scaffold( - body: Center( - child: AttachmentError(), - ), - ), - ), - ); - - expect(find.byType(Icon), findsOneWidget); - }); -} diff --git a/packages/stream_chat_flutter/test/src/attachment/attachment_title_test.dart b/packages/stream_chat_flutter/test/src/attachment/attachment_title_test.dart deleted file mode 100644 index bfe1223e5..000000000 --- a/packages/stream_chat_flutter/test/src/attachment/attachment_title_test.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; - -import '../mocks.dart'; - -void main() { - testWidgets('AttachmentTitle renders properly', (tester) async { - final mockClient = MockClient(); - await tester.pumpWidget( - MaterialApp( - builder: (context, child) => StreamChat( - client: mockClient, - streamChatThemeData: StreamChatThemeData.light(), - child: child, - ), - home: Scaffold( - body: Builder( - builder: (context) { - return Center( - child: StreamAttachmentTitle( - attachment: Attachment( - title: 'Test Attachment', - type: 'video', - titleLink: 'https://www.youtube.com/watch?v=lytQi-slT5Y', - ogScrapeUrl: 'https://www.youtube.com/watch?v=lytQi-slT5Y', - ), - messageTheme: StreamChatTheme.of(context).ownMessageTheme, - ), - ); - }, - ), - ), - ), - ); - - expect(find.byType(StreamAttachmentTitle), findsOneWidget); - expect(find.text('Test Attachment'), findsOneWidget); - expect(find.text('https://www.youtube.com/watch?v=lytQi-slT5Y'), - findsOneWidget); - }); -} From 72e0c7b6e9e311cc68eeb950799af752e2fa8640 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 28 Jul 2023 20:25:03 +0530 Subject: [PATCH 07/11] chore: fix lints. Signed-off-by: xsahil03x --- .../builder/attachment_widget_builder.dart | 2 - .../full_screen_media_desktop.dart | 2 - .../floating_date_divider.dart | 78 +++++++------------ .../message_list_view/message_list_view.dart | 19 +++-- .../lib/src/message_list_view/mlv_utils.dart | 29 ------- 5 files changed, 40 insertions(+), 90 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart index f8ef052fc..f9b389ef2 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/attachment_widget_builder.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/attachment/attachment.dart'; -import 'package:stream_chat_flutter/src/attachment/gallery_attachment.dart'; import 'package:stream_chat_flutter/src/attachment/thumbnail/media_attachment_thumbnail.dart'; -import 'package:stream_chat_flutter/src/attachment/url_attachment.dart'; import 'package:stream_chat_flutter/src/stream_chat.dart'; import 'package:stream_chat_flutter/src/theme/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/utils/utils.dart'; diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart index b4318f8e6..b5bb09d34 100644 --- a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart @@ -1,9 +1,7 @@ import 'package:contextmenu/contextmenu.dart'; import 'package:dart_vlc/dart_vlc.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; -import 'package:stream_chat_flutter/platform_widget_builder/platform_widget_builder.dart'; import 'package:stream_chat_flutter/src/attachment/thumbnail/media_attachment_thumbnail.dart'; import 'package:stream_chat_flutter/src/context_menu_items/download_menu_item.dart'; import 'package:stream_chat_flutter/src/fullscreen_media/full_screen_media_widget.dart'; diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart b/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart index dbaccc17b..d8202ecdc 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart @@ -38,61 +38,39 @@ class FloatingDateDivider extends StatelessWidget { @override Widget build(BuildContext context) { - return Positioned( - top: 20, - left: 0, - right: 0, - child: BetterStreamBuilder>( - initialData: itemPositionListener.itemPositions.value, - stream: valueListenableToStreamAdapter( - itemPositionListener.itemPositions, - ), - comparator: (a, b) { - if (a == null || b == null) { - return false; - } - if (reverse) { - final aTop = getTopElementIndex(a); - final bTop = getTopElementIndex(b); - return aTop == bTop; - } else { - final aBottom = getBottomElementIndex(a); - final bBottom = getBottomElementIndex(b); - return aBottom == bBottom; - } - }, - builder: (context, values) { - if (values.isEmpty || messages.isEmpty) { - return const Offstage(); - } + final itemPositions = itemPositionListener.itemPositions; + return ValueListenableBuilder( + valueListenable: itemPositions, + builder: (context, positions, child) { + if (positions.isEmpty || messages.isEmpty) { + return const Offstage(); + } - int? index; - if (reverse) { - index = getTopElementIndex(values); - } else { - index = getBottomElementIndex(values); - } + int? index; + if (reverse) { + index = getTopElementIndex(positions); + } else { + index = getBottomElementIndex(positions); + } - if ((index == null) || - (!isThreadConversation && index == itemCount - 2) || - (isThreadConversation && index == itemCount - 1)) { - return const Offstage(); - } + if ((index == null) || + (!isThreadConversation && index == itemCount - 2) || + (isThreadConversation && index == itemCount - 1)) { + return const Offstage(); + } - if (index <= 2 || index >= itemCount - 3) { - if (reverse) { - index = itemCount - 4; - } else { - index = 2; - } + if (index <= 2 || index >= itemCount - 3) { + if (reverse) { + index = itemCount - 4; + } else { + index = 2; } + } - final message = messages[index - 2]; - return dateDividerBuilder != null - ? dateDividerBuilder!(message.createdAt.toLocal()) - : StreamDateDivider(dateTime: message.createdAt.toLocal()); - }, - ), + final message = messages[index - 2]; + return dateDividerBuilder?.call(message.createdAt.toLocal()) ?? + StreamDateDivider(dateTime: message.createdAt.toLocal()); + }, ); } } diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart index 995ec161e..f1a42cfd2 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart @@ -810,13 +810,18 @@ class _StreamMessageListViewState extends State { ), ), if (widget.showFloatingDateDivider) - FloatingDateDivider( - itemCount: itemCount, - reverse: widget.reverse, - itemPositionListener: _itemPositionListener, - messages: messages, - dateDividerBuilder: widget.dateDividerBuilder, - isThreadConversation: _isThreadConversation, + Positioned( + top: 20, + left: 0, + right: 0, + child: FloatingDateDivider( + itemCount: itemCount, + reverse: widget.reverse, + itemPositionListener: _itemPositionListener, + messages: messages, + dateDividerBuilder: widget.dateDividerBuilder, + isThreadConversation: _isThreadConversation, + ), ), ], ); diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/mlv_utils.dart b/packages/stream_chat_flutter/lib/src/message_list_view/mlv_utils.dart index 9524cef90..b1e3d271a 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/mlv_utils.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/mlv_utils.dart @@ -1,7 +1,4 @@ -import 'dart:async'; - import 'package:collection/collection.dart'; -import 'package:flutter/foundation.dart'; import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -74,29 +71,3 @@ int? getBottomElementIndex(Iterable values) { bool isInitialMessage(String id, StreamChannelState? channelState) { return channelState!.initialMessageId == id; } - -/// Converts a [ValueListenable] to a [Stream]. -Stream valueListenableToStreamAdapter(ValueListenable listenable) { - late StreamController _controller; - - void listener() { - _controller.add(listenable.value); - } - - void start() { - listenable.addListener(listener); - } - - void end() { - listenable.removeListener(listener); - } - - _controller = StreamController( - onListen: start, - onPause: end, - onResume: start, - onCancel: end, - ); - - return _controller.stream; -} From ff3ad6b16da6f89be015d5c3145b6a227608275d Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 28 Jul 2023 23:26:32 +0530 Subject: [PATCH 08/11] fix: fix test. Signed-off-by: xsahil03x --- .../floating_date_divider.dart | 6 ++-- .../message_list_view/message_list_view.dart | 2 +- .../floating_date_divider_test.dart | 32 +++++++++++++++---- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart b/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart index d8202ecdc..61b43e211 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/floating_date_divider.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:stream_chat_flutter/src/message_list_view/mlv_utils.dart'; @@ -22,7 +23,7 @@ class FloatingDateDivider extends StatelessWidget { final bool isThreadConversation; // ignore: public_member_api_docs - final ItemPositionsListener itemPositionListener; + final ValueListenable> itemPositionListener; // ignore: public_member_api_docs final bool reverse; @@ -38,9 +39,8 @@ class FloatingDateDivider extends StatelessWidget { @override Widget build(BuildContext context) { - final itemPositions = itemPositionListener.itemPositions; return ValueListenableBuilder( - valueListenable: itemPositions, + valueListenable: itemPositionListener, builder: (context, positions, child) { if (positions.isEmpty || messages.isEmpty) { return const Offstage(); diff --git a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart index f1a42cfd2..f3ed40843 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view/message_list_view.dart @@ -817,7 +817,7 @@ class _StreamMessageListViewState extends State { child: FloatingDateDivider( itemCount: itemCount, reverse: widget.reverse, - itemPositionListener: _itemPositionListener, + itemPositionListener: _itemPositionListener.itemPositions, messages: messages, dateDividerBuilder: widget.dateDividerBuilder, isThreadConversation: _isThreadConversation, diff --git a/packages/stream_chat_flutter/test/src/message_list_view/floating_date_divider_test.dart b/packages/stream_chat_flutter/test/src/message_list_view/floating_date_divider_test.dart index a64033319..f3d3c365f 100644 --- a/packages/stream_chat_flutter/test/src/message_list_view/floating_date_divider_test.dart +++ b/packages/stream_chat_flutter/test/src/message_list_view/floating_date_divider_test.dart @@ -1,11 +1,32 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:stream_chat_flutter/src/message_list_view/floating_date_divider.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import '../mocks.dart'; + void main() { testWidgets('FloatingDateDivider', (tester) async { + final client = MockClient(); + final clientState = MockClientState(); + + when(() => client.state).thenReturn(clientState); + when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); + + final createdAt = DateTime.now(); + + final itemPositionsListener = ValueNotifier( + [ + const ItemPosition( + index: 0, + itemLeadingEdge: 0, + itemTrailingEdge: 0, + ), + ], + ); + await tester.pumpWidget( MaterialApp( home: Scaffold( @@ -14,12 +35,9 @@ void main() { FloatingDateDivider( reverse: false, itemCount: 3, - itemPositionListener: ItemPositionsListener.create(), - messages: [ - Message(), - Message(), - Message(), - ], + itemPositionListener: itemPositionsListener, + messages: [Message(createdAt: createdAt)], + dateDividerBuilder: (dateTime) => Text('$dateTime'), ), ], ), @@ -27,6 +45,6 @@ void main() { ), ); - expect(find.byType(Positioned), findsOneWidget); + expect(find.text('$createdAt'), findsOneWidget); }); } From 795c49480b6f692b0823553cce077fe5f93578c7 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Sat, 29 Jul 2023 00:12:09 +0530 Subject: [PATCH 09/11] chore: minor ui fixes. Signed-off-by: xsahil03x --- .../builder/url_attachment_builder.dart | 24 +++++++++---------- .../lib/src/message_widget/bottom_row.dart | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart index 3d073643a..a24ca51bb 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart @@ -1,6 +1,6 @@ part of 'attachment_widget_builder.dart'; -const _kDefaultUrlAttachmentConstraints = BoxConstraints(maxWidth: 290); +const _kDefaultUrlAttachmentConstraints = BoxConstraints(maxWidth: 256); /// {@template urlAttachmentBuilder} /// A widget builder for url attachment type. @@ -30,25 +30,23 @@ class UrlAttachmentBuilder extends StreamAttachmentWidgetBuilder { final StreamAttachmentWidgetTapCallback? onAttachmentTap; @override - bool canHandle( - Message message, - Map> attachments, - ) { + bool canHandle(Message message, + Map> attachments,) { final urls = attachments[AttachmentType.urlPreview]; return urls != null && urls.isNotEmpty; } @override - Widget build( - BuildContext context, - Message message, - Map> attachments, - ) { + Widget build(BuildContext context, + Message message, + Map> attachments,) { assert(debugAssertCanHandle(message, attachments), ''); final urlPreviews = attachments[AttachmentType.urlPreview]!; - final client = StreamChat.of(context).client; + final client = StreamChat + .of(context) + .client; final isMyMessage = message.user?.id == client.state.currentUser?.id; final streamChatTheme = StreamChatTheme.of(context); @@ -62,7 +60,9 @@ class UrlAttachmentBuilder extends StreamAttachmentWidgetBuilder { onTap = () => onAttachmentTap!(message, urlPreview); } - final host = Uri.parse(urlPreview.titleLink!).host; + final host = Uri + .parse(urlPreview.titleLink!) + .host; final splitList = host.split('.'); final hostName = splitList.length == 3 ? splitList[1] : splitList[0]; final hostDisplayName = urlPreview.authorName?.capitalize() ?? diff --git a/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart b/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart index 83a40a4d5..d7eb2f6c9 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget/bottom_row.dart @@ -201,8 +201,8 @@ class BottomRow extends StatelessWidget { ), ]; - final showThreadTail = !(hasUrlAttachments || isGiphy || isOnlyEmoji) && - (showThreadReplyIndicator || showInChannel); + final showThreadTail = + (showThreadReplyIndicator || showInChannel) && !isOnlyEmoji; final threadIndicatorWidgets = [ if (showThreadTail) From eeb957f9032b40e1e71d8b9e26df646b08a33f28 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Sat, 29 Jul 2023 00:14:58 +0530 Subject: [PATCH 10/11] chore: fix formatting. Signed-off-by: xsahil03x --- .../builder/url_attachment_builder.dart | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart index a24ca51bb..807ad2d67 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/builder/url_attachment_builder.dart @@ -30,23 +30,25 @@ class UrlAttachmentBuilder extends StreamAttachmentWidgetBuilder { final StreamAttachmentWidgetTapCallback? onAttachmentTap; @override - bool canHandle(Message message, - Map> attachments,) { + bool canHandle( + Message message, + Map> attachments, + ) { final urls = attachments[AttachmentType.urlPreview]; return urls != null && urls.isNotEmpty; } @override - Widget build(BuildContext context, - Message message, - Map> attachments,) { + Widget build( + BuildContext context, + Message message, + Map> attachments, + ) { assert(debugAssertCanHandle(message, attachments), ''); final urlPreviews = attachments[AttachmentType.urlPreview]!; - final client = StreamChat - .of(context) - .client; + final client = StreamChat.of(context).client; final isMyMessage = message.user?.id == client.state.currentUser?.id; final streamChatTheme = StreamChatTheme.of(context); @@ -60,9 +62,7 @@ class UrlAttachmentBuilder extends StreamAttachmentWidgetBuilder { onTap = () => onAttachmentTap!(message, urlPreview); } - final host = Uri - .parse(urlPreview.titleLink!) - .host; + final host = Uri.parse(urlPreview.titleLink!).host; final splitList = host.split('.'); final hostName = splitList.length == 3 ? splitList[1] : splitList[0]; final hostDisplayName = urlPreview.authorName?.capitalize() ?? From 9f4c31c1bd0e08378816a9b24542877e870cea7b Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 18 Aug 2023 19:50:05 +0530 Subject: [PATCH 11/11] chore: fix lints. Signed-off-by: Sahil Kumar --- .../lib/src/fullscreen_media/full_screen_media.dart | 10 +++------- .../fullscreen_media/full_screen_media_desktop.dart | 10 +++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart index f5a733618..53e6f1a13 100644 --- a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media.dart @@ -288,12 +288,8 @@ class _FullScreenMediaState extends State { : Colors.black, child: Builder( builder: (context) { - if (attachment.type == 'image' || - attachment.type == 'giphy') { - final imageUrl = attachment.imageUrl ?? - attachment.assetUrl ?? - attachment.thumbUrl; - + if (attachment.type == AttachmentType.image || + attachment.type == AttachmentType.giphy) { return PhotoView.customChild( maxScale: PhotoViewComputedScale.covered, minScale: PhotoViewComputedScale.contained, @@ -306,7 +302,7 @@ class _FullScreenMediaState extends State { height: double.infinity, ), ); - } else if (attachment.type == 'video') { + } else if (attachment.type == AttachmentType.video) { final controller = videoPackages[attachment.id]!; if (!controller.initialized) { return const Center( diff --git a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart index e469386af..787b4b3d1 100644 --- a/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart +++ b/packages/stream_chat_flutter/lib/src/fullscreen_media/full_screen_media_desktop.dart @@ -317,12 +317,8 @@ class _FullScreenMediaDesktopState extends State { : Colors.black, child: Builder( builder: (context) { - if (attachment.type == 'image' || - attachment.type == 'giphy') { - final imageUrl = attachment.imageUrl ?? - attachment.assetUrl ?? - attachment.thumbUrl; - + if (attachment.type == AttachmentType.image || + attachment.type == AttachmentType.giphy) { return PhotoView.customChild( maxScale: PhotoViewComputedScale.covered, minScale: PhotoViewComputedScale.contained, @@ -335,7 +331,7 @@ class _FullScreenMediaDesktopState extends State { height: double.infinity, ), ); - } else if (attachment.type == 'video') { + } else if (attachment.type == AttachmentType.video) { final package = videoPackages[attachment.id]!; package.player.open( Playlist(