Fix some file with mimeType is empty cannot drag n drop attachment
(cherry picked from commit ad223e1e9d3d6da67e247341ff2da52dbcf4a412)
This commit is contained in:
@@ -3,14 +3,14 @@ import 'package:core/domain/preview/supported_preview_file_types.dart';
|
|||||||
import 'package:http_parser/http_parser.dart';
|
import 'package:http_parser/http_parser.dart';
|
||||||
|
|
||||||
extension MediaTypeExtension on MediaType {
|
extension MediaTypeExtension on MediaType {
|
||||||
|
static const String imageType = 'image';
|
||||||
|
|
||||||
bool isAndroidSupportedPreview() => SupportedPreviewFileTypes.androidSupportedTypes.contains(mimeType);
|
bool isAndroidSupportedPreview() => SupportedPreviewFileTypes.androidSupportedTypes.contains(mimeType);
|
||||||
|
|
||||||
bool isIOSSupportedPreview() => SupportedPreviewFileTypes.iOSSupportedTypes.containsKey(mimeType);
|
bool isIOSSupportedPreview() => SupportedPreviewFileTypes.iOSSupportedTypes.containsKey(mimeType);
|
||||||
|
|
||||||
bool isImageFile() => SupportedPreviewFileTypes.imageMimeTypes.contains(mimeType);
|
bool isImageFile() => SupportedPreviewFileTypes.imageMimeTypes.contains(mimeType);
|
||||||
|
|
||||||
bool isImageValid() => type == 'image';
|
|
||||||
|
|
||||||
bool isDocFile() => SupportedPreviewFileTypes.docMimeTypes.contains(mimeType);
|
bool isDocFile() => SupportedPreviewFileTypes.docMimeTypes.contains(mimeType);
|
||||||
|
|
||||||
bool isPowerPointFile() => SupportedPreviewFileTypes.pptMimeTypes.contains(mimeType);
|
bool isPowerPointFile() => SupportedPreviewFileTypes.pptMimeTypes.contains(mimeType);
|
||||||
|
|||||||
@@ -1955,26 +1955,10 @@ class ComposerController extends BaseController {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fileUpload.type == null) {
|
if (fileUpload.type?.startsWith(MediaTypeExtension.imageType) == true) {
|
||||||
final fileInfo = await fileUpload.toFileInfo();
|
|
||||||
if (fileInfo != null) {
|
|
||||||
_addAttachmentFromDragAndDrop(fileInfo: fileInfo);
|
|
||||||
} else if (context.mounted) {
|
|
||||||
_appToast.showToastErrorMessage(
|
|
||||||
context,
|
|
||||||
AppLocalizations.of(context).can_not_upload_this_file_as_attachments
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final mediaType = MediaType.parse(fileUpload.type!);
|
|
||||||
if (mediaType.isImageValid()) {
|
|
||||||
_addInlineImageFromDragAndDrop(
|
_addInlineImageFromDragAndDrop(
|
||||||
base64Data: fileUpload.base64!,
|
base64Data: fileUpload.base64!,
|
||||||
name: fileUpload.name,
|
name: fileUpload.name,
|
||||||
type: mediaType,
|
|
||||||
size: fileUpload.size,
|
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
final fileInfo = await fileUpload.toFileInfo();
|
final fileInfo = await fileUpload.toFileInfo();
|
||||||
@@ -1989,19 +1973,9 @@ class ComposerController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _addInlineImageFromDragAndDrop({
|
void _addInlineImageFromDragAndDrop({required String base64Data, String? name}) {
|
||||||
required String base64Data,
|
|
||||||
String? name,
|
|
||||||
MediaType? type,
|
|
||||||
int? size
|
|
||||||
}) {
|
|
||||||
log('ComposerController::_addInlineImageFromDragAndDrop:name: $name');
|
log('ComposerController::_addInlineImageFromDragAndDrop:name: $name');
|
||||||
richTextWebController.insertInlineImage(
|
richTextWebController.insertInlineImage(base64Data: base64Data, name: name);
|
||||||
base64Data: base64Data,
|
|
||||||
name: name,
|
|
||||||
type: type,
|
|
||||||
size: size,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleImageUploadFailure({
|
void handleImageUploadFailure({
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import 'package:file_picker/file_picker.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:html_editor_enhanced/html_editor.dart';
|
import 'package:html_editor_enhanced/html_editor.dart';
|
||||||
import 'package:http_parser/http_parser.dart';
|
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/model/code_view_state.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/model/code_view_state.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/model/dropdown_menu_font_status.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/model/dropdown_menu_font_status.dart';
|
||||||
import 'package:tmail_ui_user/features/composer/presentation/model/formatting_options_state.dart';
|
import 'package:tmail_ui_user/features/composer/presentation/model/formatting_options_state.dart';
|
||||||
@@ -186,13 +185,8 @@ class RichTextWebController extends BaseRichTextController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void insertInlineImage({
|
void insertInlineImage({required String base64Data, String? name}) async {
|
||||||
required String base64Data,
|
log('RichTextWebController::insertInlineImage():name: $name');
|
||||||
String? name,
|
|
||||||
MediaType? type,
|
|
||||||
int? size,
|
|
||||||
}) async {
|
|
||||||
log('RichTextWebController::insertInlineImage():name: $name | type: $type');
|
|
||||||
final base64Uri = '<img src="$base64Data" data-filename="$name" alt="Inline Image TeamMail" style="max-width: 100%" />';
|
final base64Uri = '<img src="$base64Data" data-filename="$name" alt="Inline Image TeamMail" style="max-width: 100%" />';
|
||||||
editorController.insertHtml(base64Uri);
|
editorController.insertHtml(base64Uri);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import 'package:jmap_dart_client/jmap/mail/email/email_body_part.dart';
|
|||||||
import 'package:jmap_dart_client/jmap/mail/email/email_body_value.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_body_value.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:model/email/email_content.dart';
|
import 'package:model/email/email_content.dart';
|
||||||
import 'package:model/extensions/media_type_extension.dart';
|
import 'package:model/extensions/media_type_nullable_extension.dart';
|
||||||
|
|
||||||
class ComposerCache with EquatableMixin {
|
class ComposerCache with EquatableMixin {
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import 'package:jmap_dart_client/jmap/mail/email/keyword_identifier.dart';
|
|||||||
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
|
||||||
import 'package:model/email/email_content.dart';
|
import 'package:model/email/email_content.dart';
|
||||||
import 'package:model/extensions/email_address_extension.dart';
|
import 'package:model/extensions/email_address_extension.dart';
|
||||||
import 'package:model/extensions/media_type_extension.dart';
|
import 'package:model/extensions/media_type_nullable_extension.dart';
|
||||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||||
import 'package:model/mailbox/select_mode.dart';
|
import 'package:model/mailbox/select_mode.dart';
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
import 'package:http_parser/http_parser.dart';
|
import 'package:http_parser/http_parser.dart';
|
||||||
import 'package:model/email/email_content_type.dart';
|
import 'package:model/email/email_content_type.dart';
|
||||||
|
|
||||||
extension MediaTypeExtension on MediaType? {
|
extension MediaTypeNullableExtension on MediaType? {
|
||||||
|
|
||||||
EmailContentType toEmailContentType() {
|
EmailContentType toEmailContentType() {
|
||||||
if (this == null) {
|
if (this == null) {
|
||||||
@@ -43,7 +43,7 @@ export 'extensions/list_presentation_email_extension.dart';
|
|||||||
export 'extensions/mailbox_extension.dart';
|
export 'extensions/mailbox_extension.dart';
|
||||||
export 'extensions/mailbox_id_extension.dart';
|
export 'extensions/mailbox_id_extension.dart';
|
||||||
export 'extensions/mailbox_name_extension.dart';
|
export 'extensions/mailbox_name_extension.dart';
|
||||||
export 'extensions/media_type_extension.dart';
|
export 'extensions/media_type_nullable_extension.dart';
|
||||||
export 'extensions/presentation_email_extension.dart';
|
export 'extensions/presentation_email_extension.dart';
|
||||||
export 'extensions/presentation_mailbox_extension.dart';
|
export 'extensions/presentation_mailbox_extension.dart';
|
||||||
export 'extensions/properties_extension.dart';
|
export 'extensions/properties_extension.dart';
|
||||||
|
|||||||
Reference in New Issue
Block a user