исправлено автоскачивание проекта vMix на кнопку во вкладке игра

This commit is contained in:
2026-04-22 11:28:24 +03:00
parent f2a49d9385
commit 2211d07562
4 changed files with 190 additions and 66 deletions

View File

@@ -602,70 +602,6 @@
throw new Error(data.error || data.vmix_error || "Не удалось выбрать матч");
}
if (data.download_url) {
setLoaderState("",
"Подготовка матча",
"Формирование проекта vMix..."
);
const downloadResponse = await fetch(data.download_url, {
method: "GET",
credentials: "same-origin"
});
if (!downloadResponse.ok) {
let errText = "Не удалось скачать vMix проект";
try {
const errJson = await downloadResponse.json();
errText = errJson.error || errText;
} catch (_) {}
throw new Error(errText);
}
setLoaderState("",
"Подготовка матча",
"Скачивание проекта vMix..."
);
const blob = await downloadResponse.blob();
let filename = "project.vmix";
const disposition = downloadResponse.headers.get("Content-Disposition");
if (disposition) {
let match = disposition.match(/filename\*=UTF-8''([^;]+)/i);
if (match && match[1]) {
filename = decodeURIComponent(match[1]);
} else {
match = disposition.match(/filename="([^"]+)"/i);
if (match && match[1]) {
filename = match[1];
}
}
}
const blobUrl = window.URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = blobUrl;
a.download = filename;
document.body.appendChild(a);
a.click();
a.remove();
setLoaderState(
"is-success",
"Загрузка завершена",
"Проект vMix успешно подготовлен.\nПереход во вкладку «Игра»..."
);
setTimeout(() => {
window.URL.revokeObjectURL(blobUrl);
window.location.href = data.session_url + "?tab=game";
}, 1200);
return;
}
setLoaderState(
"is-success",
"Загрузка завершена",