drafts: Fix hook for saving drafts.

Previously, the hook to save drafts when closing the compose box was a
focusout on #compose-textarea. This mostly worked, and was essentially
invisible to users (because the animation to notify you about saved
drafts was in the close_compose_ui widget that is hidden), but you'd
end up seeing the tooltip appear (in the wrong place) if you closed
the compose box immediately after sending a message with Tab+Enter.

The correct fix is for the drafts hook to be just before we start
clearing compose box state, inside hide_box.

This was difficult to catch in a development environment, since one
doesn't use that flow with "Enter sends" enabled.
This commit is contained in:
Tim Abbott
2021-05-12 12:49:05 -07:00
parent dada7bb4bb
commit b67b9912c4
3 changed files with 2 additions and 6 deletions

View File

@@ -174,10 +174,6 @@ test("initialize", (override) => {
};
drafts.initialize();
const message_content = $("#compose-textarea");
assert.equal(message_content.get_on_handler("focusout"), drafts.update_draft);
message_content.trigger("focusout");
});
test("remove_old_drafts", () => {

View File

@@ -31,6 +31,8 @@ export function blur_compose_inputs() {
}
function hide_box() {
// This is the main hook for saving drafts when closing the compose box.
drafts.update_draft();
blur_compose_inputs();
$("#stream-message").hide();
$("#private-message").hide();

View File

@@ -557,8 +557,6 @@ export function initialize() {
set_count(Object.keys(draft_model.get()).length);
$("#compose-textarea").on("focusout", update_draft);
$("body").on("focus", ".draft-info-box", (e) => {
activate_element(e.target);
});