From f460a582acc9e84e91c8ed73572aaaa88c0c46a6 Mon Sep 17 00:00:00 2001 From: chylex Date: Mon, 24 Aug 2020 02:30:36 +0200 Subject: [PATCH] Fix autoscroll & channel beginning detection after a Discord update References #114 --- src/tracker/discord.js | 28 +++------------------------- src/tracker/Σ.js | 8 +++++--- 2 files changed, 8 insertions(+), 28 deletions(-) diff --git a/src/tracker/discord.js b/src/tracker/discord.js index bea479c..3f005fb 100644 --- a/src/tracker/discord.js +++ b/src/tracker/discord.js @@ -7,24 +7,6 @@ var DISCORD = (function(){ return getMessageContainerElement().querySelector("[class*='scroller-']"); }; - var checkTopSpecialMessageElement = function(view, cls){ - cls = `${cls}-`; - const selector = `[class*="${cls}"]`; - - for(let child of view.children){ - let childClass = child.className; - - if (childClass.includes(cls) || child.querySelector(selector)){ - return true; - } - else if (childClass.includes("message-")){ - break; - } - } - - return false; - }; - var observerTimer = 0, waitingForCleanup = 0; return { @@ -38,7 +20,7 @@ var DISCORD = (function(){ if (!view){ restartTimer(500); } - else if (!checkTopSpecialMessageElement(view, "loadingMore")){ + else{ let messages = getMessageContainerElement().children.length; if (messages < 100){ @@ -59,13 +41,10 @@ var DISCORD = (function(){ }, 1); } - callback(checkTopSpecialMessageElement(view, "hasMore")); + callback(); restartTimer(200); } } - else{ - restartTimer(25); - } }; var restartTimer = function(delay){ @@ -206,8 +185,7 @@ var DISCORD = (function(){ * Returns true if there are more messages available or if they're still loading. */ hasMoreMessages: function(){ - let view = getMessageContainerElement(); - return checkTopSpecialMessageElement(view, "hasMore") || checkTopSpecialMessageElement(view, "loadingMore"); + return document.querySelector("#messagesNavigationDescription + [class^=container]") === null; }, /* diff --git a/src/tracker/Σ.js b/src/tracker/Σ.js index 85d1fec..1bfdc1b 100644 --- a/src/tracker/Σ.js +++ b/src/tracker/Σ.js @@ -29,7 +29,7 @@ let stopTrackingDelayed = function(callback){ }, 200); // give the user visual feedback after clicking the button before switching off }; -DISCORD.setupMessageUpdateCallback(hasMoreMessages => { +DISCORD.setupMessageUpdateCallback(() => { if (STATE.isTracking() && ignoreMessageCallback.size === 0){ let info = DISCORD.getSelectedChannel(); @@ -59,12 +59,14 @@ DISCORD.setupMessageUpdateCallback(hasMoreMessages => { if (!hasUpdatedFile && !STATE.isMessageFresh(messages[0].id)){ action = SETTINGS.afterSavedMsg; } - else if (!hasMoreMessages){ + else if (!DISCORD.hasMoreMessages()){ action = SETTINGS.afterFirstMsg; } if (action === null){ - DISCORD.loadOlderMessages(); + if (hasUpdatedFile){ + DISCORD.loadOlderMessages(); + } } else{ ignoreMessageCallback.add("stalling");