diff --git a/frontend/src/lib/api/projects.ts b/frontend/src/lib/api/projects.ts index b7dc787..6af91c8 100644 --- a/frontend/src/lib/api/projects.ts +++ b/frontend/src/lib/api/projects.ts @@ -7,6 +7,27 @@ export function listProjects(limit = 20, offset = 0, search?: string): Promise

>('GET', `/projects?${params}`) } +const LIST_ALL_PROJECTS_MAX_PAGES = 100 + +export async function listAllProjects(search?: string): Promise { + const pageSize = 100 + const items: Project[] = [] + let offset = 0 + let total = Number.POSITIVE_INFINITY + let pagesFetched = 0 + + while (offset < total && pagesFetched < LIST_ALL_PROJECTS_MAX_PAGES) { + const page = await listProjects(pageSize, offset, search) + items.push(...page.items) + total = page.total + offset += page.items.length + pagesFetched++ + if (page.items.length === 0) break + } + + return items +} + export function getProject(slug: string): Promise { return apiRequest('GET', `/projects/${encodeURIComponent(slug)}`) } diff --git a/frontend/src/lib/pages/task-edit.svelte b/frontend/src/lib/pages/task-edit.svelte index 0eb0fa2..6132ec5 100644 --- a/frontend/src/lib/pages/task-edit.svelte +++ b/frontend/src/lib/pages/task-edit.svelte @@ -1,6 +1,6 @@