Fix autoscroll & channel beginning detection after a Discord update

References #114
This commit is contained in:
chylex 2020-08-24 02:30:36 +02:00
parent a914113b33
commit f460a582ac
2 changed files with 8 additions and 28 deletions

View File

@ -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;
},
/*

View File

@ -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");