From 0fcd1d03f1bd85b263d651e41b9fda07a1b24462 Mon Sep 17 00:00:00 2001 From: discomrade Date: Tue, 28 Sep 2021 08:02:04 +0000 Subject: [PATCH] Improve broken auto-reload --- js/ajax.js | 4 ++-- js/auto-reload.js | 32 ++++++++++++++------------------ 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/js/ajax.js b/js/ajax.js index 01de3b08..af795a57 100644 --- a/js/ajax.js +++ b/js/ajax.js @@ -80,7 +80,6 @@ $(window).ready(function() { || (!settings.get('always_noko_replies', true) && !post_response.noko)) { document.location = post_response.redirect; } else { - /* $.ajax({ url: document.location, success: function(data) { @@ -89,6 +88,8 @@ $(window).ready(function() { if($('#' + id).length == 0) { $(this).insertAfter($('div.post:last').next()).after('
'); $(document).trigger('new_post', this); + // auto-reload.js immediate update on own post + $(document).trigger('own_new_post', this); // watch.js & auto-reload.js retrigger setTimeout(function() { $(window).trigger("scroll"); }, 100); } @@ -107,7 +108,6 @@ $(window).ready(function() { contentType: false, processData: false }, 'html'); - */ } $(form).find('input[type="submit"]').val(_('Posted...')); $(document).trigger("ajax_after_post", post_response); diff --git a/js/auto-reload.js b/js/auto-reload.js index 73a4daed..aedbea4f 100644 --- a/js/auto-reload.js +++ b/js/auto-reload.js @@ -46,7 +46,7 @@ $(document).ready(function(){ if($('div.banner').length == 0) { return; // not index - } + } if($(".post.op").length != 1) { return; //not thread page @@ -75,7 +75,6 @@ $(document).ready(function(){ if (!("Notification" in window)) return; var setting = $(this).parent().attr('id'); - if ($(this).is(':checked')) { Notification.requestPermission(function(permission){ if (permission === "granted") { @@ -137,7 +136,7 @@ $(document).ready(function(){ var title = document.title; if (typeof update_title == "undefined") { - var update_title = function() { + var update_title = function() { if (new_posts) { document.title = "("+new_posts+") "+title; } else { @@ -165,7 +164,6 @@ $(document).ready(function(){ $(window).blur(function() { window_active = false; }); - $('#auto_update_status').click(function() { if($("#auto_update_status").is(':checked')) { @@ -176,7 +174,6 @@ $(document).ready(function(){ } }); - var decrement_timer = function() { poll_current_time = poll_current_time - 1000; @@ -203,18 +200,18 @@ $(document).ready(function(){ var auto_update = function(delay) { clearInterval(countdown_interval); - poll_current_time = delay; + poll_current_time = delay; countdown_interval = setInterval(decrement_timer, 1000); - $('#update_secs').text(poll_current_time/1000); + $('#update_secs').text(poll_current_time/1000); } var stop_auto_update = function() { clearInterval(countdown_interval); } - + var epoch = (new Date).getTime(); var epochold = epoch; - + var timeDiff = function (delay) { if((epoch-epochold) > delay) { epochold = epoch = (new Date).getTime(); @@ -228,8 +225,9 @@ $(document).ready(function(){ var poll = function(manualUpdate) { stop_auto_update(); $('#update_secs').text(_("Updating...")); - + $.ajax({ + cache: !manualUpdate, url: document.location, success: function(data) { var loaded_posts = 0; // the number of new posts loaded in this update @@ -262,7 +260,6 @@ $(document).ready(function(){ time_loaded = Date.now(); // interop with watch.js - if ($('#auto_update_status').is(':checked')) { // If there are no new posts, double the delay. Otherwise set it to the min. if(loaded_posts == 0) { @@ -315,13 +312,11 @@ $(document).ready(function(){ return false; }; - $(post).on('submit', function(e){ - setTimeout( - function() { - poll(manualUpdate = true) - }, - 500 - ); + $(document).on('own_new_post', function(e){ + //prevent automatic window scroll from double updating + epochold = epoch = (new Date).getTime(); + + poll(manualUpdate = true); }); $(window).scrollStopped(function() { @@ -338,6 +333,7 @@ $(document).ready(function(){ recheck_activated(end_of_page); }); + $('#update_thread').on('click', function() { poll(manualUpdate = true); return false; }); if($("#auto_update_status").is(':checked')) {