TF-2533 Fix composer memory leak when reply and forward
This commit is contained in:
@@ -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
@@ -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
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user