diff --git a/html-editor-lib.pl b/html-editor-lib.pl
index 271d171a8..3e25823c9 100644
--- a/html-editor-lib.pl
+++ b/html-editor-lib.pl
@@ -259,7 +259,8 @@ my $html_editor_init_script =
const targ = document.querySelector('[$target_attr$target_type"$target_name"]'),
qs = Quill.import('attributors/style/size'),
qf = Quill.import('attributors/style/font'),
- isMac = navigator.userAgent.toLowerCase().includes('mac');
+ isMac = navigator.userAgent.toLowerCase().includes('mac'),
+ isXML = @{[$ENV{'HTTP_X_REQUESTED_WITH'} eq "XMLHttpRequest" ? 'true' : 'false']};
qs.whitelist = ["0.75em", "1.15em", "1.3em"];
Quill.register(qs, true);
@@ -316,6 +317,7 @@ my $html_editor_init_script =
});
editor.on('text-change', function() {
targ.value = editor.root.innerHTML + "
";
+ sessionStorage.setItem('$module_name/quill=last-message', targ.value);
let extraValue = String(),
sync = JSON.parse('@{[&convert_to_json($opts->{'textarea'}->{'sync'}->{'data'})]}'),
position = '@{[$opts->{'textarea'}->{'sync'}->{'position'}]}',
@@ -346,14 +348,34 @@ my $html_editor_init_script =
}
}
});
-
- // Update editor on initial load
- editor.pasteHTML(targ.value);
-
+
// Prevent loosing focus for toolbar selects (color picker, font select and etc)
editor.getModule("toolbar").container.addEventListener("mousedown", (e) => {
e.preventDefault();
});
+
+ // Don't loose message content
+ if (!isXML) {
+ // If the page is reloaded or history back is clicked
+ let restore_message = false;
+ try {
+ restore_message = window.performance?.navigation?.type > 0
+ } catch(e) {
+ restore_message = false;
+ }
+ if (restore_message) {
+ const quill_last_message = sessionStorage.getItem('$module_name/quill=last-message');
+ if (quill_last_message) {
+ editor.pasteHTML(quill_last_message);
+ return;
+ }
+ }
+ }
+
+ // Update editor on initial load
+ editor.pasteHTML(targ.value);
+
+
}
@{[$opts->{'load'} ? 'mail_init_editor()' : '']}