TF-3035 Show and hide signature toggle button on draft
This commit is contained in:
@@ -61,9 +61,7 @@ class ComposerRepositoryImpl extends ComposerRepository {
|
|||||||
emailAttachments.addAll(tupleContentInlineAttachments.value2);
|
emailAttachments.addAll(tupleContentInlineAttachments.value2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (createEmailRequest.draftsMailboxId == null) {
|
emailContent = await _removeCollapsedExpandedSignatureEffect(emailContent: emailContent);
|
||||||
emailContent = await _removeCollapsedExpandedSignatureEffect(emailContent: emailContent);
|
|
||||||
}
|
|
||||||
|
|
||||||
final userAgent = await _applicationManager.generateApplicationUserAgent();
|
final userAgent = await _applicationManager.generateApplicationUserAgent();
|
||||||
final emailBodyPartId = PartId(_uuid.v1());
|
final emailBodyPartId = PartId(_uuid.v1());
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:html/parser.dart';
|
||||||
import 'package:html_editor_enhanced/html_editor.dart';
|
import 'package:html_editor_enhanced/html_editor.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
import 'package:jmap_dart_client/jmap/core/properties/properties.dart';
|
||||||
@@ -1437,6 +1438,18 @@ class ComposerController extends BaseController with DragDropFileMixin implement
|
|||||||
identitySelected.value = selectedIdentityFromHeader;
|
identitySelected.value = selectedIdentityFromHeader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> restoreCollapsibleButton(String? emailContent) async {
|
||||||
|
try {
|
||||||
|
if (emailContent == null) return;
|
||||||
|
final emailDocument = parse(emailContent);
|
||||||
|
final signature = emailDocument.querySelector('div.tmail-signature');
|
||||||
|
if (signature == null) return;
|
||||||
|
await _applySignature(signature.innerHtml);
|
||||||
|
} catch (e) {
|
||||||
|
logError('ComposerController::_restoreCollapsibleButton: $e');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void _transformHtmlEmailContent(String? emailContent) {
|
void _transformHtmlEmailContent(String? emailContent) {
|
||||||
emailContentsViewState(Right(TransformHtmlEmailContentLoading()));
|
emailContentsViewState(Right(TransformHtmlEmailContentLoading()));
|
||||||
if (emailContent?.isEmpty == true) {
|
if (emailContent?.isEmpty == true) {
|
||||||
|
|||||||
@@ -202,6 +202,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
base64: base64,
|
base64: base64,
|
||||||
uploadError: uploadError
|
uploadError: uploadError
|
||||||
),
|
),
|
||||||
|
onInitialContentLoadComplete: controller.restoreCollapsibleButton,
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -454,6 +455,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
base64: base64,
|
base64: base64,
|
||||||
uploadError: uploadError
|
uploadError: uploadError
|
||||||
),
|
),
|
||||||
|
onInitialContentLoadComplete: controller.restoreCollapsibleButton,
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
@@ -724,6 +726,7 @@ class ComposerView extends GetWidget<ComposerController> {
|
|||||||
base64: base64,
|
base64: base64,
|
||||||
uploadError: uploadError
|
uploadError: uploadError
|
||||||
),
|
),
|
||||||
|
onInitialContentLoadComplete: controller.restoreCollapsibleButton,
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
|
|||||||
final OnDragEnterListener? onDragEnter;
|
final OnDragEnterListener? onDragEnter;
|
||||||
final OnPasteImageSuccessAction? onPasteImageSuccessAction;
|
final OnPasteImageSuccessAction? onPasteImageSuccessAction;
|
||||||
final OnPasteImageFailureAction? onPasteImageFailureAction;
|
final OnPasteImageFailureAction? onPasteImageFailureAction;
|
||||||
|
final OnInitialContentLoadComplete? onInitialContentLoadComplete;
|
||||||
|
|
||||||
const WebEditorView({
|
const WebEditorView({
|
||||||
super.key,
|
super.key,
|
||||||
@@ -52,6 +53,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
|
|||||||
this.onDragEnter,
|
this.onDragEnter,
|
||||||
this.onPasteImageSuccessAction,
|
this.onPasteImageSuccessAction,
|
||||||
this.onPasteImageFailureAction,
|
this.onPasteImageFailureAction,
|
||||||
|
this.onInitialContentLoadComplete,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -80,6 +82,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
|
|||||||
onDragEnter: onDragEnter,
|
onDragEnter: onDragEnter,
|
||||||
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
||||||
onPasteImageFailureAction: onPasteImageFailureAction,
|
onPasteImageFailureAction: onPasteImageFailureAction,
|
||||||
|
onInitialContentLoadComplete: onInitialContentLoadComplete,
|
||||||
);
|
);
|
||||||
case EmailActionType.editDraft:
|
case EmailActionType.editDraft:
|
||||||
case EmailActionType.editSendingEmail:
|
case EmailActionType.editSendingEmail:
|
||||||
@@ -107,6 +110,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
|
|||||||
onDragEnter: onDragEnter,
|
onDragEnter: onDragEnter,
|
||||||
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
||||||
onPasteImageFailureAction: onPasteImageFailureAction,
|
onPasteImageFailureAction: onPasteImageFailureAction,
|
||||||
|
onInitialContentLoadComplete: onInitialContentLoadComplete,
|
||||||
),
|
),
|
||||||
(success) {
|
(success) {
|
||||||
if (success is GetEmailContentLoading || success is RestoringEmailInlineImages) {
|
if (success is GetEmailContentLoading || success is RestoringEmailInlineImages) {
|
||||||
@@ -134,6 +138,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
|
|||||||
onDragEnter: onDragEnter,
|
onDragEnter: onDragEnter,
|
||||||
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
||||||
onPasteImageFailureAction: onPasteImageFailureAction,
|
onPasteImageFailureAction: onPasteImageFailureAction,
|
||||||
|
onInitialContentLoadComplete: onInitialContentLoadComplete,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -168,6 +173,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
|
|||||||
onDragEnter: onDragEnter,
|
onDragEnter: onDragEnter,
|
||||||
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
||||||
onPasteImageFailureAction: onPasteImageFailureAction,
|
onPasteImageFailureAction: onPasteImageFailureAction,
|
||||||
|
onInitialContentLoadComplete: onInitialContentLoadComplete,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
(success) {
|
(success) {
|
||||||
@@ -198,6 +204,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
|
|||||||
onDragEnter: onDragEnter,
|
onDragEnter: onDragEnter,
|
||||||
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
||||||
onPasteImageFailureAction: onPasteImageFailureAction,
|
onPasteImageFailureAction: onPasteImageFailureAction,
|
||||||
|
onInitialContentLoadComplete: onInitialContentLoadComplete,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -219,6 +226,7 @@ class WebEditorView extends StatelessWidget with EditorViewMixin {
|
|||||||
onDragEnter: onDragEnter,
|
onDragEnter: onDragEnter,
|
||||||
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
onPasteImageSuccessAction: onPasteImageSuccessAction,
|
||||||
onPasteImageFailureAction: onPasteImageFailureAction,
|
onPasteImageFailureAction: onPasteImageFailureAction,
|
||||||
|
onInitialContentLoadComplete: onInitialContentLoadComplete,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ typedef OnPasteImageFailureAction = Function(
|
|||||||
List<FileUpload>? listFileUpload,
|
List<FileUpload>? listFileUpload,
|
||||||
String? base64,
|
String? base64,
|
||||||
UploadError uploadError);
|
UploadError uploadError);
|
||||||
|
typedef OnInitialContentLoadComplete = Function(String text);
|
||||||
|
|
||||||
class WebEditorWidget extends StatefulWidget {
|
class WebEditorWidget extends StatefulWidget {
|
||||||
|
|
||||||
@@ -36,6 +37,7 @@ class WebEditorWidget extends StatefulWidget {
|
|||||||
final OnDragEnterListener? onDragEnter;
|
final OnDragEnterListener? onDragEnter;
|
||||||
final OnPasteImageSuccessAction? onPasteImageSuccessAction;
|
final OnPasteImageSuccessAction? onPasteImageSuccessAction;
|
||||||
final OnPasteImageFailureAction? onPasteImageFailureAction;
|
final OnPasteImageFailureAction? onPasteImageFailureAction;
|
||||||
|
final OnInitialContentLoadComplete? onInitialContentLoadComplete;
|
||||||
|
|
||||||
const WebEditorWidget({
|
const WebEditorWidget({
|
||||||
super.key,
|
super.key,
|
||||||
@@ -54,6 +56,7 @@ class WebEditorWidget extends StatefulWidget {
|
|||||||
this.onDragEnter,
|
this.onDragEnter,
|
||||||
this.onPasteImageSuccessAction,
|
this.onPasteImageSuccessAction,
|
||||||
this.onPasteImageFailureAction,
|
this.onPasteImageFailureAction,
|
||||||
|
this.onInitialContentLoadComplete,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -190,6 +193,7 @@ class _WebEditorState extends State<WebEditorWidget> {
|
|||||||
onDragLeave: (_) {},
|
onDragLeave: (_) {},
|
||||||
onImageUpload: widget.onPasteImageSuccessAction,
|
onImageUpload: widget.onPasteImageSuccessAction,
|
||||||
onImageUploadError: widget.onPasteImageFailureAction,
|
onImageUploadError: widget.onPasteImageFailureAction,
|
||||||
|
onInitialTextLoadComplete: widget.onInitialContentLoadComplete,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1107,7 +1107,7 @@ packages:
|
|||||||
description:
|
description:
|
||||||
path: "."
|
path: "."
|
||||||
ref: main
|
ref: main
|
||||||
resolved-ref: cc63bc2e8ddf9fad93b4f1dd6e0a04d17937ba05
|
resolved-ref: "3274d7fe8c711e7466890b6a3948e9708877ca4a"
|
||||||
url: "https://github.com/linagora/html-editor-enhanced.git"
|
url: "https://github.com/linagora/html-editor-enhanced.git"
|
||||||
source: git
|
source: git
|
||||||
version: "3.1.1"
|
version: "3.1.1"
|
||||||
|
|||||||
Reference in New Issue
Block a user