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});
|
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
|
//need to wait for it to complete before sending this off, but shouldnt re-do the wait for later connections
|
||||||
if(this.permMap == null){
|
if(this.permMap == null){
|
||||||
//Grab perm map
|
//Grab perm map
|
||||||
|
|
@ -238,7 +236,7 @@ class connectedUser{
|
||||||
const chatBuffer = this.channel.chatBuffer.buffer;
|
const chatBuffer = this.channel.chatBuffer.buffer;
|
||||||
|
|
||||||
//Send off the metadata to our user's clients
|
//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("move", (data) => {this.moveMedia(socket, data)});
|
||||||
socket.on("lock", () => {this.toggleLock(socket)});
|
socket.on("lock", () => {this.toggleLock(socket)});
|
||||||
socket.on("goLive", (data) => {this.goLive(socket, data)});
|
socket.on("goLive", (data) => {this.goLive(socket, data)});
|
||||||
|
socket.on("getStreamType", (data) => {this.getStreamType(socket)});
|
||||||
|
|
||||||
//If debug mode is enabled
|
//If debug mode is enabled
|
||||||
if(config.debug){
|
if(config.debug){
|
||||||
|
|
@ -357,6 +358,18 @@ class queue{
|
||||||
throw loggerUtils.exceptionSmith(`Unable to find channel document ${this.channel.name} while queue item!`, "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 something is playing
|
||||||
if(this.nowPlaying != null){
|
if(this.nowPlaying != null){
|
||||||
//Capture currently playing object
|
//Capture currently playing object
|
||||||
|
|
@ -403,7 +416,7 @@ class queue{
|
||||||
);
|
);
|
||||||
|
|
||||||
//Validate mode input, and default to overwrite
|
//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
|
//Throw stream lock
|
||||||
this.streamLock = true;
|
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){
|
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 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"))){
|
if(!(config.debug && await permissionModel.permCheck(socket.user, "debug"))){
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,10 @@ class channel{
|
||||||
this.queueLock = data.locked;
|
this.queueLock = data.locked;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.socket.on("streamType", (data) => {
|
||||||
|
this.streamType = data.streamType;
|
||||||
|
});
|
||||||
|
|
||||||
this.queueBroadcastSocket.on("queue", (data) => {
|
this.queueBroadcastSocket.on("queue", (data) => {
|
||||||
this.queue = new Map(data.queue);
|
this.queue = new Map(data.queue);
|
||||||
});
|
});
|
||||||
|
|
@ -146,6 +150,9 @@ class channel{
|
||||||
|
|
||||||
//Store queue lock status
|
//Store queue lock status
|
||||||
this.queueLock = data.queueLock;
|
this.queueLock = data.queueLock;
|
||||||
|
|
||||||
|
//Store streamType
|
||||||
|
this.streamType = data.streamType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,8 @@ class queuePanel extends panelObj{
|
||||||
*/
|
*/
|
||||||
this.playlistManager = new playlistManager(client, panelDocument, this);
|
this.playlistManager = new playlistManager(client, panelDocument, this);
|
||||||
|
|
||||||
|
this.streamType = "";
|
||||||
|
|
||||||
//Define non-input event listeners
|
//Define non-input event listeners
|
||||||
this.defineListeners();
|
this.defineListeners();
|
||||||
}
|
}
|
||||||
|
|
@ -65,6 +67,9 @@ class queuePanel extends panelObj{
|
||||||
//Call derived doc switch function
|
//Call derived doc switch function
|
||||||
super.docSwitch();
|
super.docSwitch();
|
||||||
|
|
||||||
|
//Request Channel Stream Type
|
||||||
|
this.client.socket.emit('getStreamType');
|
||||||
|
|
||||||
//Get queue div
|
//Get queue div
|
||||||
this.queue = this.panelDocument.querySelector('#queue');
|
this.queue = this.panelDocument.querySelector('#queue');
|
||||||
//Get queue container
|
//Get queue container
|
||||||
|
|
@ -243,6 +248,10 @@ class queuePanel extends panelObj{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleStreamType(data){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* queue control button functions */
|
/* queue control button functions */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -269,6 +278,9 @@ class queuePanel extends panelObj{
|
||||||
* @param {Event} event - Event passed down from Event Listener
|
* @param {Event} event - Event passed down from Event Listener
|
||||||
*/
|
*/
|
||||||
toggleGoLive(event){
|
toggleGoLive(event){
|
||||||
|
//Request stream type from the server Just-InCase™
|
||||||
|
client.socket.emit('getStreamType');
|
||||||
|
|
||||||
//If we're not livestreaming
|
//If we're not livestreaming
|
||||||
if(client.player.mediaHandler.type != "livehls"){
|
if(client.player.mediaHandler.type != "livehls"){
|
||||||
//If the div is hidden
|
//If the div is hidden
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue