From f812fbbdc51fe09592230c17d16a59936fd2789c Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 26 Feb 2021 13:23:24 +0100 Subject: [PATCH] default to success and hide indicators if not needed --- packages/stream_chat/lib/src/models/attachment.dart | 11 ++++++++--- .../attachment/attachment_upload_state_builder.dart | 4 +++- .../lib/src/attachment/file_attachment.dart | 12 ++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat/lib/src/models/attachment.dart b/packages/stream_chat/lib/src/models/attachment.dart index cc55aa71..e2e81cd9 100644 --- a/packages/stream_chat/lib/src/models/attachment.dart +++ b/packages/stream_chat/lib/src/models/attachment.dart @@ -58,7 +58,7 @@ class Attachment { final AttachmentFile file; /// The current upload state of the attachment - final UploadState uploadState; + UploadState uploadState; /// Map of custom channel extraData @JsonKey(includeIfNull: false) @@ -123,10 +123,15 @@ class Attachment { this.actions, this.extraData, this.file, - this.uploadState, + UploadState uploadState, }) : id = id ?? Uuid().v4(), title = title ?? file?.name, - localUri = file?.path != null ? Uri.parse(file.path) : null; + localUri = file?.path != null ? Uri.parse(file.path) : null { + this.uploadState = uploadState ?? + ((assetUrl != null || imageUrl != null) + ? UploadState.success() + : UploadState.preparing()); + } /// Create a new instance from a json factory Attachment.fromJson(Map json) { 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 fb65fd12..2425b966 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 @@ -27,7 +27,9 @@ class AttachmentUploadStateBuilder extends StatelessWidget { @override Widget build(BuildContext context) { - if (attachment.uploadState == null) return Offstage(); + if (message.status == null || message.status == MessageSendingStatus.sent) { + return Offstage(); + } final messageId = message.id; final attachmentId = attachment.id; 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 ee6b10c8..96d1cff2 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart @@ -227,6 +227,18 @@ class FileAttachment extends AttachmentWidget { }, ); + if (message.status == null || message.status == MessageSendingStatus.sent) { + trailingWidget = IconButton( + icon: StreamSvgIcon.cloudDownload(color: theme.colorTheme.black), + padding: const EdgeInsets.all(8), + visualDensity: VisualDensity.compact, + splashRadius: 16, + onPressed: () { + launchURL(context, attachment.assetUrl); + }, + ); + } + return Material( type: MaterialType.transparency, child: trailingWidget,