Started work on implementing chat buffer.
This commit is contained in:
parent
370a08cb03
commit
8821b5cff9
28
src/app/channel/chat.js
Normal file
28
src/app/channel/chat.js
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/*Canopy - The next generation of stoner streaming software
|
||||
Copyright (C) 2024-2025 Rainbownapkin and the TTN Community
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
|
||||
|
||||
class chat{
|
||||
constructor(user, flair, highLevel, msg, type, links){
|
||||
this.user = user;
|
||||
this.flair = flair;
|
||||
this.highLevel = highLevel;
|
||||
this.msg = msg;
|
||||
this.type = type;
|
||||
this.links = links;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = chat;
|
||||
|
|
@ -22,12 +22,17 @@ const commandPreprocessor = require('./commandPreprocessor');
|
|||
const loggerUtils = require('../../utils/loggerUtils');
|
||||
const linkUtils = require('../../utils/linkUtils');
|
||||
const emoteValidator = require('../../validators/emoteValidator');
|
||||
const chat = require('./chat');
|
||||
const {userModel} = require('../../schemas/user/userSchema');
|
||||
|
||||
module.exports = class{
|
||||
constructor(server){
|
||||
//Set server
|
||||
this.server = server;
|
||||
//Initialize command preprocessor
|
||||
this.commandPreprocessor = new commandPreprocessor(server, this)
|
||||
//Define the chat buffer
|
||||
this.chatBuffer = [];
|
||||
}
|
||||
|
||||
defineListeners(socket){
|
||||
|
|
@ -126,21 +131,33 @@ module.exports = class{
|
|||
|
||||
//Base chat functions
|
||||
relayChat(user, flair, highLevel, msg, type = 'chat', chan, links){
|
||||
this.server.io.in(chan).emit("chatMessage", {user, flair, highLevel, msg, type, links});
|
||||
this.relayChatObject(chan, new chat(user, flair, highLevel, msg, type, links));
|
||||
}
|
||||
|
||||
relayChatObject(chan, chat){
|
||||
this.server.io.in(chan).emit("chatMessage", chat);
|
||||
}
|
||||
|
||||
relayPrivateChat(socket, user, flair, highLevel, msg, type, links){
|
||||
socket.emit("chatMessage", {user, flair, highLevel, msg, type, links});
|
||||
this.relayPrivateChatObject(socket , new chat(user, flair, highLevel, msg, type, links));
|
||||
}
|
||||
|
||||
relayPrivateChatObject(socket, chat){
|
||||
socket.emit("chatMessage", chat);
|
||||
}
|
||||
|
||||
relayGlobalChat(user, flair, highLevel, msg, type = 'chat', links){
|
||||
this.server.io.emit("chatMessage", {user, flair, highLevel, msg, type, links});
|
||||
this.relayGlobalChatObject("chatMessage", new chat(user, flair, highLevel, msg, type, links));
|
||||
}
|
||||
|
||||
relayGlobalChatObject(chat){
|
||||
this.server.io.emit("chatMessage", chat);
|
||||
}
|
||||
|
||||
//User Chat Functions
|
||||
relayUserChat(socket, msg, type, links){
|
||||
const user = this.server.getSocketInfo(socket);
|
||||
this.relayChat(user.user, user.flair, user.highLevel, msg, type, socket.chan, links)
|
||||
this.relayChat(user.user, user.flair, user.highLevel, msg, type, socket.chan, links);
|
||||
}
|
||||
|
||||
//Toke Chat Functions
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ const channelPermissionSchema = require('./channelPermissionSchema');
|
|||
const channelBanSchema = require('./channelBanSchema');
|
||||
const queuedMediaSchema = require('./media/queuedMediaSchema');
|
||||
const playlistSchema = require('./media/playlistSchema');
|
||||
const chatSchema = require('./chatSchema');
|
||||
//Utils
|
||||
const { exceptionHandler, errorHandler } = require('../../utils/loggerUtils');
|
||||
|
||||
|
|
@ -118,7 +119,8 @@ const channelSchema = new mongoose.Schema({
|
|||
}
|
||||
},
|
||||
//Thankfully we don't have to keep track of alts, ips, or deleted users so this should be a lot easier than site-wide bans :P
|
||||
banList: [channelBanSchema]
|
||||
banList: [channelBanSchema],
|
||||
chatBuffer: [chatSchema]
|
||||
});
|
||||
|
||||
|
||||
|
|
|
|||
48
src/schemas/channel/chatSchema.js
Normal file
48
src/schemas/channel/chatSchema.js
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
/*Canopy - The next generation of stoner streaming software
|
||||
Copyright (C) 2024-2025 Rainbownapkin and the TTN Community
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.*/
|
||||
|
||||
//NPM Imports
|
||||
const {mongoose} = require('mongoose');
|
||||
|
||||
const chatSchema = new mongoose.Schema({
|
||||
user: {
|
||||
type: mongoose.SchemaTypes.String,
|
||||
required: true,
|
||||
},
|
||||
flair: {
|
||||
type: mongoose.SchemaTypes.String,
|
||||
required: true,
|
||||
},
|
||||
highLevel: {
|
||||
type: mongoose.SchemaTypes.Number,
|
||||
required: true,
|
||||
},
|
||||
msg: {
|
||||
type: mongoose.SchemaTypes.String,
|
||||
required: true,
|
||||
},
|
||||
type: {
|
||||
type: mongoose.SchemaTypes.String,
|
||||
required: true,
|
||||
},
|
||||
links: {
|
||||
type: [mongoose.SchemaTypes.Number],
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
module.exports = chatSchema;
|
||||
Loading…
Reference in a new issue