language updates; bug fixes

This commit is contained in:
Steve Seguin 2021-06-30 14:17:13 -04:00 committed by GitHub
parent e1c2ad1748
commit 8e023705f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 264 additions and 102 deletions

View File

@ -55,7 +55,7 @@
}
</style>
<link rel="stylesheet" href="./lineawesome/css/line-awesome.min.css" />
<link rel="stylesheet" href="./main.css?ver=64" />
<link rel="stylesheet" href="./main.css?ver=65" />
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/adapter.min.js"></script>
<style id="lightbox-animations" type="text/css"></style>
</head>
@ -108,6 +108,7 @@
<span data-translate="joining-room">You are in room</span>:
<div id="roomid" style="display: inline-block;"></div>
</div>
<div id="head6" class="advanced" data-translate="only-director-can-hear-you">Only the director can hear you currently</div>
</div>
<div id="controlButtons" >
@ -726,7 +727,7 @@
👋 👀 Welcome to our new domain! We've started to rebrand to VDO.Ninja. 📼 Nothing else is changing and we're staying 100% free.
</h4>
<br />
🌻 Site Updated on June 9th. The <a href="https://docs.vdo.ninja/release-notes/v18">v18 release notes are here</a>. If new issues occur, the previous version can also be <a href="https://obs.ninja/v17/">found here</a>.
🌻 Site Updated on June 29th. The <a href="https://docs.vdo.ninja/release-notes/v18">v18 release notes are here</a>. If new issues occur, the previous version can also be <a href="https://obs.ninja/v17/">found here</a>.
<br />
<br />
@ -926,7 +927,7 @@
<input type="checkbox" data-param="&animate" onchange="updateLink(1,this);">
<span class="slider"></span>
</label>
<span data-translate="fade-videos-in">Animate mixing</span>
<span data-translate="animate-mixing">Animate mixing</span>
</div>
<div style="display:inline-block;margin-top: 12px; position: relative; margin-right:10px;">
@ -960,12 +961,17 @@
</label>
<span data-translate="enable-equalizer">Enable equalizer as option</span>
<br />
<label class="switch">
<label class="switch" title="Show some prep suggestions to the guests on connect">
<input type="checkbox" data-param="&tips" onchange="updateLink(1,this);">
<span class="slider"></span>
</label>
<span data-translate="show-guest-tips" title="Show some prep suggestions to the guests on connect">Show guest setup tips</span>
<span data-translate="show-guest-tips">Show guest setup tips</span>
<br />
<label class="switch" title="Have screen-shares stream ID's use a predictable prefixed value instead of a random one.">
<input type="checkbox" data-param="&ssid" onchange="updateLink(1,this);">
<span class="slider"></span>
</label>
<span data-translate="prefix-screenshare">Prefix screenshare IDs</span>
</div>
<div style="display:inline-block;margin-top: 12px; position: relative; height: 20px;">
<label class="switch" title="This low-fi video codec uses very little CPU, even with dozens of active viewers.">
@ -1063,7 +1069,7 @@
<input type="checkbox" data-param="&animate" onchange="updateLink(3,this);">
<span class="slider"></span>
</label>
<span data-translate="fade-videos-in">Animate mixing</span>
<span data-translate="animate-mixing">Animate mixing</span>
</div>
@ -1144,10 +1150,10 @@
<span data-translate="disconnect-guest" >Hangup</span>
</button>
<button data-action-type="solo-chat" title="Toggle Solo Voice Chat" onclick="session.toggleSoloChat(this.dataset.UUID);">
<button data-action-type="solo-chat" title="Toggle solo voice chat or hold CTRL/CMD when selecting to make it two-way private." onclick="session.toggleSoloChat(this.dataset.UUID, event);">
<span data-translate="voice-chat"><i class="las la-microphone" style="color:#090"></i> Solo Talk</span>
</button>
<button data-action-type="addToScene" data-scene="1" title="Add this Video to any remote '&scene=1'" onclick="directEnable(this, event, 1);">
<i class="las la-plus-square" style="color:#060"></i>
<span data-translate="add-to-scene">add to scene 1</span>
@ -1514,8 +1520,9 @@
<span class='modalClose' onclick="toggleRoomSettings();">×</span>
<span></span>
<h3>Change room settings</h3><br />
<label title="Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded." for="trbSettingInput">Change room video quality:</label><span style="margin-left: 6px;" id="trbSettingInputFeedback"></span>-kbps
<input id="trbSettingInput" type="range" min="0" max="2000" value="500" onchange="changeTRB(this);" oninput="getById('trbSettingInputFeedback').innerHTML = this.value;" style="width:400px;display:block;" />
<label title="Increase this at your peril. Changes the total inbound video bitrate per guest; mobile devices excluded. Webp-mode also excluded." for="trbSettingInput">Change room video quality:</label>
<span style="margin-left: 6px;" id="trbSettingInputFeedback"></span>-kbps
<input id="trbSettingInput" type="range" min="0" max="4000" value="500" onchange="changeTRB(this);" oninput="getById('trbSettingInputFeedback').innerHTML = this.value;" style="width:100%;display:block;" />
</div>
</div>
@ -1630,7 +1637,8 @@
<li><a onclick="changeLg('nl');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Amsterdam">Dutch</a></li>
<li><a onclick="changeLg('tr');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Istanbul">Turkish</a></li>
<li><a onclick="changeLg('ja');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Asia/Tokyo">Japanese</a></li>
<li><a onclick="changeLg('cs');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Prague">Czech </a></li>
<li><a onclick="changeLg('cs');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Prague">Czech</a></li>
<li><a onclick="changeLg('uk');toggle(document.getElementById('languages'));" style="cursor: pointer;" data-tz="Europe/Ukraine">Ukrainian</a></li>
<li><a onclick="changeLg('pig');toggle(document.getElementById('languages'));" style="cursor: pointer;">Pig Latin</a></li>
</ul>
<br />
@ -1737,11 +1745,11 @@
// session.title // "zzzz"
</script>
<script type="text/javascript" crossorigin="anonymous" src="./thirdparty/aes.js"></script>
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=2"></script>
<script type="text/javascript" crossorigin="anonymous" id="lib-js" src="./lib.js?ver=6"></script>
<!--
// If you wish to change branding, blank offers a good clean start.
<script type="text/javascript" id="main-js" src="./main.js" data-translation="blank"></script>
-->
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=232"></script>
<script type="text/javascript" crossorigin="anonymous" id="main-js" src="./main.js?ver=237"></script>
</body>
</html>

187
lib.js
View File

@ -337,7 +337,7 @@ async function delay(ms) {
}
var Prompts = {};
async function promptAlt(inputText){
async function promptAlt(inputText, block=false){
var result = null;
if (session.beepToNotify){
playtone();
@ -347,45 +347,64 @@ async function promptAlt(inputText){
Prompts[promptID] = {};
Prompts[promptID].resolve = resolve;
Prompts[promptID].reject = reject;
var zindex = 30 + document.querySelectorAll('.promptModal').length;
if (block){
var backdropClass = "opaqueBackdrop";
} else {
var backdropClass = "modalBackdrop";
}
inputText = "<font>"+inputText.replace("\n","</font><br /><font style='font-size:0.8em'>");
inputText = "<font style='font-size:1.2em'>"+inputText.replace("\n","</font><br /><font>")+"</font>";
inputText = inputText.replace(/\n/g,"<br />");
zindex = 30 + document.querySelectorAll('#promptModal').length;
modalTemplate =
`<div id="modal_${promptID}" class="promptModal" style="z-index:${zindex + 2}">
<div class="promptModalInner">
<span id="close_${promptID}" class='modalClose' data-pid="${promptID}">×</span>
<span class='promptModalMessage'>${inputText}</span>
<input id="input_${promptID}" type="text" class="largeTextEntry" />
<input id="input_${promptID}" data-pid="${promptID}" type="text" class="largeTextEntry" />
<button id="submit_${promptID}" data-pid="${promptID}" style="width:120px; background-color: #fff; position: relative;border: 1px solid #999; margin: 0 0 0 55px;" data-translate='ok'> OK</button>
<button id="cancel_${promptID}" data-pid="${promptID}" style="width:120px; background-color: #fff; position: relative;border: 1px solid #999; margin: 0;" data-translate='cancel'> Cancel</button>
</div>
</div>
<div id="modalBackdrop_${promptID}" style="z-index:${zindex + 1}"></div>`;
<div id="modalBackdrop_${promptID}" class="${backdropClass}" style="z-index:${zindex + 1}"></div>`;
document.body.insertAdjacentHTML("beforeend", modalTemplate); // Insert modal at body end
document.getElementById("input_"+promptID).focus();
document.getElementById("input_"+promptID).addEventListener("keyup", function(event) {
if (event.key === "Enter") {
var pid = event.target.dataset.pid;
result = document.getElementById("input_"+pid).value;
document.getElementById("modal_"+pid).remove();
document.getElementById("modalBackdrop_"+pid).remove();
Prompts[pid].resolve();
}
});
document.getElementById("submit_"+promptID).addEventListener("click", function(event){
var pid = event.target.dataset.pid;
result = document.getElementById("input_"+pid).value;
document.getElementById("modal_"+pid).innerHTML = ''; // Delete modal
document.getElementById("modal_"+pid).remove();
document.getElementById("modalBackdrop_"+pid).remove();
Prompts[pid].resolve();
});
document.getElementById("cancel_"+promptID).addEventListener("click", function(event){
var pid = event.target.dataset.pid;
document.getElementById("modal_"+pid).innerHTML = ''; // Delete modal
document.getElementById("modal_"+pid).remove();
document.getElementById("modalBackdrop_"+pid).remove();
Prompts[pid].resolve();
});
document.getElementById("close_"+promptID).addEventListener("click", function(event){
var pid = event.target.dataset.pid;
document.getElementById("modal_"+pid).innerHTML = ''; // Delete modal
document.getElementById("modal_"+pid).remove();
document.getElementById("modalBackdrop_"+pid).remove();
Prompts[pid].resolve();
});
@ -398,7 +417,7 @@ async function promptAlt(inputText){
return result;
}
async function confirmAlt(inputText){
async function confirmAlt(inputText, block=false){
var result = null;
if (session.beepToNotify){
playtone();
@ -409,9 +428,16 @@ async function confirmAlt(inputText){
Prompts[promptID].resolve = resolve;
Prompts[promptID].reject = reject;
inputText = "<font>"+inputText.replace("\n","</font><br /><font style='font-size:0.8em'>");
var zindex = 30 + document.querySelectorAll('.promptModal').length;
if (block){
var backdropClass = "opaqueBackdrop";
} else {
var backdropClass = "modalBackdrop";
}
inputText = "<font style='font-size:1.2em'>"+inputText.replace("\n","</font><br /><font>")+"</font>";
inputText = inputText.replace(/\n/g,"<br />");
zindex = 30 + document.querySelectorAll('#promptModal').length;
modalTemplate =
`<div id="modal_${promptID}" class="promptModal" style="z-index:${zindex + 2}">
@ -422,29 +448,31 @@ async function confirmAlt(inputText){
<button id="cancel_${promptID}" data-pid="${promptID}" style="width:120px; background-color: #fff; position: relative;border: 1px solid #999; margin: 0;" data-translate='cancel'> Cancel</button>
</div>
</div>
<div id="modalBackdrop_${promptID}" style="z-index:${zindex + 1}"></div>`;
<div id="modalBackdrop_${promptID}" class="${backdropClass}" style="z-index:${zindex + 1}"></div>`;
document.body.insertAdjacentHTML("beforeend", modalTemplate); // Insert modal at body end
document.getElementById("submit_"+promptID).focus();
document.getElementById("submit_"+promptID).addEventListener("click", function(event){
var pid = event.target.dataset.pid;
result = true;
document.getElementById("modal_"+pid).innerHTML = ''; // Delete modal
document.getElementById("modalBackdrop_"+pid).remove();
document.getElementById("modal_"+pid).remove();
Prompts[pid].resolve();
});
document.getElementById("cancel_"+promptID).addEventListener("click", function(event){
var pid = event.target.dataset.pid;
document.getElementById("modal_"+pid).innerHTML = ''; // Delete modal
document.getElementById("modalBackdrop_"+pid).remove();
document.getElementById("modal_"+pid).remove();
Prompts[pid].resolve();
});
document.getElementById("close_"+promptID).addEventListener("click", function(event){
var pid = event.target.dataset.pid;
document.getElementById("modal_"+pid).innerHTML = ''; // Delete modal
document.getElementById("modalBackdrop_"+pid).remove();
document.getElementById("modal_"+pid).remove();
Prompts[pid].resolve();
});
@ -1685,6 +1713,20 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
if (session.videoElement.srcObject.getVideoTracks().length){
if (mpl===0 && session.minipreview===2){
mediaPool.push(session.videoElement);
} else if (session.minipreview===3){
var container = document.createElement("div");
container.style.top="-500px";
container.style.left="-500px";
container.style.width="1px";
container.style.height="1px";
container.style.display = "flex";
container.style.zIndex = "0";
container.style.margin="0";
container.style.position="absolute";
container.style.cursor = "pointer";
container.style.border = "0";
container.appendChild(session.videoElement);
playarea.appendChild(container);
} else {
var container = document.createElement("div");
container.style.top=hi;
@ -2049,9 +2091,13 @@ function updateMixerRun(e=false){ // this is the main auto-mixing code. It's a
if (!session.cleanOutput && !session.nocursor){
if ((session.roomid!==false) && (session.scene===false)){
var button = document.createElement("div");
button.id = "button_"+vid.id;
var button = container.querySelector('[data-button]');
if (!button){
button = document.createElement("div");
}
button.id = "button_"+vid.id;
button.dataset.button = true;
if (session.infocus){
button.innerHTML = "<img src='./media/sd.svg' style='background-color:#0007;width:4vh' aria-hidden='true' />";
button.title = "Show all active videos togethers";
@ -4819,16 +4865,30 @@ session.publishIFrame = function(iframeURL){
log(iframeURL);
}
} else if (domain=="www.twitch.tv"){
var vidid = iframeURL.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframeURL = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframeURL);
if (iframeURL.includes("twitch.tv/popout/")){
// this is a twitch live chat window
iframeURL = iframeURL.replace("/popout/","/embed/");
iframeURL = iframeURL.replace("?popout=","?parent="+location.hostname);
iframeURL = iframeURL.replace("?popout","?parent="+location.hostname);
} else {
var vidid = iframeURL.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframeURL = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframeURL);
}
}
} else if (domain=="twitch.tv"){
var vidid = iframeURL.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframeURL = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframeURL);
if (iframeURL.includes("twitch.tv/popout/")){
// this is a twitch live chat window
iframeURL = iframeURL.replace("/popout/","/embed/");
iframeURL = iframeURL.replace("?popout=","?parent="+location.hostname);
iframeURL = iframeURL.replace("?popout","?parent="+location.hostname);
} else {
var vidid = iframeURL.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframeURL = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframeURL);
}
}
}
@ -6097,6 +6157,8 @@ function createDirectorCam(vid) {
getById("press2talk").dataset.value = 1;
session.muted = false;
toggleMute(true);
getById("mutebutton").classList.remove("advanced");
getById("screensharebutton").classList.remove("advanced");
getById("hangupbutton2").classList.remove("advanced");
setTimeout(function() {
@ -8462,6 +8524,10 @@ async function grabScreen(quality = 0, audio = true, videoOnEnd = false) {
screenShareAudioTrack = track;
}
});
session.applySoloChat(); // mute streams that should be muted if a director
session.applyIsolatedChat();
applyMirror(true, eleName);
return true;
}).catch(function(err) {
@ -9110,7 +9176,6 @@ async function grabAudio(eleName = "previewWebcam", selector = "#audioSource", t
toggleMute(true);
if (session.videoElement.srcObject.getAudioTracks()) {
for (UUID in session.pcs) {
if (session.pcs[UUID].allowAudio == true) {
var tracks = session.videoElement.srcObject.getAudioTracks();
@ -9173,9 +9238,10 @@ async function grabAudio(eleName = "previewWebcam", selector = "#audioSource", t
}
});
}
}
}
session.applySoloChat(); // mute streams that should be muted if a director
session.applyIsolatedChat();
}
} catch (e) {
errorlog(e);
@ -10269,6 +10335,10 @@ session.publishFile = function(ele, event, title="Video File Sharing Session"){
});
session.refreshScale();
}
session.applySoloChat(); // mute streams that should be muted if a director
session.applyIsolatedChat();
vid.load();
log(session.streamSrc);
vid.play().then(_ => {
@ -10630,16 +10700,30 @@ function previewIframe(iframesrc) { // this is pretty important if you want to a
log(iframesrc);
}
} else if (domain=="www.twitch.tv"){
var vidid = iframesrc.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframesrc = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframesrc);
if (iframeURL.includes("twitch.tv/popout/")){
// this is a twitch live chat window
iframeURL = iframeURL.replace("/popout/","/embed/");
iframeURL = iframeURL.replace("?popout=","?parent="+location.hostname);
iframeURL = iframeURL.replace("?popout","?parent="+location.hostname);
} else {
var vidid = iframesrc.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframesrc = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframesrc);
}
}
} else if (domain=="twitch.tv"){
var vidid = iframesrc.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframesrc = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframesrc);
if (iframeURL.includes("twitch.tv/popout/")){
// this is a twitch live chat window
iframeURL = iframeURL.replace("/popout/","/embed/");
iframeURL = iframeURL.replace("?popout=","?parent="+location.hostname);
iframeURL = iframeURL.replace("?popout","?parent="+location.hostname);
} else {
var vidid = iframesrc.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframesrc = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframesrc);
}
}
}
@ -12420,16 +12504,33 @@ function shareWebsite(autostart=false){
log(iframeURL);
}
} else if (domain=="www.twitch.tv"){
var vidid = iframeURL.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframeURL = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframeURL);
if (iframeURL.includes("twitch.tv/popout/")){
// this is a twitch live chat window
//https://www.twitch.tv/embed/complex/chat?parent=vdo.ninja
//https://www.twitch.tv/popout/complex/chat?popout=
iframeURL = iframeURL.replace("/popout/","/embed/");
iframeURL = iframeURL.replace("?popout=","?parent="+location.hostname);
iframeURL = iframeURL.replace("?popout","?parent="+location.hostname);
} else {
var vidid = iframeURL.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframeURL = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframeURL);
}
}
} else if (domain=="twitch.tv"){
var vidid = iframeURL.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframeURL = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframeURL);
if (iframeURL.includes("twitch.tv/popout/")){
// this is a twitch live chat window
iframeURL = iframeURL.replace("/popout/","/embed/");
iframeURL = iframeURL.replace("?popout=","?parent="+location.hostname);
iframeURL = iframeURL.replace("?popout","?parent="+location.hostname);
} else {
var vidid = iframeURL.split('/').pop().split('#')[0].split('?')[0];
if (vidid){
iframeURL = "https://player.twitch.tv/?channel="+vidid+"&parent="+location.hostname;
log(iframeURL);
}
}
}

View File

@ -159,6 +159,10 @@ button.grey {
background-color: #840000 !important;
}
.orange {
background-color: #673100 !important;
}
button.red {
-webkit-app-region: no-drag;
padding: 10px;
@ -217,6 +221,15 @@ button.white:active {
pointer-events: none;
float: right;
}
#head6 {
display: inline-block;
text-decoration: none;
color: white;
text-align: left;
margin-left: 10px;
pointer-events: none;
font-weight: 700;
}
#overlayMsgs{
margin:0 auto;
@ -314,6 +327,15 @@ button.white:active {
color: white;
}
.altpress {
background: #673100 !important;
-webkit-box-shadow: inset 0px 0px 1px #b90000;
-moz-box-shadow: inset 0px 0px 1px #b90000;
box-shadow: inset 0px 0px 1px #b90000;
outline: none;
color: white;
}
.row {
align-content: center;
text-align: center;
@ -1401,7 +1423,7 @@ img {
}
.float2 {
opacity: 0.8;
width: 45px;
min-width: 45px;
height: 45px;
background-color: #8888;
color: #FFF;
@ -2901,6 +2923,29 @@ input:checked + .slider:before {
opacity: 0.8;
}
.modalBackdrop {
background: var(--background-color);
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
opacity: 0.8;
}
.opaqueBackdrop{
background: var(--background-color);
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 0;
opacity: 1.0;
}
@media only screen and (max-width: 390px) {
.alertModal {
width: 90%;

66
main.js
View File

@ -189,27 +189,6 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
getById("mutespeakerbutton").style.setProperty("display", "none", "important");
}
if (urlParams.has('screenshareid') || urlParams.has('ssid')) {
if (urlParams.get('screenshareid') || urlParams.get('ssid')) {
session.screenshareid = urlParams.get('screenshareid') || urlParams.get('ssid');
session.screenshareid = sanitizeStreamID(session.screenshareid);
}
}
if (urlParams.has('screensharefps') || urlParams.has('ssfps')) {
if (urlParams.get('screensharefps') || urlParams.get('ssfps')) {
session.screensharefps = urlParams.get('screensharefps') || urlParams.get('ssfps');
session.screensharefps = parseInt(session.screensharefps) || 2;
}
}
if (urlParams.has('screensharequality') || urlParams.has('ssq')) {
if (urlParams.get('screensharequality') || urlParams.get('ssq')) {
session.screensharequality = urlParams.get('screensharequality') || urlParams.get('ssq');
session.screensharequality = parseInt(session.screensharequality) || 1;
}
}
if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
//session.webcamonly = true;
session.mobile = true;
@ -520,10 +499,12 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
if (urlParams.has('bigbutton')) {
session.bigmutebutton = true;
getById("mutebutton").style.width = "min(40vh,40vw)";
getById("mutebutton").style.height = "min(40vh,40vw)";
getById("mutetoggle").style.width = "min(40vh,40vw)";
getById("mutetoggle").style.height = "min(40vh,40vw)";
getById("mutebutton").style.bottom = "100px";
getById("mutebutton").style.padding = "100px";
getById("mutebutton").style.position = "fixed";
getById("mutetoggle").style.bottom = "20px";
getById("mutetoggle").style.right = "0";
getById("mutetoggle").style.top = "unset";
}
@ -597,7 +578,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
session.password = urlParams.get('password') || urlParams.get('pass') || urlParams.get('pw') || urlParams.get('p');
if (!session.password) {
window.focus();
session.password = await promptAlt(miscTranslations["enter-password"]);
session.password = await promptAlt(miscTranslations["enter-password"], true);
} else if (session.password === "false") {
session.password = false;
session.defaultPassword = false;
@ -623,7 +604,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
var hash_input = urlParams.get('hash') || urlParams.get('crc') || urlParams.get('check');
if (session.password === false) {
window.focus();
session.password = await promptAlt(miscTranslations["enter-password-2"]);
session.password = await promptAlt(miscTranslations["enter-password-2"], true);
session.password = sanitizePassword(session.password);
getById("passwordRoom").value = session.password;
session.defaultPassword = false;
@ -679,7 +660,7 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
var updateURLAsNeed = true;
if (session.label == null || session.label.length == 0) {
window.focus();
session.label = await promptAlt(miscTranslations["enter-display-name"]);
session.label = await promptAlt(miscTranslations["enter-display-name"], true);
} else {
var updateURLAsNeed = false;
session.label = decodeURIComponent(session.label);
@ -933,11 +914,15 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
if (urlParams.has('nopreview') || urlParams.has('np')) {
log("preview OFF");
session.nopreview = true;
if ((iOS) || (iPad)) {
session.nopreview = false;
session.minipreview = 3; //
}
} else if ((urlParams.has('preview')) || (urlParams.has('showpreview'))) {
log("preview ON");
session.nopreview = false;
} else if ((urlParams.has('minipreview')) || (urlParams.has('mini'))) {
var mini = urlParams.has('minipreview') || urlParams.has('mini') || true; // 2 is a valid option.
var mini = urlParams.has('minipreview') || urlParams.has('mini') || true; // 2 is a valid option. (3 is for iPhone with a hidden preview)
log("preview ON");
session.nopreview = false;
session.minipreview = mini;
@ -2005,6 +1990,29 @@ async function main(){ // main asyncronous thread; mostly initializes the user s
}
}
}
if (urlParams.has('screenshareid') || urlParams.has('ssid')) {
if (urlParams.get('screenshareid') || urlParams.get('ssid')) {
session.screenshareid = urlParams.get('screenshareid') || urlParams.get('ssid');
session.screenshareid = sanitizeStreamID(session.screenshareid);
} else {
session.screenshareid = session.streamID + "_screenshare";
}
}
if (urlParams.has('screensharefps') || urlParams.has('ssfps')) {
if (urlParams.get('screensharefps') || urlParams.get('ssfps')) {
session.screensharefps = urlParams.get('screensharefps') || urlParams.get('ssfps');
session.screensharefps = parseInt(session.screensharefps) || 2;
}
}
if (urlParams.has('screensharequality') || urlParams.has('ssq')) {
if (urlParams.get('screensharequality') || urlParams.get('ssq')) {
session.screensharequality = urlParams.get('screensharequality') || urlParams.get('ssq');
session.screensharequality = parseInt(session.screensharequality) || 1;
}
}
if ((session.roomid) || (urlParams.has('roomid')) || (urlParams.has('r')) || (urlParams.has('room')) || (filename) || (session.permaid !== false)) {

View File

@ -143,7 +143,7 @@
"hide-setting-buttons": "Hide settings button",
"mini-self-preview": "Mini self-preview",
"virtual-backgrounds": "Virtual backgrounds",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"powerful-computers-only": "Only use with powerful computers and small groups!!",
"guests-see-HD-video": "Guests see HD video",
"no-self-preview": "Disable self-preview",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -143,7 +143,7 @@
"hide-setting-buttons": "Hide settings button",
"mini-self-preview": "Mini self-preview",
"virtual-backgrounds": "Virtual backgrounds",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"powerful-computers-only": "Only use with powerful computers and small groups!!",
"guests-see-HD-video": "Guests see HD video",
"no-self-preview": "Disable self-preview",

View File

@ -283,7 +283,7 @@
"add-to-yahoo-calendar": "Añadir a Calendario Yahoo",
"push-to-talk-enable": " enable director`s microphone or video<br>(only guests can see this feed)",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -312,7 +312,7 @@
"add-to-outlook-calendar": "Add to Outlook Calendar",
"add-to-yahoo-calendar": "Add to Yahoo Calendar",
"remote-monitoring": "Invite saved to cookie",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"show-guest-tips": "Show guest setup tips",
"green-background": "Green background",
"add-margin": "Add margin to videos",

View File

@ -251,7 +251,7 @@
"hide-setting-buttons": "Hide settings button",
"mini-self-preview": "Mini self-preview",
"virtual-backgrounds": "Virtual backgrounds",
"fade-videos-in": "Animate mixing",
"fade-videos-in": "Fade videos in",
"powerful-computers-only": "Only use with powerful computers and small groups!!",
"guests-see-HD-video": "Guests see HD video",
"no-self-preview": "Disable self-preview",

File diff suppressed because one or more lines are too long