Update static/js/12-calls.js

This commit is contained in:
dev 2026-10-30 05:24:29 +00:00
parent 2baa0d8d4a
commit 746d655b73

View File

@ -1,3 +1,4 @@
// static/js/12-calls.js
"use strict"; "use strict";
window.Glow = window.Glow || {}; window.Glow = window.Glow || {};
Glow.calls = Glow.calls || {}; Glow.calls = Glow.calls || {};
@ -42,6 +43,7 @@ Glow.calls.ensureState = () => {
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;
}; };
Glow.calls.scopeLabel = invite => { Glow.calls.scopeLabel = invite => {
@ -581,26 +583,6 @@ Glow.calls.renderParticipants = () => {
} }
}; };
Glow.calls.renderHeaderCallChip = () => {
if (!Glow.els.callStatusChip) return;
Glow.calls.ensureState();
const state = Glow.calls.state();
const visible = Boolean(state.activeCall || state.joining || state.reconnecting);
Glow.els.callStatusChip.classList.toggle("hidden", !visible);
if (state.reconnecting) {
Glow.els.callStatusChip.textContent = "Call reconnecting";
} else if (state.joining) {
Glow.els.callStatusChip.textContent = "Call joining";
} else if (state.activeCall) {
Glow.els.callStatusChip.textContent = "Call active";
} else {
Glow.els.callStatusChip.textContent = "Call";
}
};
Glow.calls.connectWebSocket = async () => { Glow.calls.connectWebSocket = async () => {
Glow.calls.ensureState(); Glow.calls.ensureState();
const state = Glow.calls.state(); const state = Glow.calls.state();
@ -910,12 +892,14 @@ Glow.calls.resetAll = () => {
can_end: false, can_end: false,
can_invite: false can_invite: false
}; };
state.panelOpen = false;
Glow.calls.debug("resetAll complete"); Glow.calls.debug("resetAll complete");
}; };
Glow.endLocalCallUi = async () => { Glow.endLocalCallUi = async () => {
Glow.calls.resetAll(); Glow.calls.resetAll();
Glow.state.calls.panelOpen = false;
if (Glow.els.callParticipants) { if (Glow.els.callParticipants) {
Glow.els.callParticipants.replaceChildren(); Glow.els.callParticipants.replaceChildren();
@ -1035,12 +1019,13 @@ Glow.renderCallUi = () => {
const active = Boolean(state.activeCall); const active = Boolean(state.activeCall);
const busy = Boolean(state.activeCall || state.joining || state.reconnecting); const busy = Boolean(state.activeCall || state.joining || state.reconnecting);
const overlayVisible = Boolean(state.panelOpen || busy);
const scope = state.activeCall?.scope || state.scope || Glow.calls.getCurrentScope(); const scope = state.activeCall?.scope || state.scope || Glow.calls.getCurrentScope();
const peerCount = Glow.calls.listOtherPeers().length; const peerCount = Glow.calls.listOtherPeers().length;
if (!Glow.els.callStatus) return; if (!Glow.els.callStatus) return;
Glow.els.callOverlay?.classList.toggle("hidden", !busy); Glow.els.callOverlay?.classList.toggle("hidden", !overlayVisible);
Glow.els.callPeerLabel.textContent = Glow.els.callPeerLabel.textContent =
scope?.label || scope?.label ||
@ -1095,7 +1080,7 @@ Glow.renderCallUi = () => {
} }
if (Glow.els.callParticipants) { if (Glow.els.callParticipants) {
Glow.els.callParticipants.classList.toggle("hidden", !busy); Glow.els.callParticipants.classList.toggle("hidden", !overlayVisible);
} }
Glow.calls.renderParticipants(); Glow.calls.renderParticipants();
@ -1103,18 +1088,6 @@ Glow.renderCallUi = () => {
Glow.calls.renderHeaderCallChip(); Glow.calls.renderHeaderCallChip();
}; };
Glow.openCallPanel = async () => {
Glow.calls.ensureState();
Glow.els.callOverlay?.classList.remove("hidden");
Glow.els.callParticipants?.classList.remove("hidden");
if (Glow.state.calls.activeCall?.groupSession?.id) {
await Glow.calls.refreshBackendParticipants();
}
Glow.renderCallUi();
};
Glow.startCall = async () => { Glow.startCall = async () => {
Glow.calls.ensureState(); Glow.calls.ensureState();
@ -1153,6 +1126,7 @@ Glow.startCall = async () => {
Glow.state.calls.makingOffer = new Map(); Glow.state.calls.makingOffer = new Map();
Glow.state.calls.ignoreOffer = new Map(); Glow.state.calls.ignoreOffer = new Map();
Glow.state.calls.isSettingRemoteAnswerPending = new Map(); Glow.state.calls.isSettingRemoteAnswerPending = new Map();
Glow.state.calls.panelOpen = true;
Glow.openCallPanel(); Glow.openCallPanel();
Glow.calls.setStatusText("Connecting microphone…"); Glow.calls.setStatusText("Connecting microphone…");
@ -1379,6 +1353,7 @@ Glow.calls.openIncomingInviteDialog = async invite => {
Glow.state.calls.makingOffer = new Map(); Glow.state.calls.makingOffer = new Map();
Glow.state.calls.ignoreOffer = new Map(); Glow.state.calls.ignoreOffer = new Map();
Glow.state.calls.isSettingRemoteAnswerPending = new Map(); Glow.state.calls.isSettingRemoteAnswerPending = new Map();
Glow.state.calls.panelOpen = true;
Glow.openCallPanel(); Glow.openCallPanel();
Glow.calls.setStatusText("Connecting microphone…"); Glow.calls.setStatusText("Connecting microphone…");
@ -1453,12 +1428,4 @@ Glow.els.endCallButton?.addEventListener("click", () => {
Glow.els.addToCallButton?.addEventListener("click", () => { Glow.els.addToCallButton?.addEventListener("click", () => {
Glow.openAddToCallDialog?.(); Glow.openAddToCallDialog?.();
});
Glow.els.closeCallPanelButton?.addEventListener("click", () => {
Glow.els.callOverlay?.classList.add("hidden");
});
Glow.els.callStatusChip?.addEventListener("click", async () => {
await Glow.openCallPanel?.();
}); });