privacy selector
This commit is contained in:
@@ -80,6 +80,7 @@ import { createSharedUiSettingsSaver, loadSharedUiSettings } from "./shared-ui-s
|
||||
const inputLatency = document.getElementById("inputLatency");
|
||||
const statusEl = document.getElementById("streamStatus");
|
||||
const clipboardSyncCtrl = document.getElementById("clipboardSyncCtrl");
|
||||
const privacyCtrl = document.getElementById("privacyCtrl");
|
||||
const audioCtrl = document.getElementById("audioCtrl");
|
||||
const webrtcMode = document.getElementById("webrtcMode");
|
||||
const webrtcVideo = document.getElementById("webrtcVideo");
|
||||
@@ -427,6 +428,7 @@ import { createSharedUiSettingsSaver, loadSharedUiSettings } from "./shared-ui-s
|
||||
duplication: !!duplicationCtrl?.checked,
|
||||
softwareH264: !!softwareH264Ctrl?.checked,
|
||||
clipboardSync: !!clipboardSyncCtrl?.checked,
|
||||
privacy: !!privacyCtrl?.checked,
|
||||
audio: !!audioCtrl?.checked,
|
||||
audioTransport: getAudioTransport(),
|
||||
smoothing: Number(smoothingSlider?.value || 20),
|
||||
@@ -802,6 +804,13 @@ import { createSharedUiSettingsSaver, loadSharedUiSettings } from "./shared-ui-s
|
||||
});
|
||||
}
|
||||
|
||||
if (privacyCtrl) {
|
||||
privacyCtrl.addEventListener("change", function () {
|
||||
pushPrivacyToggle();
|
||||
sharedSettingsSaver.scheduleSave();
|
||||
});
|
||||
}
|
||||
|
||||
function updateLatency(ms) {
|
||||
if (ms < 0 || !Number.isFinite(ms)) return;
|
||||
latencyAvg = latencyAvg == null ? ms : latencyAvg * 0.8 + ms * 0.2;
|
||||
@@ -1387,6 +1396,7 @@ import { createSharedUiSettingsSaver, loadSharedUiSettings } from "./shared-ui-s
|
||||
desiredStreaming = false;
|
||||
lastFrameAt = 0;
|
||||
setStreamState("stopping", "Stopping stream");
|
||||
disablePrivacyIfActive();
|
||||
sendCmd("desktop_stop", {});
|
||||
disconnectAudio();
|
||||
stopAllWebrtc();
|
||||
@@ -1435,6 +1445,18 @@ import { createSharedUiSettingsSaver, loadSharedUiSettings } from "./shared-ui-s
|
||||
}
|
||||
}
|
||||
|
||||
function pushPrivacyToggle() {
|
||||
if (!privacyCtrl) return;
|
||||
sendCmd(privacyCtrl.checked ? "privacy_start" : "privacy_stop", {});
|
||||
}
|
||||
|
||||
function disablePrivacyIfActive() {
|
||||
if (privacyCtrl && privacyCtrl.checked) {
|
||||
privacyCtrl.checked = false;
|
||||
sendCmd("privacy_stop", {});
|
||||
}
|
||||
}
|
||||
|
||||
mouseCtrl.addEventListener("change", function () {
|
||||
pushInputToggles();
|
||||
sharedSettingsSaver.scheduleSave();
|
||||
@@ -2153,6 +2175,7 @@ import { createSharedUiSettingsSaver, loadSharedUiSettings } from "./shared-ui-s
|
||||
function stopOnExit() {
|
||||
sharedSettingsSaver.saveNow();
|
||||
if (isRecording()) stopRecording();
|
||||
disablePrivacyIfActive();
|
||||
if (ws && ws.readyState === WebSocket.OPEN && desiredStreaming) {
|
||||
desiredStreaming = false;
|
||||
sendCmd("desktop_stop", {});
|
||||
|
||||
@@ -239,6 +239,9 @@
|
||||
<label class="flex items-center gap-2 text-sm text-slate-200 col-span-2" title="Sync clipboard between your browser and the remote machine">
|
||||
<input type="checkbox" id="clipboardSyncCtrl" /> Clipboard Sync
|
||||
</label>
|
||||
<label class="flex items-center gap-2 text-sm text-red-400 col-span-2" title="Blacks out local screen and blocks physical input. Remote view remains unaffected. Local escape: Ctrl+P">
|
||||
<input type="checkbox" id="privacyCtrl" /> Privacy Mode
|
||||
</label>
|
||||
</div>
|
||||
<div class="flex items-center gap-2" title="Smooths mouse input for steadier movement">
|
||||
<label class="text-sm text-slate-300 w-20" for="smoothingSlider">Smoothing</label>
|
||||
|
||||
Reference in New Issue
Block a user