settings.js: adaptive interval for updates

This commit is contained in:
codl 2017-08-28 17:53:13 +02:00
parent 19982af3ee
commit 81409673f3
No known key found for this signature in database
GPG Key ID: 6CD7C8891ED1233A
1 changed files with 16 additions and 1 deletions

View File

@ -108,7 +108,11 @@
// silently send_settings in case the user changed settings while the page was loading
send_settings(get_all_inputs());
let viewer_update_interval = 1000;
function fetch_viewer(){
viewer_update_interval *= 2;
viewer_update_interval = Math.min(30000, viewer_update_interval);
return fetch('/api/viewer', {
credentials: 'same-origin',
})
@ -116,12 +120,23 @@
.then(resp => resp.json());
}
let last_viewer = {}
function update_viewer(viewer){
if(JSON.stringify(last_viewer) == JSON.stringify(viewer)){
return
}
document.querySelector('#post-count').textContent = viewer.post_count;
document.querySelector('#eligible-estimate').textContent = viewer.eligible_for_delete_estimate;
document.querySelector('#display-name').textContent = viewer.display_name || viewer.screen_name;
document.querySelector('#avatar').src = viewer.avatar_url;
viewer_update_interval = 1000;
last_viewer = viewer;
}
setInterval(() => fetch_viewer().then(update_viewer), 1000 * 20)
function set_viewer_timeout(){
setTimeout(() => fetch_viewer().then(update_viewer).then(set_viewer_timeout),
viewer_update_interval);
}
set_viewer_timeout();
})();