fix(admin): drawer stays in sync with grid after mutations
This commit is contained in:
@@ -149,6 +149,27 @@ export default function AdminPage() {
|
|||||||
loadEntries();
|
loadEntries();
|
||||||
}, [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 days = useMemo(() => {
|
||||||
const start = dateInputToDate(startDate);
|
const start = dateInputToDate(startDate);
|
||||||
const end = dateInputToDate(endDate);
|
const end = dateInputToDate(endDate);
|
||||||
|
|||||||
Reference in New Issue
Block a user