chore(ui): minor refactoring.

Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
Sahil Kumar
2023-06-22 00:09:54 +05:30
committed by xsahil03x
parent fae538b506
commit 9bee33dd49
@@ -1167,17 +1167,24 @@ 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;
if (quotedMessageBuilder != null) {
return quotedMessageBuilder(
context, context,
_effectiveController.message.quotedMessage!, _effectiveController.message.quotedMessage!,
) ?? );
StreamQuotedMessageWidget( }
final containsUrl = quotedMessage.attachments.any((it) {
return it.titleLink != null;
});
return StreamQuotedMessageWidget(
reverse: true, reverse: true,
showBorder: !containsUrl, showBorder: !containsUrl,
message: _effectiveController.message.quotedMessage!, message: quotedMessage,
messageTheme: _streamChatTheme.otherMessageTheme, messageTheme: _streamChatTheme.otherMessageTheme,
padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), padding: const EdgeInsets.fromLTRB(8, 8, 8, 0),
onQuotedMessageClear: widget.onQuotedMessageCleared, onQuotedMessageClear: widget.onQuotedMessageCleared,
@@ -1195,27 +1202,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,
); );
} }
@@ -1224,7 +1217,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,
@@ -1270,6 +1263,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);