';
return true;
}
return false;
}
// Décision immédiate avec le cache si dispo + récent (<60 s)
if (cached && cached._fetchedAt && (Date.now() - cached._fetchedAt) < 60000) {
if (applyConfig(cached)) return;
}
// Fetch en arrière-plan pour mettre à jour le cache (ne bloque pas
// le rendu actuel · si maintenance vient d'être activée, le
// prochain visiteur la verra ; le user actuel reload au besoin).
fetch("https://jocvsxwefjybyoimagqk.supabase.co/rest/v1/site_config?select=*&id=eq.1", {
headers: {
apikey: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpvY3ZzeHdlZmp5YnlvaW1hZ3FrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzY3MDk3MTAsImV4cCI6MjA5MjI4NTcxMH0.btFNbc_W5W1Lxq5ciIAkW4TGupHMwKA3CnFtvGknvzA",
},
})
.then(function (r) { return r.json(); })
.then(function (rows) {
var cfg = (rows && rows[0]) || {};
cfg._fetchedAt = Date.now();
try { localStorage.setItem(CACHE_KEY, JSON.stringify(cfg)); } catch (e) {}
// Si la maintenance vient d'être activée, l'applique tout de suite
// (on n'aura peut-être pas encore rendu React, ou si oui, le replace
// de document.documentElement re-render proprement).
if (cfg.maintenance_mode === true || cfg.active_version === "v1") {
applyConfig(cfg);
}
})
.catch(function () { /* offline, on continue avec le rendu normal */ });
} catch (e) {}
})();
Esthéticienne : comment réduire les no-show · ClientBase