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

This commit is contained in:
Hermes
2026-08-23 00:45:24 +00:00
parent 023f0394b4
commit bc1bab1006
+21
View File
@@ -219,6 +219,27 @@ export default function AdminPage() {
return employees.filter((emp) => days.some((day) => gridData[emp.id]?.[dateKey(toUnix(day))]?.hasErrors));
}, [employees, days, gridData, showIssuesOnly]);
// 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. This patches it in place so the timeline /
// summary strip / issue list update without closing the drawer.
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 openDetailDrawer = (employee: Employee, dateStr: string) => {
const dayData = gridData[employee.id]?.[dateStr];
if (!dayData) return;