diff --git a/resources/js/utils/init.ts b/resources/js/utils/init.ts index 9497686a..7eb4d6e4 100644 --- a/resources/js/utils/init.ts +++ b/resources/js/utils/init.ts @@ -9,7 +9,6 @@ import { canViewClients, canViewMembers } from '@/utils/permissions'; export function initializeStores() { refreshStores(); - useTimeEntriesStore().fetchTimeEntries(); } export function refreshStores() { @@ -17,6 +16,7 @@ export function refreshStores() { useTasksStore().fetchTasks(); useTagsStore().fetchTags(); useCurrentTimeEntryStore().fetchCurrentTimeEntry(); + useTimeEntriesStore().patchTimeEntries(); if (canViewMembers()) { useMembersStore().fetchMembers(); } diff --git a/resources/js/utils/useTimeEntries.ts b/resources/js/utils/useTimeEntries.ts index 5ca6a7c9..f8ee7597 100644 --- a/resources/js/utils/useTimeEntries.ts +++ b/resources/js/utils/useTimeEntries.ts @@ -21,6 +21,39 @@ export const useTimeEntriesStore = defineStore('timeEntries', () => { const allTimeEntriesLoaded = ref(false); const { handleApiRequestNotifications } = useNotificationsStore(); + async function patchTimeEntries( + queryParams: TimeEntriesQueryParams = { + only_full_dates: 'true', + member_id: getCurrentMembershipId(), + } + ) { + const organizationId = getCurrentOrganizationId(); + + if (organizationId) { + const timeEntriesResponse = await handleApiRequestNotifications( + () => + api.getTimeEntries({ + params: { + organization: organizationId, + }, + queries: queryParams, + }), + undefined, + 'Failed to fetch time entries' + ); + if (timeEntriesResponse?.data) { + // insert missing time entries + const missingTimeEntries = timeEntriesResponse.data.filter( + (entry) => !timeEntries.value.find((e) => e.id === entry.id) + ); + timeEntries.value = [ + ...missingTimeEntries, + ...timeEntries.value, + ]; + } + } + } + async function fetchTimeEntries( queryParams: TimeEntriesQueryParams = { only_full_dates: 'true', @@ -200,5 +233,6 @@ export const useTimeEntriesStore = defineStore('timeEntries', () => { allTimeEntriesLoaded, updateTimeEntries, deleteTimeEntries, + patchTimeEntries, }; });