diff --git a/src/components/OpenSourceStats.tsx b/src/components/OpenSourceStats.tsx index 82f08c78f..6dde7820a 100644 --- a/src/components/OpenSourceStats.tsx +++ b/src/components/OpenSourceStats.tsx @@ -61,18 +61,20 @@ const NpmDownloadCounter = ({ return } +export function ossStatsQuery({ library }: { library?: Library } = {}) { + return convexQuery(api.stats.getStats, { + library: library + ? { + id: library.id, + repo: library.repo, + frameworks: library.frameworks, + } + : undefined, + }) +} + export function _OssStats({ library }: { library?: Library }) { - const { data: stats } = useSuspenseQuery( - convexQuery(api.stats.getStats, { - library: library - ? { - id: library.id, - repo: library.repo, - frameworks: library.frameworks, - } - : undefined, - }) - ) + const { data: stats } = useSuspenseQuery(ossStatsQuery({ library })) return (
diff --git a/src/routes/_libraries/config.$version.index.tsx b/src/routes/_libraries/config.$version.index.tsx index ac88f40b5..120b1170f 100644 --- a/src/routes/_libraries/config.$version.index.tsx +++ b/src/routes/_libraries/config.$version.index.tsx @@ -11,10 +11,15 @@ import { seo } from '~/utils/seo' import LandingPageGad from '~/components/LandingPageGad' import { PartnershipCallout } from '~/components/PartnershipCallout' import { PartnersSection } from '~/components/PartnersSection' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const library = getLibrary('config') export const Route = createFileRoute({ component: FormVersionIndex, + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, head: () => ({ meta: seo({ title: configProject.name, @@ -27,7 +32,6 @@ const librariesRouteApi = getRouteApi('/_libraries') export default function FormVersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() - const library = getLibrary('config') return ( <> diff --git a/src/routes/_libraries/db.$version.index.tsx b/src/routes/_libraries/db.$version.index.tsx index 2c467d06f..b8e91ce1c 100644 --- a/src/routes/_libraries/db.$version.index.tsx +++ b/src/routes/_libraries/db.$version.index.tsx @@ -10,7 +10,10 @@ import { getLibrary } from '~/libraries' import { LibraryFeatureHighlights } from '~/components/LibraryFeatureHighlights' import LandingPageGad from '~/components/LandingPageGad' import { PartnershipCallout } from '~/components/PartnershipCallout' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const library = getLibrary('db') +const librariesRouteApi = getRouteApi('/_libraries') export const Route = createFileRoute({ component: DBVersionIndex, @@ -20,11 +23,11 @@ export const Route = createFileRoute({ description: dbProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') -const library = getLibrary('db') - export default function DBVersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() diff --git a/src/routes/_libraries/devtools.$version.index.tsx b/src/routes/_libraries/devtools.$version.index.tsx index cd08c5ed9..80352fa95 100644 --- a/src/routes/_libraries/devtools.$version.index.tsx +++ b/src/routes/_libraries/devtools.$version.index.tsx @@ -11,7 +11,10 @@ import { seo } from '~/utils/seo' import LandingPageGad from '~/components/LandingPageGad' import { PartnershipCallout } from '~/components/PartnershipCallout' import { PartnersSection } from '~/components/PartnersSection' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('devtools') export const Route = createFileRoute({ component: DevtoolsVersionIndex, @@ -21,10 +24,11 @@ export const Route = createFileRoute({ description: devtoolsProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') - export default function DevtoolsVersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const library = getLibrary('devtools') diff --git a/src/routes/_libraries/form.$version.index.tsx b/src/routes/_libraries/form.$version.index.tsx index cc21f3818..7aa04703f 100644 --- a/src/routes/_libraries/form.$version.index.tsx +++ b/src/routes/_libraries/form.$version.index.tsx @@ -15,7 +15,10 @@ import { StackBlitzEmbed } from '~/components/StackBlitzEmbed' import LandingPageGad from '~/components/LandingPageGad' import { PartnershipCallout } from '~/components/PartnershipCallout' import { PartnersSection } from '~/components/PartnersSection' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('form') export const Route = createFileRoute({ component: FormVersionIndex, @@ -25,12 +28,11 @@ export const Route = createFileRoute({ description: formProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') - -const library = getLibrary('form') - export default function FormVersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const { version } = Route.useParams() @@ -53,7 +55,7 @@ export default function FormVersionIndex() { className: 'bg-yellow-400 text-black', }} /> - +
diff --git a/src/routes/_libraries/index.tsx b/src/routes/_libraries/index.tsx index 588cd26d5..79f672fa6 100644 --- a/src/routes/_libraries/index.tsx +++ b/src/routes/_libraries/index.tsx @@ -42,18 +42,7 @@ const courses = [ export const Route = createFileRoute({ loader: async ({ context: { queryClient } }) => { - const githubQuery = queryClient.ensureQueryData( - convexQuery(api.stats.getGithubOwner, { - owner: 'tanstack', - }) - ) - const npmQuery = queryClient.ensureQueryData( - convexQuery(api.stats.getNpmOrg, { - name: 'tanstack', - }) - ) - - await Promise.all([githubQuery, npmQuery]) + await queryClient.ensureQueryData(convexQuery(api.stats.getStats, {})) return { randomNumber: Math.random(), diff --git a/src/routes/_libraries/pacer.$version.index.tsx b/src/routes/_libraries/pacer.$version.index.tsx index 90a9f1755..8fa30232a 100644 --- a/src/routes/_libraries/pacer.$version.index.tsx +++ b/src/routes/_libraries/pacer.$version.index.tsx @@ -11,7 +11,10 @@ import { getLibrary } from '~/libraries' import { LibraryFeatureHighlights } from '~/components/LibraryFeatureHighlights' import LandingPageGad from '~/components/LandingPageGad' import { PartnershipCallout } from '~/components/PartnershipCallout' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('pacer') export const Route = createFileRoute({ component: PacerVersionIndex, @@ -21,11 +24,11 @@ export const Route = createFileRoute({ description: pacerProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') -const library = getLibrary('pacer') - export default function PacerVersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const { version } = Route.useParams() @@ -49,7 +52,7 @@ export default function PacerVersionIndex() {
- + diff --git a/src/routes/_libraries/query.$version.index.tsx b/src/routes/_libraries/query.$version.index.tsx index f28fbd81d..4617467ec 100644 --- a/src/routes/_libraries/query.$version.index.tsx +++ b/src/routes/_libraries/query.$version.index.tsx @@ -19,7 +19,10 @@ import { LibraryFeatureHighlights } from '~/components/LibraryFeatureHighlights' import { partners } from '~/utils/partners' import LandingPageGad from '~/components/LandingPageGad' import { PartnershipCallout } from '~/components/PartnershipCallout' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('query') export const Route = createFileRoute({ component: VersionIndex, @@ -29,12 +32,11 @@ export const Route = createFileRoute({ description: queryProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') - -const library = getLibrary('query') - export default function VersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const { version } = Route.useParams() diff --git a/src/routes/_libraries/ranger.$version.index.tsx b/src/routes/_libraries/ranger.$version.index.tsx index a08800864..7f39af023 100644 --- a/src/routes/_libraries/ranger.$version.index.tsx +++ b/src/routes/_libraries/ranger.$version.index.tsx @@ -11,7 +11,10 @@ import { seo } from '~/utils/seo' import { LibraryFeatureHighlights } from '~/components/LibraryFeatureHighlights' import LandingPageGad from '~/components/LandingPageGad' import { PartnersSection } from '~/components/PartnersSection' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('ranger') export const Route = createFileRoute({ component: VersionIndex, @@ -21,11 +24,11 @@ export const Route = createFileRoute({ description: rangerProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') -const library = getLibrary('ranger') - export default function VersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const { version } = Route.useParams() diff --git a/src/routes/_libraries/router.$version.index.tsx b/src/routes/_libraries/router.$version.index.tsx index 11c5045b7..24525755c 100644 --- a/src/routes/_libraries/router.$version.index.tsx +++ b/src/routes/_libraries/router.$version.index.tsx @@ -12,7 +12,10 @@ import { Framework, getBranch, getLibrary } from '~/libraries' import { seo } from '~/utils/seo' import { LibraryFeatureHighlights } from '~/components/LibraryFeatureHighlights' import LandingPageGad from '~/components/LandingPageGad' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('router') export const Route = createFileRoute({ component: RouterVersionIndex, @@ -22,12 +25,11 @@ export const Route = createFileRoute({ description: routerProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') - -const library = getLibrary('router') - function RouterVersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const { version } = Route.useParams() diff --git a/src/routes/_libraries/start.$version.index.tsx b/src/routes/_libraries/start.$version.index.tsx index 2c4bd80d3..86e76a4a6 100644 --- a/src/routes/_libraries/start.$version.index.tsx +++ b/src/routes/_libraries/start.$version.index.tsx @@ -14,9 +14,12 @@ import { getLibrary } from '~/libraries' import { LibraryFeatureHighlights } from '~/components/LibraryFeatureHighlights' import LandingPageGad from '~/components/LandingPageGad' import { PartnersSection } from '~/components/PartnersSection' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' import { TbBrandX } from 'react-icons/tb' +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('start') + export const Route = createFileRoute({ component: VersionIndex, head: () => ({ @@ -25,12 +28,11 @@ export const Route = createFileRoute({ description: startProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') - -const library = getLibrary('start') - export default function VersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const [isDark, setIsDark] = React.useState(true) diff --git a/src/routes/_libraries/store.$version.index.tsx b/src/routes/_libraries/store.$version.index.tsx index 4fcf14aef..d4d455cf3 100644 --- a/src/routes/_libraries/store.$version.index.tsx +++ b/src/routes/_libraries/store.$version.index.tsx @@ -10,7 +10,10 @@ import { LibraryFeatureHighlights } from '~/components/LibraryFeatureHighlights' import LandingPageGad from '~/components/LandingPageGad' import { PartnershipCallout } from '~/components/PartnershipCallout' import { PartnersSection } from '~/components/PartnersSection' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('store') export const Route = createFileRoute({ component: StoreVersionIndex, @@ -20,11 +23,11 @@ export const Route = createFileRoute({ description: storeProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') -const library = getLibrary('store') - export default function StoreVersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() diff --git a/src/routes/_libraries/table.$version.index.tsx b/src/routes/_libraries/table.$version.index.tsx index 0864fe9ff..74788c116 100644 --- a/src/routes/_libraries/table.$version.index.tsx +++ b/src/routes/_libraries/table.$version.index.tsx @@ -15,7 +15,10 @@ import { getExampleStartingPath } from '~/utils/sandbox' import { LibraryFeatureHighlights } from '~/components/LibraryFeatureHighlights' import LandingPageGad from '~/components/LandingPageGad' import { PartnershipCallout } from '~/components/PartnershipCallout' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('table') export const Route = createFileRoute({ component: TableVersionIndex, @@ -25,12 +28,11 @@ export const Route = createFileRoute({ description: tableProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') - -const library = getLibrary('table') - export default function TableVersionIndex() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const { version } = Route.useParams() diff --git a/src/routes/_libraries/virtual.$version.index.tsx b/src/routes/_libraries/virtual.$version.index.tsx index b751d0d74..2c8bbfea5 100644 --- a/src/routes/_libraries/virtual.$version.index.tsx +++ b/src/routes/_libraries/virtual.$version.index.tsx @@ -14,7 +14,10 @@ import { Framework, getBranch } from '~/libraries' import { seo } from '~/utils/seo' import LandingPageGad from '~/components/LandingPageGad' import { PartnersSection } from '~/components/PartnersSection' -import OpenSourceStats from '~/components/OpenSourceStats' +import OpenSourceStats, { ossStatsQuery } from '~/components/OpenSourceStats' + +const librariesRouteApi = getRouteApi('/_libraries') +const library = getLibrary('virtual') export const Route = createFileRoute({ component: RouteComp, @@ -24,12 +27,11 @@ export const Route = createFileRoute({ description: virtualProject.description, }), }), + loader: async ({ context: { queryClient } }) => { + await queryClient.ensureQueryData(ossStatsQuery({ library })) + }, }) -const librariesRouteApi = getRouteApi('/_libraries') - -const library = getLibrary('virtual') - export default function RouteComp() { const { sponsorsPromise } = librariesRouteApi.useLoaderData() const { version } = Route.useParams()