zulip/static
YashRE42 be76d7592a reload: Manually save draft and preserve id when triggering reload.
We received a complaint about the generation of multiple duplicate
drafts for a single message. It was discovered that the likely cause
of this was how we were handling clients that were frequently
suspending/unsuspending, we would initiate a reload when we discovered
this, and expect the `beforeunload` handler to save the draft. This
behaved correctly, however, we would also save the compose state and
fill it in via `preserve_state` in reload.js. The important detail
here is that `preserve_state` would not encode and preserve the
`draft_id` for the current message, partly because it had no way of
knowing the `draft_id` of the draft... since we have not saved it yet,
the `beforeunload` event happens after `preserve_state`. As such,
performing any action that would trigger a draft to be saved, eg
pressing Esc to close the compose box, would save a duplicate draft of
the same message.

To resolve the above bug, we (1) ensure that we call
`drafts.update_draft()` in `preserve_state`, this returns a draft_id
to us, which we (2) ensure that we encode as part of the url and (3)
set on the `#composebox-textarea` as a `draft-id` data attribute,
which we check the next time we try to save the draft, post reload.

Note that this causes us to save the draft twice, once from
preserve_state and then again from the `beforeunload` handler, but we
do not add two drafts since the second update_draft call just edits
the timestamp because it finds the `draft-id` data attribute on the
`#composebox-textarea` set by the first call.
2021-12-01 12:03:20 -08:00
..
assets icons: Set font-display: block for icon font. 2021-08-23 15:59:54 -07:00
audio notificaiton_sounds: Add some atonal sounds created by @stwime. 2021-02-05 12:28:20 -08:00
generated
html templates: Mark all void tags as self-closing. 2021-04-21 09:49:34 -07:00
images docs: Update the /help/ instructions for setting up OneLogin SAML. 2021-11-16 14:58:17 -08:00
js reload: Manually save draft and preserve id when triggering reload. 2021-12-01 12:03:20 -08:00
shared user_status: Fix status emoji handling of deactivated custom emoji. 2021-11-20 20:57:54 -08:00
styles login_to_access_modal: Migrate modal to Micromodal. 2021-11-30 14:39:46 -08:00
templates login_to_access_modal: Migrate modal to Micromodal. 2021-11-30 14:39:46 -08:00
third lint: Fix typos found by codespell. 2021-10-19 16:51:13 -07:00
.gitignore dependencies: Replace moment.js with date-fns. 2021-02-05 11:04:32 -08:00