From 7c455ef56bcbf0c1b779554500b6c7afc7d418ef Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Sun, 3 May 2020 11:56:53 +0200 Subject: [PATCH] Fix no thumbnail bug --- lib/components/message_content.dart | 53 ++--------------- lib/components/message_download_content.dart | 60 ++++++++++++++++++++ 2 files changed, 66 insertions(+), 47 deletions(-) create mode 100644 lib/components/message_download_content.dart diff --git a/lib/components/message_content.dart b/lib/components/message_content.dart index 0b5cc02..9fe175c 100644 --- a/lib/components/message_content.dart +++ b/lib/components/message_content.dart @@ -6,10 +6,8 @@ import 'package:fluffychat/utils/event_extension.dart'; import 'package:flutter/material.dart'; import 'package:link_text/link_text.dart'; import 'package:url_launcher/url_launcher.dart'; -import 'package:fluffychat/utils/matrix_file_extension.dart'; - -import 'dialogs/simple_dialogs.dart'; import 'matrix.dart'; +import 'message_download_content.dart'; class MessageContent extends StatelessWidget { final Event event; @@ -26,7 +24,10 @@ class MessageContent extends StatelessWidget { switch (event.messageType) { case MessageTypes.Image: case MessageTypes.Sticker: - return ImageBubble(event); + if (event.hasThumbnail) { + return ImageBubble(event); + } + return MessageDownloadContent(event, textColor); case MessageTypes.Audio: return AudioPlayer( event, @@ -34,49 +35,7 @@ class MessageContent extends StatelessWidget { ); case MessageTypes.Video: case MessageTypes.File: - return Container( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - children: [ - RaisedButton( - color: Colors.blueGrey, - child: Text( - I18n.of(context).downloadFile, - overflow: TextOverflow.fade, - softWrap: false, - maxLines: 1, - style: TextStyle(color: Colors.white), - ), - onPressed: () async { - final MatrixFile matrixFile = - await SimpleDialogs(context) - .tryRequestWithLoadingDialog( - event.downloadAndDecryptAttachment(), - ); - matrixFile.open(); - }), - Text( - "- " + - (event.content.containsKey("filename") - ? event.content["filename"] - : event.body), - style: TextStyle( - color: textColor, - fontWeight: FontWeight.bold, - ), - ), - if (event.sizeString != null) - Text( - "- " + event.sizeString, - style: TextStyle( - color: textColor, - fontWeight: FontWeight.bold, - ), - ), - ], - ), - ); + return MessageDownloadContent(event, textColor); case MessageTypes.BadEncrypted: case MessageTypes.Text: case MessageTypes.Reply: diff --git a/lib/components/message_download_content.dart b/lib/components/message_download_content.dart new file mode 100644 index 0000000..0bd15ee --- /dev/null +++ b/lib/components/message_download_content.dart @@ -0,0 +1,60 @@ +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/i18n/i18n.dart'; +import 'package:flutter/material.dart'; +import 'package:fluffychat/utils/matrix_file_extension.dart'; +import 'package:fluffychat/utils/event_extension.dart'; +import 'dialogs/simple_dialogs.dart'; + +class MessageDownloadContent extends StatelessWidget { + final Event event; + final Color textColor; + + const MessageDownloadContent(this.event, this.textColor, {Key key}) + : super(key: key); + + @override + Widget build(BuildContext context) { + return Container( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + RaisedButton( + color: Colors.blueGrey, + child: Text( + I18n.of(context).downloadFile, + overflow: TextOverflow.fade, + softWrap: false, + maxLines: 1, + style: TextStyle(color: Colors.white), + ), + onPressed: () async { + final MatrixFile matrixFile = + await SimpleDialogs(context).tryRequestWithLoadingDialog( + event.downloadAndDecryptAttachment(), + ); + matrixFile.open(); + }), + Text( + "- " + + (event.content.containsKey("filename") + ? event.content["filename"] + : event.body), + style: TextStyle( + color: textColor, + fontWeight: FontWeight.bold, + ), + ), + if (event.sizeString != null) + Text( + "- " + event.sizeString, + style: TextStyle( + color: textColor, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ); + } +}