Release v.28

This commit is contained in:
chylex 2020-11-29 18:30:05 +01:00
parent f415299af0
commit dd4db0a9f9
4 changed files with 34 additions and 17 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name Discord History Tracker // @name Discord History Tracker
// @version v.27 // @version v.28
// @license MIT // @license MIT
// @namespace https://chylex.com // @namespace https://chylex.com
// @homepageURL https://dht.chylex.com/ // @homepageURL https://dht.chylex.com/
@ -13,12 +13,12 @@
const start = function(){ const start = function(){
var DISCORD = (function(){ var DISCORD = (function(){
var getMessageContainerElement = function(){ var getMessageOuterElement = function(){
return DOM.queryReactClass("messagesWrapper"); return DOM.queryReactClass("messagesWrapper");
}; };
var getMessageScrollerElement = function(){ var getMessageScrollerElement = function(){
return getMessageContainerElement().querySelector("[class*='scroller-']"); return getMessageOuterElement().querySelector("[class*='scroller-']");
}; };
var observerTimer = 0, waitingForCleanup = 0; var observerTimer = 0, waitingForCleanup = 0;
@ -29,13 +29,14 @@ var DISCORD = (function(){
*/ */
setupMessageUpdateCallback: function(callback){ setupMessageUpdateCallback: function(callback){
var onTimerFinished = function(){ var onTimerFinished = function(){
let view = getMessageContainerElement(); let view = getMessageOuterElement();
if (!view){ if (!view){
restartTimer(500); restartTimer(500);
} }
else{ else{
let messages = getMessageContainerElement().children.length; let anyMessage = getMessageOuterElement().querySelector("[class*='message-']");
let messages = anyMessage ? anyMessage.parentElement.children.length : 0;
if (messages < 100){ if (messages < 100){
waitingForCleanup = 0; waitingForCleanup = 0;
@ -73,8 +74,15 @@ var DISCORD = (function(){
* Returns internal React state object of an element. * Returns internal React state object of an element.
*/ */
getReactProps: function(ele){ getReactProps: function(ele){
var key = Object.keys(ele || {}).find(key => key.startsWith("__reactInternalInstance")); var keys = Object.keys(ele || {});
return key ? ele[key].memoizedProps : null; var key = keys.find(key => key.startsWith("__reactInternalInstance"));
if (key){
return ele[key].memoizedProps;
}
key = keys.find(key => key.startsWith("__reactProps$"));
return key ? ele[key] : null;
}, },
/* /*
@ -169,9 +177,15 @@ var DISCORD = (function(){
*/ */
getMessages: function(){ getMessages: function(){
try{ try{
var inner = DOM.queryReactClass("scrollerInner", getMessageContainerElement()); var scroller = getMessageScrollerElement();
var props = DISCORD.getReactProps(inner); var props = DISCORD.getReactProps(scroller);
var wrappers = props.children.find(ele => Array.isArray(ele)); var wrappers;
try{
wrappers = props.children.props.children.props.children.props.children.find(ele => Array.isArray(ele));
}catch(e){ // old version compatibility
wrappers = props.children.find(ele => Array.isArray(ele));
}
var messages = []; var messages = [];
@ -193,7 +207,7 @@ var DISCORD = (function(){
/* /*
* Returns true if the message view is visible. * Returns true if the message view is visible.
*/ */
isInMessageView: () => !!getMessageContainerElement(), isInMessageView: () => !!getMessageOuterElement(),
/* /*
* Returns true if there are more messages available or if they're still loading. * Returns true if there are more messages available or if they're still loading.
@ -580,7 +594,7 @@ ${radio("asm", "pause", "Pause Tracking")}
${radio("asm", "switch", "Switch to Next Channel")} ${radio("asm", "switch", "Switch to Next Channel")}
<p id='dht-cfg-note'> <p id='dht-cfg-note'>
It is recommended to disable link and image previews to avoid putting unnecessary strain on your browser.<br><br> It is recommended to disable link and image previews to avoid putting unnecessary strain on your browser.<br><br>
<sub>v.27, released 24 Aug 2020</sub> <sub>v.28, released 29 Nov 2020</sub>
</p>`); </p>`);
// elements // elements
@ -880,7 +894,10 @@ class SAVEFILE{
var hasNewMessages = false; var hasNewMessages = false;
for(var discordMessage of discordMessageArray){ for(var discordMessage of discordMessageArray){
if (discordMessage.type === 0 && discordMessage.state === "SENT" && this.addMessage(channelId, discordMessage.id, this.convertToMessageObject(discordMessage))){ var type = discordMessage.type;
// https://discord.com/developers/docs/resources/channel#message-object-message-reference-structure
if ((type === 0 || type === 19) && discordMessage.state === "SENT" && this.addMessage(channelId, discordMessage.id, this.convertToMessageObject(discordMessage))){
this.tmp.freshmsgs.add(discordMessage.id); this.tmp.freshmsgs.add(discordMessage.id);
hasNewMessages = true; hasNewMessages = true;
} }

File diff suppressed because one or more lines are too long

View File

@ -8,8 +8,8 @@ import os
import re import re
import distutils.dir_util import distutils.dir_util
VERSION_SHORT = "v.27" VERSION_SHORT = "v.28"
VERSION_FULL = VERSION_SHORT + ", released 24 Aug 2020" VERSION_FULL = VERSION_SHORT + ", released 29 Nov 2020"
EXEC_UGLIFYJS_WIN = "{2}/lib/uglifyjs.cmd --parse bare_returns --compress --mangle toplevel --mangle-props keep_quoted,reserved=[{3}] --output \"{1}\" \"{0}\"" EXEC_UGLIFYJS_WIN = "{2}/lib/uglifyjs.cmd --parse bare_returns --compress --mangle toplevel --mangle-props keep_quoted,reserved=[{3}] --output \"{1}\" \"{0}\""
EXEC_UGLIFYJS_AUTO = "uglifyjs --parse bare_returns --compress --mangle toplevel --mangle-props keep_quoted,reserved=[{3}] --output \"{1}\" \"{0}\"" EXEC_UGLIFYJS_AUTO = "uglifyjs --parse bare_returns --compress --mangle toplevel --mangle-props keep_quoted,reserved=[{3}] --output \"{1}\" \"{0}\""