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==
// @name Discord History Tracker
// @version v.27
// @version v.28
// @license MIT
// @namespace https://chylex.com
// @homepageURL https://dht.chylex.com/
@ -13,12 +13,12 @@
const start = function(){
var DISCORD = (function(){
var getMessageContainerElement = function(){
var getMessageOuterElement = function(){
return DOM.queryReactClass("messagesWrapper");
};
var getMessageScrollerElement = function(){
return getMessageContainerElement().querySelector("[class*='scroller-']");
return getMessageOuterElement().querySelector("[class*='scroller-']");
};
var observerTimer = 0, waitingForCleanup = 0;
@ -29,13 +29,14 @@ var DISCORD = (function(){
*/
setupMessageUpdateCallback: function(callback){
var onTimerFinished = function(){
let view = getMessageContainerElement();
let view = getMessageOuterElement();
if (!view){
restartTimer(500);
}
else{
let messages = getMessageContainerElement().children.length;
let anyMessage = getMessageOuterElement().querySelector("[class*='message-']");
let messages = anyMessage ? anyMessage.parentElement.children.length : 0;
if (messages < 100){
waitingForCleanup = 0;
@ -73,8 +74,15 @@ var DISCORD = (function(){
* Returns internal React state object of an element.
*/
getReactProps: function(ele){
var key = Object.keys(ele || {}).find(key => key.startsWith("__reactInternalInstance"));
return key ? ele[key].memoizedProps : null;
var keys = Object.keys(ele || {});
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(){
try{
var inner = DOM.queryReactClass("scrollerInner", getMessageContainerElement());
var props = DISCORD.getReactProps(inner);
var wrappers = props.children.find(ele => Array.isArray(ele));
var scroller = getMessageScrollerElement();
var props = DISCORD.getReactProps(scroller);
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 = [];
@ -193,7 +207,7 @@ var DISCORD = (function(){
/*
* 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.
@ -580,7 +594,7 @@ ${radio("asm", "pause", "Pause Tracking")}
${radio("asm", "switch", "Switch to Next Channel")}
<p id='dht-cfg-note'>
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>`);
// elements
@ -880,7 +894,10 @@ class SAVEFILE{
var hasNewMessages = false;
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);
hasNewMessages = true;
}

File diff suppressed because one or more lines are too long

View File

@ -8,8 +8,8 @@ import os
import re
import distutils.dir_util
VERSION_SHORT = "v.27"
VERSION_FULL = VERSION_SHORT + ", released 24 Aug 2020"
VERSION_SHORT = "v.28"
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_AUTO = "uglifyjs --parse bare_returns --compress --mangle toplevel --mangle-props keep_quoted,reserved=[{3}] --output \"{1}\" \"{0}\""