patch new time entries into existing store when stores are refreshed on focus

This commit is contained in:
Gregor Vostrak
2024-11-12 17:38:04 +01:00
parent 4b0cb2e282
commit df0f3b2680
2 changed files with 35 additions and 1 deletions

View File

@@ -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();
}

View File

@@ -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,
};
});