Volatile chat buffer for channel-only chats implemented.
This commit is contained in:
parent
8821b5cff9
commit
366df357b8
|
|
@ -29,6 +29,8 @@ module.exports = class{
|
||||||
this.userList = new Map();
|
this.userList = new Map();
|
||||||
this.queue = new queue(server, chanDB, this);
|
this.queue = new queue(server, chanDB, this);
|
||||||
this.playlistHandler = new playlistHandler(server, chanDB, this);
|
this.playlistHandler = new playlistHandler(server, chanDB, this);
|
||||||
|
//Define the chat buffer
|
||||||
|
this.chatBuffer = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
async handleConnection(userDB, chanDB, socket){
|
async handleConnection(userDB, chanDB, socket){
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,8 @@ module.exports = class{
|
||||||
this.server = server;
|
this.server = server;
|
||||||
//Initialize command preprocessor
|
//Initialize command preprocessor
|
||||||
this.commandPreprocessor = new commandPreprocessor(server, this)
|
this.commandPreprocessor = new commandPreprocessor(server, this)
|
||||||
//Define the chat buffer
|
//Max chat buffer size
|
||||||
this.chatBuffer = [];
|
this.chatBufferSize = 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
defineListeners(socket){
|
defineListeners(socket){
|
||||||
|
|
@ -135,7 +135,19 @@ module.exports = class{
|
||||||
}
|
}
|
||||||
|
|
||||||
relayChatObject(chan, chat){
|
relayChatObject(chan, chat){
|
||||||
|
//Send out chat
|
||||||
this.server.io.in(chan).emit("chatMessage", chat);
|
this.server.io.in(chan).emit("chatMessage", chat);
|
||||||
|
|
||||||
|
const channel = this.server.activeChannels.get(chan);
|
||||||
|
|
||||||
|
//If chat buffer length is over mandated size
|
||||||
|
if(channel.chatBuffer.length >= this.chatBufferSize){
|
||||||
|
//Take out oldest chat
|
||||||
|
channel.chatBuffer.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
//Add buffer to chat
|
||||||
|
channel.chatBuffer.push(chat);
|
||||||
}
|
}
|
||||||
|
|
||||||
relayPrivateChat(socket, user, flair, highLevel, msg, type, links){
|
relayPrivateChat(socket, user, flair, highLevel, msg, type, links){
|
||||||
|
|
@ -147,7 +159,7 @@ module.exports = class{
|
||||||
}
|
}
|
||||||
|
|
||||||
relayGlobalChat(user, flair, highLevel, msg, type = 'chat', links){
|
relayGlobalChat(user, flair, highLevel, msg, type = 'chat', links){
|
||||||
this.relayGlobalChatObject("chatMessage", new chat(user, flair, highLevel, msg, type, links));
|
this.relayGlobalChatObject(new chat(user, flair, highLevel, msg, type, links));
|
||||||
}
|
}
|
||||||
|
|
||||||
relayGlobalChatObject(chat){
|
relayGlobalChatObject(chat){
|
||||||
|
|
|
||||||
|
|
@ -159,8 +159,11 @@ module.exports = class{
|
||||||
//Get schedule lock status
|
//Get schedule lock status
|
||||||
const queueLock = this.channel.queue.locked;
|
const queueLock = this.channel.queue.locked;
|
||||||
|
|
||||||
|
//Get chat buffer
|
||||||
|
const chatBuffer = this.channel.chatBuffer;
|
||||||
|
|
||||||
//Send off the metadata to our user's clients
|
//Send off the metadata to our user's clients
|
||||||
this.emit("clientMetadata", {user: userObj, flairList, queue, queueLock});
|
this.emit("clientMetadata", {user: userObj, flairList, queue, queueLock, chatBuffer});
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendSiteEmotes(){
|
async sendSiteEmotes(){
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,12 @@ class channel{
|
||||||
|
|
||||||
//Store queue lock status
|
//Store queue lock status
|
||||||
this.queueLock = data.queueLock;
|
this.queueLock = data.queueLock;
|
||||||
|
|
||||||
|
//For each chat held in the chat buffer
|
||||||
|
for(let chat of data.chatBuffer){
|
||||||
|
//Display the chat
|
||||||
|
this.chatBox.displayChat(chat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setDefaults(force = false, processConfig = false){
|
setDefaults(force = false, processConfig = false){
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue