diff --git a/webui2/src/routes/$repo/commit/$hash.tsx b/webui2/src/routes/$repo/commit/$hash.tsx index 4e44eb748a9caa8f31476835c63dffb2b51d9111..39015ca8e7c80efc84b13bfffd2c3fa832e44b91 100644 --- a/webui2/src/routes/$repo/commit/$hash.tsx +++ b/webui2/src/routes/$repo/commit/$hash.tsx @@ -57,11 +57,13 @@ interface CommitQueryData { export const Route = createFileRoute("/$repo/commit/$hash")({ component: RouteComponent, pendingComponent: CommitPageSkeleton, - loader: ({ params: { repo, hash } }) => ({ - commitRef: preloadQuery(COMMIT_QUERY, { + loader: async ({ params: { repo, hash } }) => { + const commitRef = preloadQuery(COMMIT_QUERY, { variables: { repo: repo === "_" ? null : repo, hash }, - }), - }), + }); + await preloadQuery.toPromise(commitRef); + return { commitRef }; + }, }); function RouteComponent() { diff --git a/webui2/src/routes/$repo/index.tsx b/webui2/src/routes/$repo/index.tsx index 05dd8d820d5c15c516fd0ec9ef9ddd4cc1639602..e0e2afac57e35306b21894fa34a039e26a3880e5 100644 --- a/webui2/src/routes/$repo/index.tsx +++ b/webui2/src/routes/$repo/index.tsx @@ -126,11 +126,13 @@ export const Route = createFileRoute("/$repo/")({ component: RouteComponent, pendingComponent: CodePageSkeleton, validateSearch: (search) => v.parse(codePageSearchSchema, search), - loader: ({ params: { repo } }) => ({ - refsRef: preloadQuery(REFS_QUERY, { + loader: async ({ params: { repo } }) => { + const refsRef = preloadQuery(REFS_QUERY, { variables: { repo: repo === "_" ? null : repo }, - }), - }), + }); + await preloadQuery.toPromise(refsRef); + return { refsRef }; + }, }); function RouteComponent() { diff --git a/webui2/src/routes/$repo/issues/$id.tsx b/webui2/src/routes/$repo/issues/$id.tsx index ae7d7aeda9e25e48d3b1486d7065062b8f97f973..2638a1f9b24c27a3321cd3321d18de1bce6e12d1 100644 --- a/webui2/src/routes/$repo/issues/$id.tsx +++ b/webui2/src/routes/$repo/issues/$id.tsx @@ -23,14 +23,17 @@ import { useRepo } from "@/lib/repo"; export const Route = createFileRoute("/$repo/issues/$id")({ component: RouteComponent, pendingComponent: BugDetailSkeleton, - loader: ({ params: { repo, id } }) => ({ - bugDetailRef: preloadQuery(BugDetailDocument, { - variables: { ref: repo === "_" ? null : repo, prefix: id }, - }), - labelsRef: preloadQuery(ValidLabelsDocument, { - variables: { ref: repo === "_" ? null : repo }, - }), - }), + loader: async ({ params: { repo, id } }) => { + const ref = repo === "_" ? null : repo; + const bugDetailRef = preloadQuery(BugDetailDocument, { + variables: { ref, prefix: id }, + }); + const labelsRef = preloadQuery(ValidLabelsDocument, { + variables: { ref }, + }); + await Promise.all([preloadQuery.toPromise(bugDetailRef), preloadQuery.toPromise(labelsRef)]); + return { bugDetailRef, labelsRef }; + }, }); // Issue detail page (/:repo/issues/:id). Shows title, status, timeline of diff --git a/webui2/src/routes/$repo/issues/index.tsx b/webui2/src/routes/$repo/issues/index.tsx index 50602df752a0d4ebb3bb967d8e0fff0e08525580..d8ac588701159893d2cabbaf622b57df29503e9e 100644 --- a/webui2/src/routes/$repo/issues/index.tsx +++ b/webui2/src/routes/$repo/issues/index.tsx @@ -33,28 +33,32 @@ export const Route = createFileRoute("/$repo/issues/")({ pendingComponent: BugListSkeleton, validateSearch: (search) => v.parse(issuesSearchSchema, search), loaderDeps: ({ search: { q, after } }) => ({ q, after }), - loader: ({ params: { repo }, deps: { q, after } }) => { + loader: async ({ params: { repo }, deps: { q, after } }) => { const ref = repo === "_" ? null : repo; const parsed = parseQueryString(q); const baseQuery = buildBaseQuery(parsed.labels, parsed.author, parsed.freeText); - return { - bugListRef: preloadQuery(BugListDocument, { - variables: { - ref, - openQuery: `status:open ${baseQuery}`.trim(), - closedQuery: `status:closed ${baseQuery}`.trim(), - listQuery: q, - first: PAGE_SIZE, - after: after || undefined, - }, - }), - labelsRef: preloadQuery(ValidLabelsDocument, { - variables: { ref }, - }), - identitiesRef: preloadQuery(AllIdentitiesDocument, { - variables: { ref }, - }), - }; + const bugListRef = preloadQuery(BugListDocument, { + variables: { + ref, + openQuery: `status:open ${baseQuery}`.trim(), + closedQuery: `status:closed ${baseQuery}`.trim(), + listQuery: q, + first: PAGE_SIZE, + after: after || undefined, + }, + }); + const labelsRef = preloadQuery(ValidLabelsDocument, { + variables: { ref }, + }); + const identitiesRef = preloadQuery(AllIdentitiesDocument, { + variables: { ref }, + }); + await Promise.all([ + preloadQuery.toPromise(bugListRef), + preloadQuery.toPromise(labelsRef), + preloadQuery.toPromise(identitiesRef), + ]); + return { bugListRef, labelsRef, identitiesRef }; }, }); diff --git a/webui2/src/routes/index.tsx b/webui2/src/routes/index.tsx index 6d11dad28a78dff46336a388732fc278c877f7de..80c2a966c85bf024c38c9cb2e5dfbbe391073df4 100644 --- a/webui2/src/routes/index.tsx +++ b/webui2/src/routes/index.tsx @@ -11,9 +11,11 @@ import { preloadQuery } from "@/lib/apollo"; export const Route = createFileRoute("/")({ component: RouteComponent, - loader: () => ({ - repositoriesRef: preloadQuery(RepositoriesDocument), - }), + loader: async () => { + const repositoriesRef = preloadQuery(RepositoriesDocument); + await preloadQuery.toPromise(repositoriesRef); + return { repositoriesRef }; + }, }); function repoSlug(name: string | null | undefined): string {