coorectif de refresh

This commit is contained in:
ocroguennec committed 2026-08-17 17:56:28 +02:00
1 parent 804a40f52c
commit 9540221577
2 files changed
+45 -27

No files matched your search

+24 -15
View File
@@ -395,18 +395,27 @@ export default function Plateformes() {
// Snapshots backend du solde porte-monnaie : 'live' (aucune coupure) + l'année
// sélectionnée (si filtre actif) + l'année précédente (toujours nécessaire pour
// le TrendBadge). Même endpoint que DepotsRetraits.jsx (GET /dashboard[?asOf=]).
useEffect(() => {
// Extrait en fonction nommée pour pouvoir aussi être rappelée après chaque
// mutation (remboursement, mouvement, correction) affectant le porte-monnaie —
// `load()` seul ne suffit pas, ces snapshots vivent dans un state à part.
const loadDashDataAsOf = async () => {
if (!activeId && activeView !== 'all') return;
const scopeParams = activeView === 'all' ? { scope: 'all' } : undefined;
const prevYear = selectedYear ? Number(selectedYear) - 1 : new Date().getFullYear() - 1;
const keys = new Set(['live', `${prevYear}-12-31`]);
if (selectedYear) keys.add(`${selectedYear}-12-31`);
Promise.all([...keys].map(k =>
api.get('/dashboard', { ...scopeParams, ...(k === 'live' ? {} : { asOf: k }) }).then(d => [k, d])
)).then(entries => {
try {
const entries = await Promise.all([...keys].map(k =>
api.get('/dashboard', { ...scopeParams, ...(k === 'live' ? {} : { asOf: k }) }).then(d => [k, d])
));
setDashDataAsOf(prev => ({ ...prev, ...Object.fromEntries(entries) }));
}).catch(e => console.error('dashDataAsOf load error (Plateformes):', e));
}, [selectedYear, activeView, activeId]); // eslint-disable-line
} catch (e) { console.error('dashDataAsOf load error (Plateformes):', e); }
};
useEffect(() => {
loadDashDataAsOf();
// eslint-disable-next-line
}, [selectedYear, activeView, activeId]);
/* ── Section "Mois en cours" (DrillCellPanel) — saisie/édition de remboursements ── */
const [drillRefreshKey, setDrillRefreshKey] = useState(0);
@@ -550,7 +559,7 @@ export default function Plateformes() {
if (rembEditingId) await api.put(`/remboursements/${rembEditingId}`, payload);
else await api.post('/remboursements', payload);
closeRembModal();
await load();
await Promise.all([load(), loadDashDataAsOf()]);
} catch (e) { setRembErr(e.message); }
};
@@ -558,7 +567,7 @@ export default function Plateformes() {
try {
await api.del(`/remboursements/${rembEditingId}`);
closeRembModal();
await load();
await Promise.all([load(), loadDashDataAsOf()]);
} catch (e) { setRembErr(e.message); }
};
@@ -1289,13 +1298,13 @@ export default function Plateformes() {
};
if (mvEditingId) {
await api.put(`/depots-retraits/${mvEditingId}`, payload);
mvCloseEdit(); await load();
mvCloseEdit(); await Promise.all([load(), loadDashDataAsOf()]);
return;
}
// Pas de création depuis cet onglet — le bouton global "+ Nouveau dépôt/retrait"
// (topbar) couvre déjà ce besoin et redirige vers /depots-retraits.
await api.post('/depots-retraits', payload);
mvCloseEdit(); await load();
mvCloseEdit(); await Promise.all([load(), loadDashDataAsOf()]);
} catch (e) { setMvErr(e.message); }
};
@@ -1316,7 +1325,7 @@ export default function Plateformes() {
}
}
setMvCorrModal(m => ({ ...m, open: false }));
await load();
await Promise.all([load(), loadDashDataAsOf()]);
};
const mvOpenRowMenu = (e, row) => {
@@ -1332,7 +1341,7 @@ export default function Plateformes() {
await api.del(`/depots-retraits/${rowId}`);
setMvDeleteConfirm(null);
setMvSelectedRow(null);
await load();
await Promise.all([load(), loadDashDataAsOf()]);
},
});
};
@@ -1344,7 +1353,7 @@ export default function Plateformes() {
await api.del(`/corrections/${corrId}`);
setMvDeleteConfirm(null);
setMvSelectedRow(null);
await load();
await Promise.all([load(), loadDashDataAsOf()]);
},
});
};
@@ -1356,7 +1365,7 @@ export default function Plateformes() {
onConfirm: async () => {
await api.del(`/depots-retraits/${mvEditingId}`);
setMvDeleteConfirm(null);
mvCloseEdit(); setMvSelectedRow(null); await load();
mvCloseEdit(); setMvSelectedRow(null); await Promise.all([load(), loadDashDataAsOf()]);
},
});
};
@@ -2026,7 +2035,7 @@ export default function Plateformes() {
refreshKey={drillRefreshKey}
investissements={platRows}
plateformes={plats.filter(p => filteredPlatIds.has(p.id))}
onBulkDone={load}
onBulkDone={() => Promise.all([load(), loadDashDataAsOf()])}
/>
</InteretsChartProvider>
</div>