mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-08-17 12:42:15 +01:00
patch new time entries into existing store when stores are refreshed on focus
This commit is contained in:
@@ -9,7 +9,6 @@ import { canViewClients, canViewMembers } from '@/utils/permissions';
|
|||||||
|
|
||||||
export function initializeStores() {
|
export function initializeStores() {
|
||||||
refreshStores();
|
refreshStores();
|
||||||
useTimeEntriesStore().fetchTimeEntries();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function refreshStores() {
|
export function refreshStores() {
|
||||||
@@ -17,6 +16,7 @@ export function refreshStores() {
|
|||||||
useTasksStore().fetchTasks();
|
useTasksStore().fetchTasks();
|
||||||
useTagsStore().fetchTags();
|
useTagsStore().fetchTags();
|
||||||
useCurrentTimeEntryStore().fetchCurrentTimeEntry();
|
useCurrentTimeEntryStore().fetchCurrentTimeEntry();
|
||||||
|
useTimeEntriesStore().patchTimeEntries();
|
||||||
if (canViewMembers()) {
|
if (canViewMembers()) {
|
||||||
useMembersStore().fetchMembers();
|
useMembersStore().fetchMembers();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,39 @@ export const useTimeEntriesStore = defineStore('timeEntries', () => {
|
|||||||
const allTimeEntriesLoaded = ref(false);
|
const allTimeEntriesLoaded = ref(false);
|
||||||
const { handleApiRequestNotifications } = useNotificationsStore();
|
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(
|
async function fetchTimeEntries(
|
||||||
queryParams: TimeEntriesQueryParams = {
|
queryParams: TimeEntriesQueryParams = {
|
||||||
only_full_dates: 'true',
|
only_full_dates: 'true',
|
||||||
@@ -200,5 +233,6 @@ export const useTimeEntriesStore = defineStore('timeEntries', () => {
|
|||||||
allTimeEntriesLoaded,
|
allTimeEntriesLoaded,
|
||||||
updateTimeEntries,
|
updateTimeEntries,
|
||||||
deleteTimeEntries,
|
deleteTimeEntries,
|
||||||
|
patchTimeEntries,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user