Updated scheduler to ensure client knows channel streamtype at time of clicking 'go-live' button.
This commit is contained in:
parent
a819d14861
commit
6d8135d1e3
4 changed files with 50 additions and 4 deletions
|
|
@ -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});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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"))){
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue