Added channel preference UI for WebRTC Streaming

This commit is contained in:
rainbow napkin 2026-07-06 21:28:55 -04:00
parent a07edfc842
commit e3507b00f8
3 changed files with 42 additions and 2 deletions

View file

@ -35,6 +35,11 @@ const chatSchema = require('./chatSchema');
//Utils
const { exceptionHandler, errorHandler } = require('../../utils/loggerUtils');
/**
* "Enum" for emote type property
*/
const streamMethodEnum = ["webrtc","hls"];
/**
* DB Schema for Documents containing de-hydrated representations of Canopy Stream/Chat Channels
*/
@ -71,6 +76,12 @@ const channelSchema = new mongoose.Schema({
streamURL: {
type: mongoose.SchemaTypes.String,
default: ''
},
streamType: {
type: mongoose.SchemaTypes.String,
enum: streamMethodEnum,
default: streamMethodEnum[0]
}
},
permissions: {

View file

@ -17,7 +17,11 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. %>
<h3>Channel Preferences:</h3>
<div class="dynamic-container">
<form action="javascript:" class="admin-list-field">
<% Object.keys(channel.settings).forEach((key) => { %>
<% for(key of Object.keys(channel.settings)){
//Ignore keys w/ custom HTML
if(key == "streamURL" || key == "streamType"){
break;
}%>
<span class="admin-list-field-container">
<label class="admin-list-label"><%= key %>:</label>
<% switch(typeof channel.settings[key]){
@ -29,7 +33,22 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. %>
<% break;
} %>
</span>
<% }); %>
<% }; %>
<span class="admin-list-field-container">
<p>Livestream Type:</p>
<span id="channel-preference-list-stream-settings-grid">
<span >
<input type="radio" name="streamType" id="webrtc" value="webrtc">
<label for="webrtc">Peer-to-Peer (WebRTC/STUN)</label>
</span>
<span>
<input type="radio" name="streamType" id="hls" value="hls">
<label for="hls">Self-Hosted (HLS)</label>
</span>
<input disabled id="channel-preference-list-stream-url" placeholder="Stream URL" value="<%= channel.settings["streamURL"] %>">
</span>
</span>
</form>
</div>
</div>

View file

@ -139,6 +139,16 @@ img.admin-list-entry-item{
width: 8em;
}
#channel-preference-list-stream-settings-grid{
display: grid;
grid-template-columns: auto auto;
row-gap: 0.5em;
}
#channel-preference-list-stream-url {
grid-column: 2;
}
div.toke-command-list{
display: grid;
grid-template-columns: repeat(auto-fit, minmax(15em, 1fr));