From 34e69688b1278a50d1130181d776669e2da38bcf Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 27 Oct 2021 09:10:07 +0200 Subject: [PATCH 3/3] js: prevent autosave while user is active (#58208) --- wcs/qommon/static/js/qommon.forms.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/wcs/qommon/static/js/qommon.forms.js b/wcs/qommon/static/js/qommon.forms.js index 09faf3f2..5ed69c05 100644 --- a/wcs/qommon/static/js/qommon.forms.js +++ b/wcs/qommon/static/js/qommon.forms.js @@ -130,7 +130,7 @@ $(function() { if ($form.hasClass('disabled-during-submit')) return; var new_auto_save = $form.serialize(); if (last_auto_save == new_auto_save) { - autosave_timeout_id = window.setTimeout(autosave, 5000); + install_autosave(); return; } $.ajax({ @@ -143,11 +143,23 @@ $(function() { } }, complete: function() { - autosave_timeout_id = window.setTimeout(autosave, 5000); + if (autosave_timeout_id !== null) { + install_autosave(); + } } }); } - autosave_timeout_id = window.setTimeout(autosave, 5000); + + function install_autosave() { + // debounce + window.clearTimeout(autosave_timeout_id); + autosave_timeout_id = window.setTimeout(autosave, 8000); + } + + $(document).on('mouseover scroll keydown', function() { if (autosave_timeout_id !== null) { install_autosave(); }); + + install_autosave(); + $('#tracking-code a').on('click', autosave); $(document).on('wcs:set-last-auto-save', function() { last_auto_save = $('form[data-has-draft]').serialize(); @@ -362,6 +374,7 @@ $(function() { var $form = $(this); if (autosave_timeout_id) { window.clearTimeout(autosave_timeout_id); + autosave_timeout_id = null; } $form.addClass('disabled-during-submit'); if ($form.hasClass('download-button-clicked')) { -- 2.33.0