Migliora overlay basket Android, regia e catalogo sport senza timer.

Fix crash e race su +3, layout tabellone con squadre ai lati, safe area in diretta e rimozione overlay cronometro; backend con sync punteggio periodo, link diretta in regia e init score_state basket.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-09 23:31:12 +02:00
parent 34c97f4447
commit 2b7e8b9e36
23 changed files with 341 additions and 167 deletions

View File

@@ -14,8 +14,10 @@
hlsUrl: root.dataset.hlsUrl,
homeName: root.dataset.homeName,
awayName: root.dataset.awayName,
shareUrl: root.dataset.shareUrl,
shareTitle: root.dataset.shareTitle,
regiaShareUrl: root.dataset.regiaShareUrl,
regiaShareTitle: root.dataset.regiaShareTitle,
liveShareUrl: root.dataset.liveShareUrl,
liveShareTitle: root.dataset.liveShareTitle,
streamClosed: root.dataset.streamClosed === "true"
};
@@ -360,12 +362,12 @@
els.btnPause?.addEventListener("click", () => togglePauseStream().catch((e) => toast(e.message)));
document.getElementById("btn-stop")?.addEventListener("click", () => stopStream().catch((e) => toast(e.message)));
async function shareLink() {
const payload = {
title: cfg.shareTitle,
text: "Apri questo link per gestire il punteggio della diretta:",
url: cfg.shareUrl
};
async function shareLink(url, title, text) {
if (!url) {
toast("Link non disponibile");
return;
}
const payload = { title, text, url };
if (navigator.share) {
try {
await navigator.share(payload);
@@ -374,20 +376,38 @@
if (err.name === "AbortError") return;
}
}
await copyLink();
await copyLink(url);
}
async function copyLink() {
async function copyLink(url) {
if (!url) {
toast("Link non disponibile");
return;
}
try {
await navigator.clipboard.writeText(cfg.shareUrl);
await navigator.clipboard.writeText(url);
toast("Link copiato");
} catch (_) {
prompt("Copia il link:", cfg.shareUrl);
prompt("Copia il link:", url);
}
}
document.getElementById("btn-share")?.addEventListener("click", () => shareLink());
document.getElementById("btn-copy")?.addEventListener("click", () => copyLink());
document.getElementById("btn-share-regia")?.addEventListener("click", () =>
shareLink(
cfg.regiaShareUrl,
cfg.regiaShareTitle,
"Apri questo link per gestire il punteggio della diretta:"
)
);
document.getElementById("btn-copy-regia")?.addEventListener("click", () => copyLink(cfg.regiaShareUrl));
document.getElementById("btn-share-live")?.addEventListener("click", () =>
shareLink(
cfg.liveShareUrl,
cfg.liveShareTitle,
"Guarda la diretta su Match Live TV:"
)
);
document.getElementById("btn-copy-live")?.addEventListener("click", () => copyLink(cfg.liveShareUrl));
function bindPreviewStallRecovery() {
if (!els.preview) return;