mirror of
https://github.com/chylex/Discord-History-Tracker.git
synced 2025-06-07 19:03:03 +03:00
Release v.28
This commit is contained in:
parent
f415299af0
commit
dd4db0a9f9
File diff suppressed because one or more lines are too long
@ -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
4
build.py
4
build.py
@ -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}\""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user