46 lines
1.6 KiB
HTML
46 lines
1.6 KiB
HTML
<!doctype html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<meta
|
|
name="description"
|
|
content="Sokko G centralise des toolboxes locales et des guides de jeu pour accompagner les sessions gaming sur second ecran."
|
|
/>
|
|
<meta name="theme-color" content="#070913" />
|
|
<title>Sokko G</title>
|
|
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
|
|
<link rel="alternate icon" href="/favicon.ico" sizes="any" />
|
|
<script>
|
|
(() => {
|
|
const recoveryParameter = "_asset-recovery";
|
|
|
|
function reloadWithFreshAssets() {
|
|
const recoveryUrl = new URL(window.location.href);
|
|
if (recoveryUrl.searchParams.has(recoveryParameter)) return;
|
|
recoveryUrl.searchParams.set(recoveryParameter, Date.now().toString());
|
|
window.location.replace(recoveryUrl);
|
|
}
|
|
|
|
window.addEventListener("error", (event) => {
|
|
const resource = event.target;
|
|
if (!(resource instanceof HTMLScriptElement) || resource.type !== "module") return;
|
|
|
|
const resourceUrl = new URL(resource.src, window.location.href);
|
|
if (resourceUrl.origin === window.location.origin && resourceUrl.pathname.startsWith("/assets/")) {
|
|
reloadWithFreshAssets();
|
|
}
|
|
}, true);
|
|
|
|
window.addEventListener("vite:preloadError", (event) => {
|
|
event.preventDefault();
|
|
reloadWithFreshAssets();
|
|
});
|
|
})();
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="app"></div>
|
|
<script type="module" src="/src/main.jsx"></script>
|
|
</body>
|
|
</html>
|