Merge branch 'develop' into refactor/message-status

This commit is contained in:
Sahil Kumar
2023-06-22 00:11:13 +05:30
committed by GitHub
@@ -1166,23 +1166,30 @@ class StreamMessageInputState extends State<StreamMessageInput>
Widget _buildReplyToMessage() { Widget _buildReplyToMessage() {
if (!_hasQuotedMessage) return const Offstage(); if (!_hasQuotedMessage) return const Offstage();
final containsUrl = _effectiveController.message.quotedMessage!.attachments final quotedMessage = _effectiveController.message.quotedMessage!;
.any((element) => element.titleLink != null);
return widget.quotedMessageBuilder?.call( final quotedMessageBuilder = widget.quotedMessageBuilder;
context, if (quotedMessageBuilder != null) {
_effectiveController.message.quotedMessage!, return quotedMessageBuilder(
) ?? context,
StreamQuotedMessageWidget( _effectiveController.message.quotedMessage!,
reverse: true, );
showBorder: !containsUrl, }
message: _effectiveController.message.quotedMessage!,
messageTheme: _streamChatTheme.otherMessageTheme, final containsUrl = quotedMessage.attachments.any((it) {
padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), return it.titleLink != null;
onQuotedMessageClear: widget.onQuotedMessageCleared, });
attachmentThumbnailBuilders:
widget.quotedMessageAttachmentThumbnailBuilders, 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() { Widget _buildAttachments() {
@@ -1194,27 +1201,13 @@ class StreamMessageInputState extends State<StreamMessageInput>
// If there are no attachments, return an empty widget // If there are no attachments, return an empty widget
if (nonOGAttachments.isEmpty) return const Offstage(); if (nonOGAttachments.isEmpty) return const Offstage();
// Default callback for removing an attachment.
Future<void> 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. // If the user has provided a custom attachment list builder, use that.
final attachmentListBuilder = widget.attachmentListBuilder; final attachmentListBuilder = widget.attachmentListBuilder;
if (attachmentListBuilder != null) { if (attachmentListBuilder != null) {
return attachmentListBuilder( return attachmentListBuilder(
context, context,
nonOGAttachments, nonOGAttachments,
onAttachmentRemovePressed, _onAttachmentRemovePressed,
); );
} }
@@ -1223,7 +1216,7 @@ class StreamMessageInputState extends State<StreamMessageInput>
maxHeight: 240, maxHeight: 240,
child: StreamMessageInputAttachmentList( child: StreamMessageInputAttachmentList(
attachments: nonOGAttachments, attachments: nonOGAttachments,
onRemovePressed: onAttachmentRemovePressed, onRemovePressed: _onAttachmentRemovePressed,
fileAttachmentListBuilder: widget.fileAttachmentListBuilder, fileAttachmentListBuilder: widget.fileAttachmentListBuilder,
mediaAttachmentListBuilder: widget.mediaAttachmentListBuilder, mediaAttachmentListBuilder: widget.mediaAttachmentListBuilder,
fileAttachmentBuilder: widget.fileAttachmentBuilder, fileAttachmentBuilder: widget.fileAttachmentBuilder,
@@ -1269,6 +1262,20 @@ class StreamMessageInputState extends State<StreamMessageInput>
); );
} }
// Default callback for removing an attachment.
Future<void> _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) { Widget _buildCommandButton(BuildContext context) {
final s = _effectiveController.text.trim(); final s = _effectiveController.text.trim();
final isCommandOptionsVisible = s.startsWith(_kCommandTrigger); final isCommandOptionsVisible = s.startsWith(_kCommandTrigger);