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(