From 7d62912300f619bb01555cef9431b0595ca5e850 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 10 Apr 2020 18:09:36 +0200 Subject: [PATCH] add better mime detection --- lib/src/message_input.dart | 31 ++++++++++++++++++++++++------- lib/src/message_widget.dart | 4 +++- pubspec.yaml | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/lib/src/message_input.dart b/lib/src/message_input.dart index 7049c68b..d4ff148a 100644 --- a/lib/src/message_input.dart +++ b/lib/src/message_input.dart @@ -5,6 +5,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart'; import 'package:image_picker/image_picker.dart'; +import 'package:mime/mime.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat_flutter/src/message_list_view.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; @@ -634,14 +635,30 @@ class _MessageInputState extends State { _attachments.add(attachment); }); - final res = await channel.sendFile( - MultipartFile.fromBytes( - bytes, - filename: file.path.split('/').last, - ), - ); + String url; + final filename = file.path.split('/').last; - attachment.url = res.file; + if (type == FileType.image) { + final res = await channel.sendImage( + MultipartFile.fromBytes( + bytes, + filename: filename, + contentType: MediaType.parse(lookupMimeType(filename)), + ), + ); + url = res.file; + } else { + final res = await channel.sendFile( + MultipartFile.fromBytes( + bytes, + filename: filename, + contentType: MediaType.parse(lookupMimeType(filename)), + ), + ); + url = res.file; + } + + attachment.url = url; setState(() { attachment.uploaded = true; diff --git a/lib/src/message_widget.dart b/lib/src/message_widget.dart index 73d080d2..1e909033 100644 --- a/lib/src/message_widget.dart +++ b/lib/src/message_widget.dart @@ -949,7 +949,9 @@ class _MessageWidgetState extends State } return FutureBuilder( - future: videoController.initialize(), + future: videoController.value.initialized + ? Future.value(true) + : videoController.initialize(), builder: (_, snapshot) { if (snapshot.connectionState != ConnectionState.done) { return Container( diff --git a/pubspec.yaml b/pubspec.yaml index 68745af2..28ec8190 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,7 @@ dependencies: image_picker: ^0.6.4 flutter_keyboard_visibility: ^0.8.0 stream_chat: ^0.1.21 + mime: ^0.9.6+3 visibility_detector: ^0.1.4 dev_dependencies: