add resiliation
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user