From 9bee33dd49bf38db79ffc440d2a149fc526f5948 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 22 Jun 2023 00:09:54 +0530 Subject: [PATCH] chore(ui): minor refactoring. Signed-off-by: xsahil03x --- .../message_input/stream_message_input.dart | 71 ++++++++++--------- 1 file changed, 39 insertions(+), 32 deletions(-) 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 97391d6a..e8ce137e 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 @@ -1167,23 +1167,30 @@ class StreamMessageInputState extends State Widget _buildReplyToMessage() { if (!_hasQuotedMessage) return const Offstage(); - final containsUrl = _effectiveController.message.quotedMessage!.attachments - .any((element) => element.titleLink != null); + final quotedMessage = _effectiveController.message.quotedMessage!; - return widget.quotedMessageBuilder?.call( - context, - _effectiveController.message.quotedMessage!, - ) ?? - StreamQuotedMessageWidget( - reverse: true, - showBorder: !containsUrl, - message: _effectiveController.message.quotedMessage!, - messageTheme: _streamChatTheme.otherMessageTheme, - padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), - onQuotedMessageClear: widget.onQuotedMessageCleared, - attachmentThumbnailBuilders: - widget.quotedMessageAttachmentThumbnailBuilders, - ); + final quotedMessageBuilder = widget.quotedMessageBuilder; + if (quotedMessageBuilder != null) { + return quotedMessageBuilder( + context, + _effectiveController.message.quotedMessage!, + ); + } + + final containsUrl = quotedMessage.attachments.any((it) { + return it.titleLink != null; + }); + + return StreamQuotedMessageWidget( + reverse: true, + showBorder: !containsUrl, + message: quotedMessage, + messageTheme: _streamChatTheme.otherMessageTheme, + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + onQuotedMessageClear: widget.onQuotedMessageCleared, + attachmentThumbnailBuilders: + widget.quotedMessageAttachmentThumbnailBuilders, + ); } Widget _buildAttachments() { @@ -1195,27 +1202,13 @@ class StreamMessageInputState extends State // If there are no attachments, return an empty widget if (nonOGAttachments.isEmpty) return const Offstage(); - // Default callback for removing an attachment. - Future onAttachmentRemovePressed(Attachment attachment) async { - final file = attachment.file; - final uploadState = attachment.uploadState; - - if (file != null && !uploadState.isSuccess && !isWeb) { - await StreamAttachmentHandler.instance.deleteAttachmentFile( - attachmentFile: file, - ); - } - - _effectiveController.removeAttachmentById(attachment.id); - } - // If the user has provided a custom attachment list builder, use that. final attachmentListBuilder = widget.attachmentListBuilder; if (attachmentListBuilder != null) { return attachmentListBuilder( context, nonOGAttachments, - onAttachmentRemovePressed, + _onAttachmentRemovePressed, ); } @@ -1224,7 +1217,7 @@ class StreamMessageInputState extends State maxHeight: 240, child: StreamMessageInputAttachmentList( attachments: nonOGAttachments, - onRemovePressed: onAttachmentRemovePressed, + onRemovePressed: _onAttachmentRemovePressed, fileAttachmentListBuilder: widget.fileAttachmentListBuilder, mediaAttachmentListBuilder: widget.mediaAttachmentListBuilder, fileAttachmentBuilder: widget.fileAttachmentBuilder, @@ -1270,6 +1263,20 @@ class StreamMessageInputState extends State ); } + // Default callback for removing an attachment. + Future _onAttachmentRemovePressed(Attachment attachment) async { + final file = attachment.file; + final uploadState = attachment.uploadState; + + if (file != null && !uploadState.isSuccess && !isWeb) { + await StreamAttachmentHandler.instance.deleteAttachmentFile( + attachmentFile: file, + ); + } + + _effectiveController.removeAttachmentById(attachment.id); + } + Widget _buildCommandButton(BuildContext context) { final s = _effectiveController.text.trim(); final isCommandOptionsVisible = s.startsWith(_kCommandTrigger);