add resiliation

This commit is contained in:
LathanDevers
2026-07-17 12:48:06 +02:00
parent 2706b3d5a3
commit b30a16b8a4
4 changed files with 128 additions and 48 deletions
+19 -6
View File
@@ -20,8 +20,10 @@ export default function Dashboard() {
const triggerAlert = (title, message, type = "info") => setCustomAlert({ title, message, type });
const fetchInventory = async () => {
setIsLoading(true);
const fetchInventory = async (retryCount = 0) => {
// On n'affiche le loader global que lors du tout premier essai
if (retryCount === 0) setIsLoading(true);
try {
const data = await getOrdersList();
@@ -37,17 +39,28 @@ export default function Dashboard() {
title.startsWith('domaine ') ||
title.startsWith('enregistrement ');
return !isGhostProduct;
return (order.status === 'active' || order.status === 'pending_setup') && !isGhostProduct;
});
setOrders(filteredOrders);
} else {
setOrders([]);
}
setError(null); // On efface l'erreur s'il y en avait une
setIsLoading(false); // Le chargement est terminé
} catch (err) {
setError(err.message || "Impossible de récupérer la télémétrie des services.");
} finally {
setIsLoading(false);
// 🛡️ SYSTÈME D'AUTO-GUÉRISON : Si on détecte le redémarrage d'HestiaCP (Erreur HTML/JSON)
if (err.message && err.message.includes('Unexpected token') && retryCount < 3) {
console.warn(`Redémarrage d'infrastructure détecté. Nouvelle tentative... (Essai ${retryCount + 1}/3)`);
// On attend 2,5 secondes, puis la fonction s'appelle elle-même (récursivité)
setTimeout(() => fetchInventory(retryCount + 1), 2500);
} else {
// S'il y a une vraie erreur persistante, on l'affiche au client
setError(err.message || "Impossible de récupérer la télémétrie des services.");
setIsLoading(false);
}
}
};