From 8b91ed4af43d46601304ae16b41f31ee1bee1880 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 | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/wcs/qommon/static/js/qommon.forms.js b/wcs/qommon/static/js/qommon.forms.js index 09faf3f2..22746847 100644 --- a/wcs/qommon/static/js/qommon.forms.js +++ b/wcs/qommon/static/js/qommon.forms.js @@ -130,9 +130,10 @@ $(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; } + $('body').addClass('autosaving'); $.ajax({ type: 'POST', url: window.location.pathname + 'autosave', @@ -143,11 +144,28 @@ $(function() { } }, complete: function() { - autosave_timeout_id = window.setTimeout(autosave, 5000); + $('body').removeClass('autosaving'); + 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 && ! $('body').hasClass('autosaving')) { + 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 +380,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