diff --git a/src/tracker/discord.js b/src/tracker/discord.js index a3c53e3..613fc40 100644 --- a/src/tracker/discord.js +++ b/src/tracker/discord.js @@ -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; }, diff --git a/src/tracker/dom.js b/src/tracker/dom.js index 27729da..a095694 100644 --- a/src/tracker/dom.js +++ b/src/tracker/dom.js @@ -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. */