Updated scheduler to ensure client knows channel streamtype at time of clicking 'go-live' button.

This commit is contained in:
rainbow napkin 2026-07-07 21:25:27 -04:00
parent a819d14861
commit 6d8135d1e3
4 changed files with 50 additions and 4 deletions

View file

@ -197,8 +197,6 @@ class connectedUser{
chanDB = await channelModel.findOne({name: this.channel.name});
}
//If our perm map is un-initiated
//can't set this in constructor easily since it's asyncornous
//need to wait for it to complete before sending this off, but shouldnt re-do the wait for later connections
if(this.permMap == null){
//Grab perm map
@ -238,7 +236,7 @@ class connectedUser{
const chatBuffer = this.channel.chatBuffer.buffer;
//Send off the metadata to our user's clients
this.emit("clientMetadata", {user: userObj, flairList, queueLock, chatBuffer});
this.emit("clientMetadata", {user: userObj, flairList, queueLock, chatBuffer, streamType: chanDB.settings.streamType});
}
/**

View file

@ -120,6 +120,7 @@ class queue{
socket.on("move", (data) => {this.moveMedia(socket, data)});
socket.on("lock", () => {this.toggleLock(socket)});
socket.on("goLive", (data) => {this.goLive(socket, data)});
socket.on("getStreamType", (data) => {this.getStreamType(socket)});
//If debug mode is enabled
if(config.debug){
@ -357,6 +358,18 @@ class queue{
throw loggerUtils.exceptionSmith(`Unable to find channel document ${this.channel.name} while queue item!`, "queue");
}
//If the user doesn't have permission to be doing this shit
if(!((!this.locked && await chanDB.permCheck(socket.user, 'scheduleMedia')) || await chanDB.permCheck(socket.user, 'scheduleAdmin'))){
//Fuggettabouttit!
return;
}
if(chanDB.settings.streamType == "webrtc"){
console.log("WEBRTC ENABLED, BAILING!");
return;
}
//If something is playing
if(this.nowPlaying != null){
//Capture currently playing object
@ -403,7 +416,7 @@ class queue{
);
//Validate mode input, and default to overwrite
this.liveMode = (data.mode == "pushback") ? "pushback" : "overwrite";
this.liveMode = (data != null && data.mode == "pushback") ? "pushback" : "overwrite";
//Throw stream lock
this.streamLock = true;
@ -415,6 +428,22 @@ class queue{
}
}
/**
* Returns current channel stream type upon request
* @param {Socket} socket - Socket we received the request from
*/
async getStreamType(socket){
try{
//Get the current channel from the database
const chanDB = await channelModel.findOne({name: socket.chan});
//Send streamtype back down to user (Not perm checking for something someone can figure out by looking at a running livestream)
socket.emit("streamType", {streamType: chanDB.settings.streamType});
}catch(err){
return loggerUtils.socketExceptionHandler(socket, err);
}
}
async dumpQueue(socket, data){
//If we somehow got here while config.debug is disabled, or the user isn't allowed to preform server-side debugging
if(!(config.debug && await permissionModel.permCheck(socket.user, "debug"))){