load time entries above pagination limit for calendar, fixes #995

This commit is contained in:
Gregor Vostrak
2026-01-14 19:22:17 +01:00
parent 900ee29a6f
commit b2a04c8de5

View File

@@ -1,5 +1,5 @@
import { useQuery } from '@tanstack/vue-query'; import { useQuery } from '@tanstack/vue-query';
import { api, type TimeEntryResponse } from '@/packages/api/src'; import { api, type TimeEntryResponse, type TimeEntry } from '@/packages/api/src';
import { getCurrentMembershipId, getCurrentOrganizationId } from '@/utils/useUser'; import { getCurrentMembershipId, getCurrentOrganizationId } from '@/utils/useUser';
import { computed, type Ref } from 'vue'; import { computed, type Ref } from 'vue';
import { getDayJsInstance } from '@/packages/ui/src/utils/time'; import { getDayJsInstance } from '@/packages/ui/src/utils/time';
@@ -49,8 +49,11 @@ export function useTimeEntriesCalendarQuery(
]), ]),
enabled: enableCalendarQuery, enabled: enableCalendarQuery,
placeholderData: (previousData) => previousData, placeholderData: (previousData) => previousData,
queryFn: () => queryFn: async () => {
api.getTimeEntries({ const allEntries: TimeEntry[] = [];
while (true) {
const response = await api.getTimeEntries({
params: { params: {
organization: getCurrentOrganizationId() || '', organization: getCurrentOrganizationId() || '',
}, },
@@ -58,8 +61,21 @@ export function useTimeEntriesCalendarQuery(
start: expandedDateRange.value.start!, start: expandedDateRange.value.start!,
end: expandedDateRange.value.end!, end: expandedDateRange.value.end!,
member_id: getCurrentMembershipId(), member_id: getCurrentMembershipId(),
offset: allEntries.length || undefined,
},
});
if (response.data.length === 0) {
return { data: allEntries, meta: response.meta };
}
allEntries.push(...response.data);
if (allEntries.length >= response.meta.total) {
return { data: allEntries, meta: response.meta };
}
}
}, },
}),
staleTime: 1000 * 30, // 30 seconds staleTime: 1000 * 30, // 30 seconds
}); });
} }