diff --git a/core/lib/presentation/views/html_viewer/html_content_viewer_on_web_widget.dart b/core/lib/presentation/views/html_viewer/html_content_viewer_on_web_widget.dart index 5e13e354d..c39bd8bdc 100644 --- a/core/lib/presentation/views/html_viewer/html_content_viewer_on_web_widget.dart +++ b/core/lib/presentation/views/html_viewer/html_content_viewer_on_web_widget.dart @@ -147,6 +147,9 @@ class _HtmlContentViewerOnWebState extends State { window.parent.addEventListener('message', handleMessage, false); window.addEventListener('click', handleOnClickLink, true); window.addEventListener('load', handleOnLoad); + window.addEventListener('beforeunload', (event) => { + window.parent.removeEventListener('message', handleMessage, false); + }); function handleMessage(e) { if (e && e.data && e.data.includes("toIframe:")) { diff --git a/lib/features/composer/presentation/composer_controller.dart b/lib/features/composer/presentation/composer_controller.dart index 423ec9e25..e5e54397f 100644 --- a/lib/features/composer/presentation/composer_controller.dart +++ b/lib/features/composer/presentation/composer_controller.dart @@ -218,7 +218,11 @@ class ComposerController extends BaseController { void onClose() { _initTextEditor = null; _textEditorWeb = null; - viewState.value = Right(UIClosedState()); + dispatchState(Right(UIClosedState())); + composerArguments.value = null; + emailContentsViewState.value = Right(UIClosedState()); + identitySelected.value = null; + listFromIdentities.clear(); if (PlatformInfo.isMobile) { FkUserAgent.release(); } diff --git a/lib/features/composer/presentation/controller/rich_text_web_controller.dart b/lib/features/composer/presentation/controller/rich_text_web_controller.dart index 5c1422e89..782aca1e4 100644 --- a/lib/features/composer/presentation/controller/rich_text_web_controller.dart +++ b/lib/features/composer/presentation/controller/rich_text_web_controller.dart @@ -310,6 +310,7 @@ class RichTextWebController extends BaseRichTextController { void onClose() { menuParagraphController.dispose(); menuOrderListController.dispose(); + editorController.clear(); super.onClose(); } } \ No newline at end of file diff --git a/lib/features/composer/presentation/widgets/web/web_editor_widget.dart b/lib/features/composer/presentation/widgets/web/web_editor_widget.dart index 44ade9bab..c3078af3c 100644 --- a/lib/features/composer/presentation/widgets/web/web_editor_widget.dart +++ b/lib/features/composer/presentation/widgets/web/web_editor_widget.dart @@ -65,15 +65,9 @@ class _WebEditorState extends State { double? dropZoneHeight; final ValueNotifier _htmlEditorHeight = ValueNotifier(_defaultHtmlEditorHeight); bool _dropListenerRegistered = false; + Function(Event)? _dropListener; - void _dropListener(Event event) { - if (event is MessageEvent) { - if (jsonDecode(event.data)['name'] == HtmlUtils.registerDropListener.name) { - _editorController.evaluateJavascriptWeb( - HtmlUtils.lineHeight100Percent.name); - } - } - } + @override void initState() { @@ -89,6 +83,13 @@ class _WebEditorState extends State { } log('_WebEditorState::initState:dropZoneWidth: $dropZoneWidth | dropZoneHeight: $dropZoneHeight'); + _dropListener = (event) { + if (event is MessageEvent) { + if (jsonDecode(event.data)['name'] == HtmlUtils.registerDropListener.name) { + _editorController.evaluateJavascriptWeb(HtmlUtils.lineHeight100Percent.name); + } + } + }; window.addEventListener("message", _dropListener); } @@ -113,6 +114,7 @@ class _WebEditorState extends State { _editorController.evaluateJavascriptWeb( HtmlUtils.unregisterDropListener.name); window.removeEventListener("message", _dropListener); + _dropListener = null; super.dispose(); } diff --git a/pubspec.lock b/pubspec.lock index b64c157a5..33b5f925f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1025,8 +1025,8 @@ packages: dependency: "direct main" description: path: "." - ref: email_supported - resolved-ref: "96c199b233c5afde583295890ffbd880ea4c7d8c" + ref: memory_fixed_in_cnb + resolved-ref: "0292fa1b9c8bb018b910c1b8248be231b88a97b6" url: "https://github.com/linagora/html-editor-enhanced.git" source: git version: "2.5.1" diff --git a/pubspec.yaml b/pubspec.yaml index 1f970d6df..7fd9b9cde 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -60,7 +60,7 @@ dependencies: html_editor_enhanced: git: url: https://github.com/linagora/html-editor-enhanced.git - ref: email_supported + ref: memory_fixed_in_cnb jmap_dart_client: git: