fix(admin): drawer stays in sync with grid after mutations

This commit is contained in:
Hermes
2026-08-23 00:42:40 +00:00
parent 023f0394b4
commit a29dd3aec9
+21
View File
@@ -149,6 +149,27 @@ export default function AdminPage() {
loadEntries();
}, [loadEntries]);
// Keep the open drawer in sync after any mutation — grid already refreshes via
// loadEntries() -> allEntries -> gridData, but selectedDayEntries is a snapshot
// taken when the drawer opened. Without this the timeline/summary/errors stay
// frozen until you close and reopen.
useEffect(() => {
if (!sheetOpen || !selectedDayEntries) return;
const empId = manualPunchForm.employeeId;
const dateStr = selectedDayEntries.date;
const dayData = gridData[empId]?.[dateStr];
if (!dayData) return;
const prevIds = selectedDayEntries.entries.map((e) => e.id).join(',');
const nextIds = dayData.entries.map((e) => e.id).join(',');
const prevErr = selectedDayEntries.errors.join('|');
const nextErr = (dayData.errors || []).join('|');
if (prevIds !== nextIds || prevErr !== nextErr) {
setSelectedDayEntries((prev) =>
prev ? { ...prev, entries: dayData.entries, errors: dayData.errors || [] } : prev,
);
}
}, [allEntries, gridData, sheetOpen, selectedDayEntries, manualPunchForm.employeeId]);
const days = useMemo(() => {
const start = dateInputToDate(startDate);
const end = dateInputToDate(endDate);