Add a function to get loaded messages from UI instead of AJAX response

This commit is contained in:
chylex 2017-06-30 14:42:44 +02:00
parent a11a874d51
commit b9f8bbc8d3
3 changed files with 26 additions and 19 deletions

@ -10,7 +10,7 @@ var DISCORD = (function(){
var match = args[1].match(regexMessageRequest);
if (match){
callback(match[1], JSON.parse(req.response));
callback(match[1]);
}
});
},
@ -80,6 +80,25 @@ var DISCORD = (function(){
return obj.channel.length === 0 ? null : obj;
},
/*
* Returns an array containing currently loaded messages.
*/
getMessages: function(){
var props = DISCORD.getReactProps(DOM.fcls("messages"));
var array = props && props.children.find(ele => ele && ele.length);
var messages = [];
if (array){
for(let obj of array){
if (obj.props.messages){
Array.prototype.push.apply(messages, obj.props.messages);
}
}
}
return messages;
},
/*
* Returns true if the message column is visible.
*/

@ -160,24 +160,12 @@ SAVEFILE.prototype.addMessage = function(channelId, messageId, messageObject){
SAVEFILE.prototype.convertToMessageObject = function(discordMessage){
var obj = {
u: this.findOrRegisterUser(discordMessage.author.id, discordMessage.author.username),
t: +Date.parse(discordMessage.timestamp),
t: +discordMessage.timestamp.toDate(),
m: discordMessage.content
};
var flags = 0;
if (discordMessage.edited_timestamp !== null){
flags |= 1;
}
if (discordMessage.mentions.length > 0){
for(var user of discordMessage.mentions){
this.findOrRegisterUser(user.id, user.username);
}
}
if (flags !== 0){
obj.f = flags;
if (discordMessage.editedTimestamp !== null){
obj.f = 1; // rewrite as bit flag if needed later
}
if (discordMessage.embeds.length > 0){

@ -23,13 +23,13 @@ if (DISCORD.getSelectedChannel()){
var cachedRequest;
var untrackedRequests = 0;
DISCORD.setupMessageRequestHook((channel, messages) => {
DISCORD.setupMessageRequestHook(channel => {
if (STATE.isTracking()){
var info = DISCORD.getSelectedChannel();
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);
var hasUpdatedFile = STATE.addDiscordMessages(channel, messages);
var hasUpdatedFile = STATE.addDiscordMessages(channel, DISCORD.getMessages());
if (SETTINGS.autoscroll){
DOM.setTimer(() => {
@ -57,7 +57,7 @@ DISCORD.setupMessageRequestHook((channel, messages) => {
cachedRequest = {
"channel": channel,
"messages": messages
"messages": DISCORD.getMessages()
};
}
});