Окно звонка: при connection.passwordRequired (пропуск истёк при переподключении) брать новый пропуск и входить заново

This commit is contained in:
crm-calls agent
2026-10-14 20:59:49 +00:00
parent 9b1ab097fb
commit d910d48ee8

View File

@@ -70,7 +70,7 @@ export function BrowserCall(props: { session: string; onSessionLost: (msg: strin
setMsg(why); setMsg(why);
if (fails > 6) { setPhase("error"); return; } if (fails > 6) { setPhase("error"); return; }
setPhase("retry"); setPhase("retry");
timer = window.setTimeout(() => void start(), Math.min(30, 2 ** (fails - 1)) * 1000); timer = window.setTimeout(() => void start(), fails === 1 ? 300 : Math.min(30, 2 ** (fails - 1)) * 1000);
} }
async function start() { async function start() {
@@ -108,9 +108,12 @@ export function BrowserCall(props: { session: string; onSessionLost: (msg: strin
const err = (e as { error?: { name?: string; isFatal?: boolean; type?: string } }).error ?? {}; const err = (e as { error?: { name?: string; isFatal?: boolean; type?: string } }).error ?? {};
diag.errors.push(`${err.type ?? ""}:${err.name ?? ""}${err.isFatal ? ":fatal" : ""}`); diag.errors.push(`${err.type ?? ""}:${err.name ?? ""}${err.isFatal ? ":fatal" : ""}`);
if (diag.errors.length > 30) diag.errors.shift(); if (diag.errors.length > 30) diag.errors.shift();
// Фатальная ошибка соединения или конференции (в т. ч. отказ по истёкшему пропуску при переподключении): // Jitsi сам уже не восстановится — входим заново с новым пропуском:
// Jitsi сам уже не восстановится — входим заново с новым пропуском. // • фатальная ошибка соединения или конференции;
if (err.isFatal && !hungUp && jitsi === j) retryLater("з'єднання перервалося"); // • отказ по пропуску при переподключении: после долгого обрыва сети пропуск уже истёк, и prosody
// отвечает connection.passwordRequired (Jitsi не помечает её фатальной и показывает окно логина).
const authFail = /passwordRequired|authenticationRequired|notAllowed|notAuthorized/i.test(err.name ?? "");
if ((err.isFatal || authFail) && !hungUp && jitsi === j) retryLater(authFail ? "пропуск застарів, отримую новий" : "з'єднання перервалося");
}); });
} }