Update message panel selectors to work with the recent Discord update

Closes #41
This commit is contained in:
chylex 2018-08-05 11:34:59 +02:00
parent c9b6e8a947
commit add5163820
2 changed files with 16 additions and 23 deletions

View File

@ -1,8 +1,6 @@
var DISCORD = (function(){
var regexMessageRequest = /\/channels\/(\d+)\/messages[^a-z]/;
var getTopMessageViewElement = function(){
let view = DOM.fcls("messages");
let view = DOM.queryReactClass("messages");
return view && view.children.length && view.children[0];
};
@ -19,8 +17,8 @@ var DISCORD = (function(){
if (!topEle){
restartTimer(500);
}
else if (!topEle.classList.contains("loading-more")){
let messages = DOM.fcls("messages").children.length;
else if (!topEle.getAttribute("class").includes("loadingMore-")){
let messages = DOM.queryReactClass("messages").children.length;
if (messages < 100){
waitingForCleanup = 0;
@ -35,12 +33,12 @@ var DISCORD = (function(){
waitingForCleanup = 6;
DOM.setTimer(() => {
let view = DOM.fcls("messages");
let view = DOM.queryReactClass("messages");
view.scrollTop = view.scrollHeight/2;
}, 1);
}
callback(topEle.classList.contains("has-more"));
callback(topEle.getAttribute("class").includes("hasMore-"));
restartTimer(200);
}
}
@ -95,7 +93,7 @@ var DISCORD = (function(){
"server": name,
"channel": name,
"id": linkSplit[linkSplit.length-1],
"type": DOM.cls("status", channel).length ? "DM" : "GROUP"
"type": !!DOM.fcls("status", channel) ? "DM" : "GROUP"
};
}
else{
@ -132,7 +130,7 @@ var DISCORD = (function(){
* Returns an array containing currently loaded messages.
*/
getMessages: function(){
var props = DISCORD.getReactProps(DOM.fcls("messages"));
var props = DISCORD.getReactProps(DOM.queryReactClass("messages"));
var array = props && props.children.find(ele => ele && ele.length);
var messages = [];
@ -150,21 +148,21 @@ var DISCORD = (function(){
/*
* Returns true if the message view is visible.
*/
isInMessageView: () => DOM.cls("messages").length > 0,
isInMessageView: () => !!DOM.queryReactClass("messages"),
/*
* Returns true if there are more messages available or if they're still loading.
*/
hasMoreMessages: function(){
let classes = getTopMessageViewElement().classList;
return classes.contains("has-more") || classes.contains("loading-more");
let classes = getTopMessageViewElement().getAttribute("class");
return classes.includes("hasMore-") || classes.includes("loadingMore-");
},
/*
* Forces the message view to load older messages by scrolling all the way up.
*/
loadOlderMessages: function(){
let view = DOM.fcls("messages");
let view = DOM.queryReactClass("messages");
view.scrollTop = view.scrollHeight/2;
view.scrollTop = 0;
},

View File

@ -11,16 +11,6 @@ var DOM = (function(){
*/
id: (id, parent) => (parent || document).getElementById(id),
/*
* Returns an array of all child elements containing the specified class. Parent defaults to the entire document.
*/
cls: (cls, parent) => Array.prototype.slice.call((parent || document).getElementsByClassName(cls)),
/*
* Returns an array of all child elements that have the specified tag. Parent defaults to the entire document.
*/
tag: (tag, parent) => Array.prototype.slice.call((parent || document).getElementsByTagName(tag)),
/*
* Returns the first child element containing the specified class. Parent defaults to the entire document.
*/
@ -31,6 +21,11 @@ var DOM = (function(){
*/
ftag: (tag, parent) => (parent || document).getElementsByTagName(tag)[0],
/*
* Returns the first child element containing the specified obfuscated class. Parent defaults to the entire document.
*/
queryReactClass: (cls, parent) => (parent || document).querySelector(`[class*="${cls}-"]`),
/*
* Creates an element, adds it to the DOM, and returns it.
*/