From bfc33b48c187b7ca0d0f78680e812cb43e7de3e0 Mon Sep 17 00:00:00 2001 From: Gregor Vostrak Date: Tue, 10 Feb 2026 17:21:18 +0100 Subject: [PATCH] make sure that 404 current time entry requests do not override local state while preparing new time entry --- resources/js/utils/useCurrentTimeEntry.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/resources/js/utils/useCurrentTimeEntry.ts b/resources/js/utils/useCurrentTimeEntry.ts index be732751..f8cc57f2 100644 --- a/resources/js/utils/useCurrentTimeEntry.ts +++ b/resources/js/utils/useCurrentTimeEntry.ts @@ -1,5 +1,5 @@ import { defineStore } from 'pinia'; -import { computed, reactive, ref } from 'vue'; +import { computed, ref } from 'vue'; import { api } from '@/packages/api/src'; import type { TimeEntry } from '@/packages/api/src'; import dayjs, { Dayjs } from 'dayjs'; @@ -30,7 +30,7 @@ const emptyTimeEntry = { } as TimeEntry; export const useCurrentTimeEntryStore = defineStore('currentTimeEntry', () => { - const currentTimeEntry = ref(reactive(emptyTimeEntry)); + const currentTimeEntry = ref({ ...emptyTimeEntry }); const { handleApiRequestNotifications } = useNotificationsStore(); const queryClient = useQueryClient(); @@ -74,11 +74,23 @@ export const useCurrentTimeEntryStore = defineStore('currentTimeEntry', () => { startLiveTimer(); } } else { - currentTimeEntry.value = { ...emptyTimeEntry }; + // No active time entry on server + // Only reset if we had a previously started timer (has an ID) + // Don't reset if user is preparing a new time entry (no ID yet) + if (currentTimeEntry.value.id !== '') { + currentTimeEntry.value = { ...emptyTimeEntry }; + stopLiveTimer(); + } } } } catch { - currentTimeEntry.value = { ...emptyTimeEntry }; + // API error (e.g., 404 when no active time entry) + // Only reset if we had a previously started timer (has an ID) + // Don't reset if user is preparing a new time entry (no ID yet) + if (currentTimeEntry.value.id !== '') { + currentTimeEntry.value = { ...emptyTimeEntry }; + stopLiveTimer(); + } } } else { throw new Error(