mirror of
https://github.com/chylex/Discord-History-Tracker.git
synced 2025-06-16 23:32:17 +03:00
Add and implement configurable actions after reaching the first or a saved message
This commit is contained in:
parent
4087684913
commit
939720dfa9
@ -16,8 +16,21 @@ var GUI = (function(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (settings && type === "gui" && detail === "settings"){
|
if (settings){
|
||||||
|
var force = type === "gui" && detail === "settings";
|
||||||
|
|
||||||
|
if (force){
|
||||||
settings.ui.cbAutoscroll.checked = STATE.settings.autoscroll;
|
settings.ui.cbAutoscroll.checked = STATE.settings.autoscroll;
|
||||||
|
settings.ui.optsAfterFirstMsg[STATE.settings.afterFirstMsg].checked = true;
|
||||||
|
settings.ui.optsAfterSavedMsg[STATE.settings.afterSavedMsg].checked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (type === "setting" || force){
|
||||||
|
var autoscrollRev = !STATE.settings.autoscroll;
|
||||||
|
|
||||||
|
Object.values(settings.ui.optsAfterFirstMsg).forEach(ele => ele.disabled = autoscrollRev);
|
||||||
|
Object.values(settings.ui.optsAfterSavedMsg).forEach(ele => ele.disabled = autoscrollRev);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -161,21 +174,49 @@ var GUI = (function(){
|
|||||||
settings.ele.id = "dht-cfg";
|
settings.ele.id = "dht-cfg";
|
||||||
|
|
||||||
settings.ele.innerHTML = [
|
settings.ele.innerHTML = [
|
||||||
"<label><input id='dht-cfg-autoscroll' type='checkbox'> Autoscroll</label>"
|
"<label><input id='dht-cfg-autoscroll' type='checkbox'> Autoscroll</label><br>",
|
||||||
|
"<br>",
|
||||||
|
"<label>After reaching the first message in channel...</label><br>",
|
||||||
|
"<label><input id='dht-cfg-afm-nothing' name='dht-afm' type='radio'> Do Nothing</label><br>",
|
||||||
|
"<label><input id='dht-cfg-afm-pause' name='dht-afm' type='radio'> Pause Tracking</label><br>",
|
||||||
|
"<br>",
|
||||||
|
"<label>After reaching a previously saved message...</label><br>",
|
||||||
|
"<label><input id='dht-cfg-asm-nothing' name='dht-asm' type='radio'> Do Nothing</label><br>",
|
||||||
|
"<label><input id='dht-cfg-asm-pause' name='dht-asm' type='radio'> Pause Tracking</label><br>",
|
||||||
].join("");
|
].join("");
|
||||||
|
|
||||||
// elements
|
// elements
|
||||||
|
|
||||||
settings.ui = {
|
settings.ui = {
|
||||||
cbAutoscroll: DOM.id("dht-cfg-autoscroll")
|
cbAutoscroll: DOM.id("dht-cfg-autoscroll"),
|
||||||
|
optsAfterFirstMsg: {},
|
||||||
|
optsAfterSavedMsg: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
settings.ui.optsAfterFirstMsg[CONSTANTS.AUTOSCROLL_ACTION_NOTHING] = DOM.id("dht-cfg-afm-nothing");
|
||||||
|
settings.ui.optsAfterFirstMsg[CONSTANTS.AUTOSCROLL_ACTION_PAUSE] = DOM.id("dht-cfg-afm-pause");
|
||||||
|
|
||||||
|
settings.ui.optsAfterSavedMsg[CONSTANTS.AUTOSCROLL_ACTION_NOTHING] = DOM.id("dht-cfg-asm-nothing");
|
||||||
|
settings.ui.optsAfterSavedMsg[CONSTANTS.AUTOSCROLL_ACTION_PAUSE] = DOM.id("dht-cfg-asm-pause");
|
||||||
|
|
||||||
// events
|
// events
|
||||||
|
|
||||||
settings.ui.cbAutoscroll.addEventListener("change", () => {
|
settings.ui.cbAutoscroll.addEventListener("change", () => {
|
||||||
STATE.settings.autoscroll = settings.ui.cbAutoscroll.checked;
|
STATE.settings.autoscroll = settings.ui.cbAutoscroll.checked;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Object.keys(settings.ui.optsAfterFirstMsg).forEach(key => {
|
||||||
|
settings.ui.optsAfterFirstMsg[key].addEventListener("click", () => {
|
||||||
|
STATE.settings.afterFirstMsg = key;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(settings.ui.optsAfterSavedMsg).forEach(key => {
|
||||||
|
settings.ui.optsAfterSavedMsg[key].addEventListener("click", () => {
|
||||||
|
STATE.settings.afterSavedMsg = key;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
setupStateChanged("settings");
|
setupStateChanged("settings");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
var CONSTANTS = {
|
||||||
|
AUTOSCROLL_ACTION_NOTHING: "optNothing",
|
||||||
|
AUTOSCROLL_ACTION_PAUSE: "optPause",
|
||||||
|
};
|
||||||
|
|
||||||
var STATE = (function(){
|
var STATE = (function(){
|
||||||
var stateChangedEvents = [];
|
var stateChangedEvents = [];
|
||||||
|
|
||||||
@ -33,8 +38,8 @@ var STATE = (function(){
|
|||||||
*/
|
*/
|
||||||
SETTINGS.prototype._reset = function(){
|
SETTINGS.prototype._reset = function(){
|
||||||
this._autoscroll = true;
|
this._autoscroll = true;
|
||||||
this._afterFirstMsg = "optPause";
|
this._afterFirstMsg = CONSTANTS.AUTOSCROLL_ACTION_PAUSE;
|
||||||
this._afterSavedMsg = "optPause";
|
this._afterSavedMsg = CONSTANTS.AUTOSCROLL_ACTION_PAUSE;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -4,10 +4,26 @@ DISCORD.setupMessageRequestHook((channel, messages) => {
|
|||||||
|
|
||||||
if (info.id == channel){ // Discord has a bug where the message request may be sent without switching channels
|
if (info.id == channel){ // Discord has a bug where the message request may be sent without switching channels
|
||||||
STATE.addDiscordChannel(info.server, info.type, channel, info.channel);
|
STATE.addDiscordChannel(info.server, info.type, channel, info.channel);
|
||||||
STATE.addDiscordMessages(channel, messages);
|
var hasUpdatedFile = STATE.addDiscordMessages(channel, messages);
|
||||||
|
|
||||||
if (STATE.settings.autoscroll){
|
if (STATE.settings.autoscroll){
|
||||||
DOM.setTimer(() => DISCORD.loadOlderMessages(), 0);
|
DOM.setTimer(() => {
|
||||||
|
var action = CONSTANTS.AUTOSCROLL_ACTION_NOTHING;
|
||||||
|
|
||||||
|
if (!hasUpdatedFile){
|
||||||
|
action = STATE.settings.afterSavedMsg;
|
||||||
|
}
|
||||||
|
else if (!DISCORD.hasMoreMessages()){
|
||||||
|
action = STATE.settings.afterFirstMsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action === CONSTANTS.AUTOSCROLL_ACTION_PAUSE){
|
||||||
|
STATE.toggleTracking();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
DISCORD.loadOlderMessages();
|
||||||
|
}
|
||||||
|
}, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -15,8 +31,13 @@ DISCORD.setupMessageRequestHook((channel, messages) => {
|
|||||||
|
|
||||||
STATE.onStateChanged((type, detail) => {
|
STATE.onStateChanged((type, detail) => {
|
||||||
if (type === "tracking" && detail && STATE.settings.autoscroll){
|
if (type === "tracking" && detail && STATE.settings.autoscroll){
|
||||||
|
if (DISCORD.hasMoreMessages()){
|
||||||
DISCORD.loadOlderMessages();
|
DISCORD.loadOlderMessages();
|
||||||
}
|
}
|
||||||
|
else if (STATE.settings.afterFirstMsg === CONSTANTS.AUTOSCROLL_ACTION_PAUSE){
|
||||||
|
DOM.setTimer(() => STATE.toggleTracking(), 200); // give the user visual feedback after clicking the button before switching off
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
GUI.showController();
|
GUI.showController();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user