Update static/js/12-calls.js

This commit is contained in:
dev 2026-11-02 05:11:49 +00:00
parent 8529ae06e1
commit eb5ba57785

View File

@ -39,18 +39,12 @@ Glow.calls.ensureState = () => {
}; };
state.backendParticipants ||= []; state.backendParticipants ||= [];
state.scope ||= null; state.scope ||= null;
state.statusText ||= "Idle"; state.statusText ||= "idle";
state.makingOffer ||= new Map(); state.makingOffer ||= new Map();
state.ignoreOffer ||= new Map(); state.ignoreOffer ||= new Map();
state.isSettingRemoteAnswerPending ||= new Map(); state.isSettingRemoteAnswerPending ||= new Map();
state.panelOpen ??= false; state.panelOpen ??= false;
state.metrics ||= {
packetLoss: null,
uptime: null,
latency: null,
elapsedSeconds: 0,
userCount: 0
};
state.drag ||= { state.drag ||= {
active: false, active: false,
x: null, x: null,
@ -1200,8 +1194,11 @@ Glow.renderCallUi = () => {
}; };
Glow.calls.applyPanelPosition = () => { Glow.calls.applyPanelPosition = () => {
Glow.calls.ensureState();
const overlay = Glow.els.callOverlay; const overlay = Glow.els.callOverlay;
const drag = Glow.state.calls?.drag; const drag = Glow.state.calls?.drag;
if (!overlay || !drag) return; if (!overlay || !drag) return;
if (!Number.isFinite(drag.x) || !Number.isFinite(drag.y)) return; if (!Number.isFinite(drag.x) || !Number.isFinite(drag.y)) return;
@ -1214,33 +1211,46 @@ Glow.calls.applyPanelPosition = () => {
}; };
Glow.calls.loadPanelPosition = () => { Glow.calls.loadPanelPosition = () => {
Glow.calls.ensureState();
const drag = Glow.state.calls?.drag;
if (!drag) return;
const x = Number(localStorage.getItem("glow_call_panel_x")); const x = Number(localStorage.getItem("glow_call_panel_x"));
const y = Number(localStorage.getItem("glow_call_panel_y")); const y = Number(localStorage.getItem("glow_call_panel_y"));
if (!Number.isFinite(x) || !Number.isFinite(y)) return; if (!Number.isFinite(x) || !Number.isFinite(y)) return;
Glow.state.calls.drag.x = x;
Glow.state.calls.drag.y = y; drag.x = x;
drag.y = y;
Glow.calls.applyPanelPosition(); Glow.calls.applyPanelPosition();
}; };
Glow.calls.savePanelPosition = () => { Glow.calls.savePanelPosition = () => {
Glow.calls.ensureState();
const drag = Glow.state.calls?.drag; const drag = Glow.state.calls?.drag;
if (!drag) return; if (!drag) return;
if (!Number.isFinite(drag.x) || !Number.isFinite(drag.y)) return; if (!Number.isFinite(drag.x) || !Number.isFinite(drag.y)) return;
localStorage.setItem("glow_call_panel_x", String(drag.x)); localStorage.setItem("glow_call_panel_x", String(drag.x));
localStorage.setItem("glow_call_panel_y", String(drag.y)); localStorage.setItem("glow_call_panel_y", String(drag.y));
}; };
Glow.calls.beginDrag = event => { Glow.calls.beginDrag = event => {
Glow.calls.ensureState(); Glow.calls.ensureState();
const overlay = Glow.els.callOverlay; const overlay = Glow.els.callOverlay;
if (!overlay) return; const drag = Glow.state.calls?.drag;
if (!overlay || !drag) return;
const rect = overlay.getBoundingClientRect(); const rect = overlay.getBoundingClientRect();
Glow.state.calls.drag.active = true; drag.active = true;
Glow.state.calls.drag.x = rect.left; drag.x = rect.left;
Glow.state.calls.drag.y = rect.top; drag.y = rect.top;
Glow.state.calls.drag.offsetX = event.clientX - rect.left; drag.offsetX = event.clientX - rect.left;
Glow.state.calls.drag.offsetY = event.clientY - rect.top; drag.offsetY = event.clientY - rect.top;
}; };
Glow.calls.onDrag = event => { Glow.calls.onDrag = event => {
@ -1260,6 +1270,8 @@ Glow.calls.onDrag = event => {
Glow.calls.endDrag = () => { Glow.calls.endDrag = () => {
const drag = Glow.state.calls?.drag; const drag = Glow.state.calls?.drag;
if (!drag) return; if (!drag) return;
if (!drag.active) return;
drag.active = false; drag.active = false;
Glow.calls.savePanelPosition(); Glow.calls.savePanelPosition();
}; };
@ -1609,6 +1621,7 @@ Glow.els.addToCallButton?.addEventListener("click", () => {
}); });
Glow.els.callDragHandle?.addEventListener("mousedown", event => { Glow.els.callDragHandle?.addEventListener("mousedown", event => {
if (event.button !== 0) return;
event.preventDefault(); event.preventDefault();
Glow.calls.beginDrag(event); Glow.calls.beginDrag(event);
}); });
@ -1621,13 +1634,33 @@ document.addEventListener("mouseup", () => {
Glow.calls.endDrag?.(); Glow.calls.endDrag?.();
}); });
window.addEventListener("resize", () => {
const drag = Glow.state.calls?.drag;
const overlay = Glow.els.callOverlay;
if (!overlay || !drag) return;
if (!Number.isFinite(drag.x) || !Number.isFinite(drag.y)) return;
const maxX = Math.max(0, window.innerWidth - overlay.offsetWidth);
const maxY = Math.max(0, window.innerHeight - overlay.offsetHeight);
drag.x = Math.min(maxX, Math.max(0, drag.x));
drag.y = Math.min(maxY, Math.max(0, drag.y));
Glow.calls.applyPanelPosition();
Glow.calls.savePanelPosition();
});
window.addEventListener("resize", () => { window.addEventListener("resize", () => {
if (Glow.state.calls?.panelOpen) { if (Glow.state.calls?.panelOpen) {
Glow.calls.applyPanelPosition?.(); Glow.calls.applyPanelPosition?.();
} }
}); });
Glow.calls.loadPanelPosition?.(); // Glow.calls.loadPanelPosition?.();
Glow.calls.ensureState();
Glow.calls.loadPanelPosition();
setInterval(() => { setInterval(() => {
if (Glow.state.calls?.activeCall) { if (Glow.state.calls?.activeCall) {
Glow.calls.updateSummaryMetrics?.(); Glow.calls.updateSummaryMetrics?.();