From 1c5580ba628aa3f884f1ea8cf64ed765e87d62b2 Mon Sep 17 00:00:00 2001 From: Krille Date: Thu, 20 Feb 2025 16:45:51 +0100 Subject: [PATCH] chore: Combine mimetype types in send file dialog logic --- lib/pages/chat/send_file_dialog.dart | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/pages/chat/send_file_dialog.dart b/lib/pages/chat/send_file_dialog.dart index aea3c4e59..2e522e44a 100644 --- a/lib/pages/chat/send_file_dialog.dart +++ b/lib/pages/chat/send_file_dialog.dart @@ -161,8 +161,9 @@ class SendFileDialogState extends State { final theme = Theme.of(context); var sendStr = L10n.of(context).sendFile; - final uniqueMimeType = widget.files + final uniqueFileType = widget.files .map((file) => file.mimeType ?? lookupMimeType(file.name)) + .map((mimeType) => mimeType?.split('/').first) .toSet() .singleOrNull; @@ -175,15 +176,15 @@ class SendFileDialogState extends State { .join(', ') .toUpperCase(); - if (uniqueMimeType?.startsWith('image') ?? false) { + if (uniqueFileType == 'image') { if (widget.files.length == 1) { sendStr = L10n.of(context).sendImage; } else { sendStr = L10n.of(context).sendImages(widget.files.length); } - } else if (uniqueMimeType?.startsWith('audio') ?? false) { + } else if (uniqueFileType == 'audio') { sendStr = L10n.of(context).sendAudio; - } else if (uniqueMimeType?.startsWith('video') ?? false) { + } else if (uniqueFileType == 'video') { sendStr = L10n.of(context).sendVideo; } @@ -201,7 +202,7 @@ class SendFileDialogState extends State { mainAxisSize: MainAxisSize.min, children: [ const SizedBox(height: 12), - if (uniqueMimeType?.startsWith('image') ?? false) + if (uniqueFileType == 'image') Padding( padding: const EdgeInsets.only(bottom: 16.0), child: SizedBox( @@ -233,17 +234,17 @@ class SendFileDialogState extends State { ), ), ), - if (uniqueMimeType?.startsWith('image') != true) + if (uniqueFileType != 'image') Padding( padding: const EdgeInsets.only(bottom: 16.0), child: Row( children: [ Icon( - uniqueMimeType == null + uniqueFileType == null ? Icons.description_outlined - : uniqueMimeType.startsWith('video') + : uniqueFileType == 'video' ? Icons.video_file_outlined - : uniqueMimeType.startsWith('audio') + : uniqueFileType == 'audio' ? Icons.audio_file_outlined : Icons.description_outlined, size: 32, @@ -272,9 +273,7 @@ class SendFileDialogState extends State { ), ), // Workaround for SwitchListTile.adaptive crashes in CupertinoDialog - if (uniqueMimeType != null && - (uniqueMimeType.startsWith('image') || - uniqueMimeType.startsWith('video'))) + if ({'image', 'video'}.contains(uniqueFileType)) Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -282,7 +281,7 @@ class SendFileDialogState extends State { .contains(theme.platform)) CupertinoSwitch( value: compress, - onChanged: uniqueMimeType.startsWith('video') && + onChanged: uniqueFileType == 'video' && !PlatformInfos.isMobile ? null : (v) => setState(() => compress = v), @@ -290,7 +289,7 @@ class SendFileDialogState extends State { else Switch.adaptive( value: compress, - onChanged: uniqueMimeType.startsWith('video') && + onChanged: uniqueFileType == 'video' && !PlatformInfos.isMobile ? null : (v) => setState(() => compress = v),