mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
81 lines
2.1 KiB
TypeScript
81 lines
2.1 KiB
TypeScript
import { fileStorageService } from "@/features/local/utils/fileStorageService";
|
|
import { trpcAppRouter } from "@/services/serverFunctions/appRouter";
|
|
import { createTrpcContext } from "@/services/serverFunctions/context";
|
|
import { dehydrate, HydrationBoundary } from "@tanstack/react-query";
|
|
import { createServerSideHelpers } from "@trpc/react-query/server";
|
|
import superjson from "superjson";
|
|
|
|
export default async function DataHydration({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
console.log("starting hydration");
|
|
const trpcHelper = createServerSideHelpers({
|
|
router: trpcAppRouter,
|
|
ctx: createTrpcContext(),
|
|
transformer: superjson,
|
|
queryClientConfig: {
|
|
defaultOptions: {
|
|
queries: {
|
|
staleTime: Infinity,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
const allSettings = await fileStorageService.settings.getAllCoursesSettings();
|
|
|
|
await Promise.all(
|
|
allSettings.map(async (settings) => {
|
|
const courseName = settings.name;
|
|
const moduleNames = await trpcHelper.module.getModuleNames.fetch({
|
|
courseName,
|
|
});
|
|
await Promise.all([
|
|
// assignments
|
|
...moduleNames.map(
|
|
async (moduleName) =>
|
|
await trpcHelper.assignment.getAllAssignments.prefetch({
|
|
courseName,
|
|
moduleName,
|
|
})
|
|
),
|
|
// quizzes
|
|
...moduleNames.map(
|
|
async (moduleName) =>
|
|
await trpcHelper.quiz.getAllQuizzes.prefetch({
|
|
courseName,
|
|
moduleName,
|
|
})
|
|
),
|
|
// pages
|
|
...moduleNames.map(
|
|
async (moduleName) =>
|
|
await trpcHelper.page.getAllPages.prefetch({
|
|
courseName,
|
|
moduleName,
|
|
})
|
|
),
|
|
]);
|
|
})
|
|
);
|
|
|
|
// lectures
|
|
await Promise.all(
|
|
allSettings.map(
|
|
async (settings) =>
|
|
await trpcHelper.lectures.getLectures.fetch({
|
|
courseName: settings.name,
|
|
})
|
|
)
|
|
);
|
|
|
|
const dehydratedState = dehydrate(trpcHelper.queryClient);
|
|
console.log("ran hydration");
|
|
|
|
return (
|
|
<HydrationBoundary state={dehydratedState}>{children}</HydrationBoundary>
|
|
);
|
|
}
|