From 322c238808a52fd025a4e19c90da19d09f40c591 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 3 Nov 2021 19:02:39 +0100 Subject: [PATCH 4/5] js: augment autosave delay if autosave fails (#58276) --- wcs/qommon/static/js/qommon.forms.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/wcs/qommon/static/js/qommon.forms.js b/wcs/qommon/static/js/qommon.forms.js index 56cf790a..04542490 100644 --- a/wcs/qommon/static/js/qommon.forms.js +++ b/wcs/qommon/static/js/qommon.forms.js @@ -125,6 +125,9 @@ $(function() { var autosave_timeout_id = null; var autosave_is_running = false; var autosave_button_to_click_on_complete = null; + var autosave_delay_default = 5 * 1000; // 5 seconds + var autosave_delay_max = 5 * 60 * 1000; // 5 minutes + var autosave_delay = autosave_delay_default; if ($('form[data-has-draft]:not([data-autosave=false])').length == 1) { var last_auto_save = $('form[data-has-draft]').serialize(); @@ -143,10 +146,11 @@ $(function() { data: new_auto_save, success: function(json) { if (json.result == 'success') { + autosave_delay = autosave_delay_default; last_auto_save = new_auto_save; } }, - complete: function() { + complete: function(jqxhr) { autosave_is_running = false; if (autosave_timeout_id !== null) { install_autosave(); @@ -154,6 +158,9 @@ $(function() { if (autosave_button_to_click_on_complete !== null) { autosave_button_to_click_on_complete.click(); } + if (jqxhr.status != 200) { // network error + autosave_delay = Math.min(autosave_delay * 2, autosave_delay_max); + } } }); } @@ -161,7 +168,7 @@ $(function() { function install_autosave() { // debounce window.clearTimeout(autosave_timeout_id); - autosave_timeout_id = window.setTimeout(autosave, 5000); + autosave_timeout_id = window.setTimeout(autosave, autosave_delay); } $(document).on('mouseover scroll keydown', function() { -- 2.33.0