' + '
' + '

On revient très vite ✨

' + '

' + (cfg.maintenance_message || "Le site est temporairement indisponible.").replace(/[<>]/g, "") + '

' + '

Une question urgente ? clientbase.fr@gmail.com

' + '
'; 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