PageSourceSearch

https://leboisdesbuttes.fr/plugins/auto/auto-update-main/javascript/auto_update_alerte.js?1789391616

js leboisdesbuttes.fr collected 2026-10-03 02:47:38 UTC 2,631 bytes, 91 lines download raw bytes

1(function () {
2	'use strict';
3
4	const script = document.currentScript;
5	if (!script) {
6		return;
7	}
8
9	const url = script.dataset.autoUpdateUrl;
10	const message = script.dataset.autoUpdateMessage;
11	const connexion = script.dataset.autoUpdateConnexion;
12	// Le rythme est celui du serveur : la bascule attend un sondage entier
13	// avant de fermer les sessions, et doit savoir combien de temps cela dure.
14	const intervalle = (Number.parseInt(script.dataset.autoUpdateIntervalle, 10) || 15) * 1000;
15	const id = 'auto-update-alerte';
16	let partie = false;
17
18	function afficher() {
19		if (document.getElementById(id)) {
20			return;
21		}
22
23		const alerte = document.createElement('div');
24		alerte.id = id;
25		alerte.className = 'msg-alert notice auto-update-alerte';
26		alerte.setAttribute('role', 'alert');
27
28		const texte = document.createElement('div');
29		texte.className = 'msg-alert__text clearfix';
30		texte.textContent = message;
31		alerte.appendChild(texte);
32		document.body.appendChild(alerte);
33	}
34
35	function masquer() {
36		document.getElementById(id)?.remove();
37	}
38
39	// La mise à jour a commencé : les sessions vont être fermées et ecrire/
40	// renommé. L'onglet quitte aussitôt la page pour la connexion ; tant que
41	// la mise à jour dure, le serveur y répond par une page d'attente qui se
42	// recharge d'elle-même, puis par le formulaire.
43	function deconnecter() {
44		if (partie) {
45			return;
46		}
47		partie = true;
48
49		const ici = window.location.href;
50		if (!connexion || ici.indexOf(connexion) === 0) {
51			// Déjà sur la connexion : la recharger, sans imbriquer son adresse.
52			window.location.replace(ici);
53			return;
54		}
55		window.location.replace(
56			connexion + (connexion.indexOf('?') === -1 ? '?' : '&') + 'url=' + encodeURIComponent(ici)
57		);
58	}
59
60	async function verifier() {
61		try {
62			const reponse = await fetch(url, {
63				cache: 'no-store',
64				credentials: 'same-origin',
65			});
66			// Seul un 503 marqué par le plugin déconnecte : une panne du
67			// serveur n'est pas une mise à jour.
68			if (reponse.status === 503 && reponse.headers.get('X-Auto-Update-Barrier')) {
69				deconnecter();
70				return;
71			}
72			if (!reponse.ok) {
73				return;
74			}
75			const etat = await reponse.json();
76			etat.active === true ? afficher() : masquer();
77		} catch (erreur) {
78			// Une panne passagère ne doit pas rassurer à tort l'utilisateur.
79		}
80	}
81
82	verifier();
83	setInterval(verifier, intervalle);
84	// Un onglet en arrière-plan est ralenti par le navigateur : il sonde
85	// avant qu'on puisse y cliquer.
86	document.addEventListener('visibilitychange', () => {
87		if (document.visibilityState === 'visible') {
88			verifier();
89		}
90	});
91})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.