From 073f6bbd7dbe21bc73dd1e54dcc569bf8dc76ec1 Mon Sep 17 00:00:00 2001 From: Krille Fear Date: Wed, 1 Dec 2021 20:44:59 +0100 Subject: [PATCH 1/2] change: Do not compress very small images --- lib/pages/chat/send_file_dialog.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/pages/chat/send_file_dialog.dart b/lib/pages/chat/send_file_dialog.dart index 37ea7476..3b44680e 100644 --- a/lib/pages/chat/send_file_dialog.dart +++ b/lib/pages/chat/send_file_dialog.dart @@ -26,9 +26,14 @@ class _SendFileDialogState extends State { bool origImage = false; bool _isSending = false; + /// Images smaller than 20kb don't need compression. + static const int minSizeToCompress = 20 * 1024; + Future _send() async { var file = widget.file; - if (file is MatrixImageFile && !origImage) { + if (file is MatrixImageFile && + !origImage && + file.bytes.length > minSizeToCompress) { file = await file.resizeImage(quality: 40, max: 1200); } await widget.room.sendFileEventWithThumbnail(file); @@ -53,7 +58,6 @@ class _SendFileDialogState extends State { fit: BoxFit.contain, ), ), - Text(widget.file.name), Row( children: [ Checkbox( From 7540e99323ecf65ee769c6cd88162618910f6842 Mon Sep 17 00:00:00 2001 From: Krille Fear Date: Wed, 1 Dec 2021 20:45:07 +0100 Subject: [PATCH 2/2] refactor: Make send file dialog null safe --- lib/pages/chat/send_file_dialog.dart | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/lib/pages/chat/send_file_dialog.dart b/lib/pages/chat/send_file_dialog.dart index 3b44680e..58f1cb13 100644 --- a/lib/pages/chat/send_file_dialog.dart +++ b/lib/pages/chat/send_file_dialog.dart @@ -1,3 +1,5 @@ +//@dart=2.12 + import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; @@ -13,9 +15,9 @@ class SendFileDialog extends StatefulWidget { final MatrixFile file; const SendFileDialog({ - this.room, - this.file, - Key key, + required this.room, + required this.file, + Key? key, }) : super(key: key); @override @@ -41,13 +43,13 @@ class _SendFileDialogState extends State { @override Widget build(BuildContext context) { - var sendStr = L10n.of(context).sendFile; + var sendStr = L10n.of(context)!.sendFile; if (widget.file is MatrixImageFile) { - sendStr = L10n.of(context).sendImage; + sendStr = L10n.of(context)!.sendImage; } else if (widget.file is MatrixAudioFile) { - sendStr = L10n.of(context).sendAudio; + sendStr = L10n.of(context)!.sendAudio; } else if (widget.file is MatrixVideoFile) { - sendStr = L10n.of(context).sendVideo; + sendStr = L10n.of(context)!.sendVideo; } Widget contentWidget; if (widget.file is MatrixImageFile) { @@ -62,11 +64,11 @@ class _SendFileDialogState extends State { children: [ Checkbox( value: origImage, - onChanged: (v) => setState(() => origImage = v), + onChanged: (v) => setState(() => origImage = v ?? false), ), InkWell( onTap: () => setState(() => origImage = !origImage), - child: Text(L10n.of(context).sendOriginal + + child: Text(L10n.of(context)!.sendOriginal + ' (${widget.file.sizeString})'), ), ], @@ -84,7 +86,7 @@ class _SendFileDialogState extends State { // just close the dialog Navigator.of(context, rootNavigator: false).pop(); }, - child: Text(L10n.of(context).cancel), + child: Text(L10n.of(context)!.cancel), ), TextButton( onPressed: _isSending @@ -97,7 +99,7 @@ class _SendFileDialogState extends State { context: context, future: () => _send()); Navigator.of(context, rootNavigator: false).pop(); }, - child: Text(L10n.of(context).send), + child: Text(L10n.of(context)!.send), ), ], );