TF-2533 Fix composer memory leak when reply and forward

This commit is contained in:
DatDang
2024-04-08 09:25:39 +07:00
committed by Dat H. Pham
parent ae0aeab048
commit b63d212af4
6 changed files with 22 additions and 12 deletions
@@ -147,6 +147,9 @@ class _HtmlContentViewerOnWebState extends State<HtmlContentViewerOnWeb> {
window.parent.addEventListener('message', handleMessage, false); window.parent.addEventListener('message', handleMessage, false);
window.addEventListener('click', handleOnClickLink, true); window.addEventListener('click', handleOnClickLink, true);
window.addEventListener('load', handleOnLoad); window.addEventListener('load', handleOnLoad);
window.addEventListener('beforeunload', (event) => {
window.parent.removeEventListener('message', handleMessage, false);
});
function handleMessage(e) { function handleMessage(e) {
if (e && e.data && e.data.includes("toIframe:")) { if (e && e.data && e.data.includes("toIframe:")) {
@@ -218,7 +218,11 @@ class ComposerController extends BaseController {
void onClose() { void onClose() {
_initTextEditor = null; _initTextEditor = null;
_textEditorWeb = 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) { if (PlatformInfo.isMobile) {
FkUserAgent.release(); FkUserAgent.release();
} }
@@ -310,6 +310,7 @@ class RichTextWebController extends BaseRichTextController {
void onClose() { void onClose() {
menuParagraphController.dispose(); menuParagraphController.dispose();
menuOrderListController.dispose(); menuOrderListController.dispose();
editorController.clear();
super.onClose(); super.onClose();
} }
} }
@@ -65,15 +65,9 @@ class _WebEditorState extends State<WebEditorWidget> {
double? dropZoneHeight; double? dropZoneHeight;
final ValueNotifier<double> _htmlEditorHeight = ValueNotifier(_defaultHtmlEditorHeight); final ValueNotifier<double> _htmlEditorHeight = ValueNotifier(_defaultHtmlEditorHeight);
bool _dropListenerRegistered = false; 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 @override
void initState() { void initState() {
@@ -89,6 +83,13 @@ class _WebEditorState extends State<WebEditorWidget> {
} }
log('_WebEditorState::initState:dropZoneWidth: $dropZoneWidth | dropZoneHeight: $dropZoneHeight'); 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); window.addEventListener("message", _dropListener);
} }
@@ -113,6 +114,7 @@ class _WebEditorState extends State<WebEditorWidget> {
_editorController.evaluateJavascriptWeb( _editorController.evaluateJavascriptWeb(
HtmlUtils.unregisterDropListener.name); HtmlUtils.unregisterDropListener.name);
window.removeEventListener("message", _dropListener); window.removeEventListener("message", _dropListener);
_dropListener = null;
super.dispose(); super.dispose();
} }
+2 -2
View File
@@ -1025,8 +1025,8 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
path: "." path: "."
ref: email_supported ref: memory_fixed_in_cnb
resolved-ref: "96c199b233c5afde583295890ffbd880ea4c7d8c" resolved-ref: "0292fa1b9c8bb018b910c1b8248be231b88a97b6"
url: "https://github.com/linagora/html-editor-enhanced.git" url: "https://github.com/linagora/html-editor-enhanced.git"
source: git source: git
version: "2.5.1" version: "2.5.1"
+1 -1
View File
@@ -60,7 +60,7 @@ dependencies:
html_editor_enhanced: html_editor_enhanced:
git: git:
url: https://github.com/linagora/html-editor-enhanced.git url: https://github.com/linagora/html-editor-enhanced.git
ref: email_supported ref: memory_fixed_in_cnb
jmap_dart_client: jmap_dart_client:
git: git: