TF-2667 Fix width size inline image in email view after send email

This commit is contained in:
dab246
2024-03-22 03:02:07 +07:00
committed by Dat H. Pham
parent 31ff28d7d2
commit 6b82027090
5 changed files with 28 additions and 12 deletions
@@ -63,7 +63,8 @@ class DownloadClient {
'bytesData': bytesData, 'bytesData': bytesData,
'mimeType': 'image/$fileExtension', 'mimeType': 'image/$fileExtension',
'cid': cid, 'cid': cid,
'fileName': fileName 'fileName': fileName,
'maxWidth': maxWidth
}); });
return base64Uri; return base64Uri;
@@ -77,7 +78,8 @@ class DownloadClient {
'bytesData': bytesDataCompressed, 'bytesData': bytesDataCompressed,
'mimeType': 'image/$fileExtension', 'mimeType': 'image/$fileExtension',
'cid': cid, 'cid': cid,
'fileName': fileName 'fileName': fileName,
'maxWidth': maxWidth
}); });
return base64Uri; return base64Uri;
@@ -86,7 +88,8 @@ class DownloadClient {
'bytesData': bytesData, 'bytesData': bytesData,
'mimeType': 'image/$fileExtension', 'mimeType': 'image/$fileExtension',
'cid': cid, 'cid': cid,
'fileName': fileName 'fileName': fileName,
'maxWidth': maxWidth
}); });
return base64Uri; return base64Uri;
@@ -103,11 +106,14 @@ class DownloadClient {
var mimeType = entryParam['mimeType']; var mimeType = entryParam['mimeType'];
final cid = entryParam['cid']; final cid = entryParam['cid'];
var fileName = entryParam['fileName']; var fileName = entryParam['fileName'];
var maxWidth = entryParam['maxWidth'] != null
? '${entryParam['maxWidth']}px'
: '100%';
final base64Data = base64Encode(bytesData); final base64Data = base64Encode(bytesData);
if (fileName.contains('.')) { if (fileName.contains('.')) {
fileName = fileName.split('.').first; fileName = fileName.split('.').first;
} }
final base64Uri = '<img src="${HtmlUtils.convertBase64ToImageResourceData(base64Data: base64Data, mimeType: mimeType)}" alt="$fileName" id="cid:$cid" style="max-width: 100%;" />'; final base64Uri = '<img src="${HtmlUtils.convertBase64ToImageResourceData(base64Data: base64Data, mimeType: mimeType)}" alt="$fileName" id="cid:$cid" style="max-width: $maxWidth;" />';
return base64Uri; return base64Uri;
} }
} }
@@ -1587,7 +1587,7 @@ class ComposerController extends BaseController with DragDropFileMixin {
if (responsiveUtils.isMobile(context)) { if (responsiveUtils.isMobile(context)) {
maxWithEditor = maxWith - 40; maxWithEditor = maxWith - 40;
} else { } else {
maxWithEditor = maxWith - 120; maxWithEditor = maxWith - 70;
} }
consumeState(_localImagePickerInteractor.execute()); consumeState(_localImagePickerInteractor.execute());
@@ -2000,8 +2000,15 @@ class ComposerController extends BaseController with DragDropFileMixin {
void onLocalFileDropZoneListener({ void onLocalFileDropZoneListener({
required BuildContext context, required BuildContext context,
required DropDoneDetails details required DropDoneDetails details,
required double maxWidth
}) async { }) async {
if (responsiveUtils.isMobile(context)) {
maxWithEditor = maxWidth - 40;
} else {
maxWithEditor = maxWidth - 70;
}
final listFileInfo = await onDragDone(context: context, details: details); final listFileInfo = await onDragDone(context: context, details: details);
if (listFileInfo.isEmpty && context.mounted) { if (listFileInfo.isEmpty && context.mounted) {
@@ -248,7 +248,8 @@ class ComposerView extends GetWidget<ComposerController> {
onLocalFileDropZoneListener: (details) => onLocalFileDropZoneListener: (details) =>
controller.onLocalFileDropZoneListener( controller.onLocalFileDropZoneListener(
context: context, context: context,
details: details details: details,
maxWidth: constraintsEditor.maxWidth,
), ),
) )
), ),
@@ -503,7 +504,8 @@ class ComposerView extends GetWidget<ComposerController> {
onLocalFileDropZoneListener: (details) => onLocalFileDropZoneListener: (details) =>
controller.onLocalFileDropZoneListener( controller.onLocalFileDropZoneListener(
context: context, context: context,
details: details details: details,
maxWidth: constraintsEditor.maxWidth,
), ),
) )
), ),
@@ -731,7 +733,8 @@ class ComposerView extends GetWidget<ComposerController> {
onLocalFileDropZoneListener: (details) => onLocalFileDropZoneListener: (details) =>
controller.onLocalFileDropZoneListener( controller.onLocalFileDropZoneListener(
context: context, context: context,
details: details details: details,
maxWidth: constraintsEditor.maxWidth,
), ),
) )
), ),
@@ -279,11 +279,11 @@ class RichTextWebController extends BaseRichTextController {
menuOrderListController.hideMenu(); menuOrderListController.hideMenu();
} }
void insertImageAsBase64({required PlatformFile platformFile}) { void insertImageAsBase64({required PlatformFile platformFile, int? maxWidth}) {
if (platformFile.bytes != null) { if (platformFile.bytes != null) {
final base64Data = base64Encode(platformFile.bytes!); final base64Data = base64Encode(platformFile.bytes!);
editorController.insertHtml( editorController.insertHtml(
'<img src="${HtmlUtils.convertBase64ToImageResourceData(base64Data: base64Data, mimeType: 'image/${platformFile.extension}')}" data-filename="${platformFile.name}" alt="Image in my signature" style="max-width: 100%;"/>' '<img src="${HtmlUtils.convertBase64ToImageResourceData(base64Data: base64Data, mimeType: 'image/${platformFile.extension}')}" data-filename="${platformFile.name}" alt="Image in my signature" style="max-width: ${maxWidth != null ? '${maxWidth}px' : '100%'};"/>'
); );
} else { } else {
logError("RichTextWebController::insertImageAsBase64: bytes is null"); logError("RichTextWebController::insertImageAsBase64: bytes is null");
@@ -546,7 +546,7 @@ class IdentityCreatorController extends BaseController {
} }
} else { } else {
if (PlatformInfo.isWeb) { if (PlatformInfo.isWeb) {
richTextWebController.insertImageAsBase64(platformFile: file); richTextWebController.insertImageAsBase64(platformFile: file, maxWidth: maxWidth);
} else if (PlatformInfo.isMobile) { } else if (PlatformInfo.isMobile) {
richTextMobileTabletController.insertImageData(platformFile: file, maxWidth: maxWidth); richTextMobileTabletController.insertImageData(platformFile: file, maxWidth: maxWidth);
if (file.path != null) { if (file.path != null) {