Started work on JSDoc. src/app started, src/app/channel/media complete.

This commit is contained in:
rainbow napkin 2025-08-25 08:09:43 -04:00
parent c64b315fdf
commit fd760e4dab
6 changed files with 467 additions and 32 deletions

View file

@ -16,7 +16,16 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.*/
const config = require('../../../config.json');
const channelModel = require('../../schemas/channel/channelSchema');
/**
* Class representing a stored chat buffer
*/
class chatBuffer{
/**
* Instantiates a new chat buffer for a given channel
* @param {channelManager} server - Parent Server Object
* @param {Document} chanDB - chanDB to rehydrate buffer from
* @param {activeChannel} channel - Parent Channel Object
*/
constructor(server, chanDB, channel){
//Grab parent server and chan objects
this.server = server;
@ -41,6 +50,10 @@ class chatBuffer{
this.busyDelay = 5;
}
/**
* Adds a given chat to the chat buffer in RAM and sets any appropriate timers for DB transactions
* @param {chat} chat - Chat object to commit to buffer
*/
push(chat){
//push chat into RAM buffer
this.buffer.push(chat);
@ -57,21 +70,36 @@ class chatBuffer{
}
}
/**
* Removes the oldest item from the chat buffer
*
* Was originally created in-case we needed to trigger timing functions
*
* Left here since it seems like good form anywho, since this would be a private, or at least protected member in another language
*/
shift(){
//remove chat from RAM buffer, no need to handle DB timing here, since push should be called when this is called.
this.buffer.shift();
}
//Called after 10 seconds of chat room inactivity
/**
* Called after 10 seconds of chat room inactivity
*/
handleInactivity(){
this.saveDB(`${this.inactivityDelay} seconds of inactivity.`);
}
//Called after 5 minutes of solid activity
/**
* Called after 5 minutes of solid activity
*/
handleBusyRoom(){
this.saveDB(`${this.busyDelay} minutes of activity.`);
}
/**
* Saves RAM-Based buffer to Channel Document in DB
* @param {String} reason - Reason for DB save, formatted as 'x minutes/seconds of in/activity', used for logging purposes
* @param {Document} chanDB - Channel Doc to work with, can be left empty for method to auto-find through channel name.
*/
async saveDB(reason, chanDB){
//clear existing timers
clearTimeout(this.inactivityTimer);