mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
got some server hydration I think
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import Modal, { useModal } from "@/components/Modal";
|
||||
import { useLecturesByWeekQuery } from "@/hooks/localCourse/lectureHooks";
|
||||
import { getLectureUrl } from "@/services/urlUtils";
|
||||
import Link from "next/link";
|
||||
import { useCourseContext } from "../../context/courseContext";
|
||||
@@ -7,10 +6,11 @@ import NewItemForm from "../../modules/NewItemForm";
|
||||
import { DraggableItem } from "../../context/drag/draggingContext";
|
||||
import { useDragStyleContext } from "../../context/drag/dragStyleContext";
|
||||
import { getLectureForDay } from "@/models/local/lectureUtils";
|
||||
import { trpc } from "@/services/trpc/utils";
|
||||
|
||||
export function DayTitle({ day, dayAsDate }: { day: string; dayAsDate: Date }) {
|
||||
const { courseName } = useCourseContext();
|
||||
const { data: weeks } = useLecturesByWeekQuery();
|
||||
const [weeks] = trpc.lectures.getLectures.useSuspenseQuery({ courseName });
|
||||
const { setIsDragging } = useDragStyleContext();
|
||||
const todaysLecture = getLectureForDay(weeks, dayAsDate);
|
||||
const modal = useModal();
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
"use client";
|
||||
import { useUpdateAssignmentMutation } from "@/hooks/localCourse/assignmentHooks";
|
||||
import {
|
||||
useLecturesByWeekQuery,
|
||||
useLectureUpdateMutation,
|
||||
} from "@/hooks/localCourse/lectureHooks";
|
||||
import { useLectureUpdateMutation } from "@/hooks/localCourse/lectureHooks";
|
||||
import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
|
||||
import { useUpdatePageMutation } from "@/hooks/localCourse/pageHooks";
|
||||
import { LocalAssignment } from "@/models/local/assignment/localAssignment";
|
||||
@@ -20,6 +17,7 @@ import { Dispatch, SetStateAction, useCallback, DragEvent } from "react";
|
||||
import { DraggableItem } from "./draggingContext";
|
||||
import { getNewLockDate } from "./getNewLockDate";
|
||||
import { useUpdateItemMutation } from "@/hooks/localCourse/courseItemHooks";
|
||||
import { trpc } from "@/services/trpc/utils";
|
||||
|
||||
export function useItemDropOnDay({
|
||||
setIsDragging,
|
||||
@@ -35,7 +33,10 @@ export function useItemDropOnDay({
|
||||
modal: { isOpen: boolean; openModal: () => void; closeModal: () => void };
|
||||
}) {
|
||||
const { data: settings } = useLocalCourseSettingsQuery();
|
||||
const { data: weeks } = useLecturesByWeekQuery();
|
||||
// const { data: weeks } = useLecturesByWeekQuery();
|
||||
const [weeks] = trpc.lectures.getLectures.useSuspenseQuery({
|
||||
courseName: settings.name,
|
||||
});
|
||||
const updateQuizMutation = useUpdateItemMutation("Quiz");
|
||||
const updateLectureMutation = useLectureUpdateMutation();
|
||||
const updateAssignmentMutation = useUpdateAssignmentMutation();
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { fileStorageService } from "@/services/fileStorage/fileStorageService";
|
||||
import CourseContextProvider from "./context/CourseContextProvider";
|
||||
import { Suspense } from "react";
|
||||
import { getQueryClient } from "@/app/providersQueryClientUtils";
|
||||
import { dehydrate, HydrationBoundary } from "@tanstack/react-query";
|
||||
@@ -8,69 +7,35 @@ import { createServerSideHelpers } from "@trpc/react-query/server";
|
||||
import { trpcAppRouter } from "@/services/trpc/router/app";
|
||||
import { createTrpcContext } from "@/services/trpc/context";
|
||||
import superjson from "superjson";
|
||||
import CourseContextProvider from "./context/CourseContextProvider";
|
||||
|
||||
export default async function CourseLayout({
|
||||
children,
|
||||
params: { courseName },
|
||||
params,
|
||||
}: {
|
||||
children: React.ReactNode;
|
||||
params: { courseName: string };
|
||||
params: Promise<{ courseName: string }>;
|
||||
}) {
|
||||
const { courseName } = await params;
|
||||
const decodedCourseName = decodeURIComponent(courseName);
|
||||
if (courseName.includes(".js.map")) {
|
||||
console.log("cannot load course that is .js.map " + decodedCourseName);
|
||||
return <div></div>;
|
||||
}
|
||||
const settings = await fileStorageService.settings.getCourseSettings(
|
||||
decodedCourseName
|
||||
);
|
||||
const queryClient = getQueryClient();
|
||||
await hydrateCanvasCourse(settings.canvasId, queryClient);
|
||||
const dehydratedState = dehydrate(queryClient);
|
||||
const trpcHelper = createServerSideHelpers({
|
||||
router: trpcAppRouter,
|
||||
ctx: createTrpcContext(),
|
||||
transformer: superjson,
|
||||
});
|
||||
// const settings = await fileStorageService.settings.getCourseSettings(
|
||||
// decodedCourseName
|
||||
// );
|
||||
// const queryClient = getQueryClient();
|
||||
// await hydrateCanvasCourse(settings.canvasId, queryClient);
|
||||
// const dehydratedState = dehydrate(queryClient);
|
||||
|
||||
const allSettings = await fileStorageService.settings.getAllCoursesSettings();
|
||||
await Promise.all(
|
||||
allSettings.map(async (settings) => {
|
||||
const courseName = settings.name;
|
||||
const moduleNames = await fileStorageService.modules.getModuleNames(
|
||||
courseName
|
||||
);
|
||||
await Promise.all(
|
||||
moduleNames.map(async (moduleName) => {
|
||||
await trpcHelper.assignment.getAllAssignments.prefetch({
|
||||
courseName,
|
||||
moduleName,
|
||||
});
|
||||
|
||||
// await Promise.all(
|
||||
// assignments.map(
|
||||
// async (a) =>
|
||||
// await trpcHelper.assignment.getAssignment.fetch({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// assignmentName: a.name,
|
||||
// })
|
||||
// )
|
||||
// );
|
||||
})
|
||||
);
|
||||
})
|
||||
);
|
||||
const dehydratedTrpc = trpcHelper.dehydrate();
|
||||
return (
|
||||
<Suspense>
|
||||
<HydrationBoundary state={dehydratedState}>
|
||||
<HydrationBoundary state={dehydratedTrpc}>
|
||||
<CourseContextProvider localCourseName={decodedCourseName}>
|
||||
{children}
|
||||
</CourseContextProvider>
|
||||
</HydrationBoundary>
|
||||
</HydrationBoundary>
|
||||
{/* <HydrationBoundary state={dehydratedState}> */}
|
||||
<CourseContextProvider localCourseName={decodedCourseName}>
|
||||
{children}
|
||||
</CourseContextProvider>
|
||||
{/* </HydrationBoundary> */}
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
import { MonacoEditor } from "@/components/editor/MonacoEditor";
|
||||
import {
|
||||
useLecturesByWeekQuery,
|
||||
useLectureUpdateMutation,
|
||||
} from "@/hooks/localCourse/lectureHooks";
|
||||
import {
|
||||
@@ -13,9 +12,13 @@ import { useEffect, useState } from "react";
|
||||
import LecturePreview from "./LecturePreview";
|
||||
import EditLectureTitle from "./EditLectureTitle";
|
||||
import LectureButtons from "./LectureButtons";
|
||||
import { trpc } from "@/services/trpc/utils";
|
||||
import { useCourseContext } from "../../context/courseContext";
|
||||
|
||||
export default function EditLecture({ lectureDay }: { lectureDay: string }) {
|
||||
const { data: weeks } = useLecturesByWeekQuery();
|
||||
// const { data: weeks } = useLecturesByWeekQuery();
|
||||
const { courseName } = useCourseContext();
|
||||
const [weeks] = trpc.lectures.getLectures.useSuspenseQuery({ courseName });
|
||||
const updateLecture = useLectureUpdateMutation();
|
||||
|
||||
const lecture = weeks
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
"use client";
|
||||
|
||||
import { useLecturesByWeekQuery } from "@/hooks/localCourse/lectureHooks";
|
||||
import LecturePreview from "../LecturePreview";
|
||||
import { getCourseUrl, getLectureUrl } from "@/services/urlUtils";
|
||||
import { useCourseContext } from "../../../context/courseContext";
|
||||
import Link from "next/link";
|
||||
import { trpc } from "@/services/trpc/utils";
|
||||
|
||||
export default function LecturePreviewPage({
|
||||
lectureDay,
|
||||
@@ -12,7 +12,7 @@ export default function LecturePreviewPage({
|
||||
lectureDay: string;
|
||||
}) {
|
||||
const { courseName } = useCourseContext();
|
||||
const { data: weeks } = useLecturesByWeekQuery();
|
||||
const [weeks] = trpc.lectures.getLectures.useSuspenseQuery({ courseName });
|
||||
const lecture = weeks
|
||||
.flatMap(({ lectures }) => lectures.map((lecture) => lecture))
|
||||
.find((l) => l.date === lectureDay);
|
||||
|
||||
@@ -31,15 +31,15 @@ export default function ExpandableModule({
|
||||
}) {
|
||||
const { itemDropOnModule } = useDraggingContext();
|
||||
|
||||
const [assignments] = useAssignmentsQuery(moduleName);
|
||||
const { data: quizzes } = useItemsQueries(moduleName, "Quiz");
|
||||
const { data: assignments } = useAssignmentsQuery(moduleName);
|
||||
// const { data: quizzes } = useItemsQueries(moduleName, "Quiz");
|
||||
const { data: pages } = usePagesQueries(moduleName);
|
||||
const modal = useModal();
|
||||
|
||||
const moduleItems: {
|
||||
type: "assignment" | "quiz" | "page";
|
||||
item: IModuleItem;
|
||||
}[] = assignments
|
||||
}[] = (assignments ?? [])
|
||||
.map(
|
||||
(
|
||||
a
|
||||
@@ -51,7 +51,7 @@ export default function ExpandableModule({
|
||||
item: a,
|
||||
})
|
||||
)
|
||||
.concat(quizzes.map((q) => ({ type: "quiz", item: q })))
|
||||
// .concat(quizzes.map((q) => ({ type: "quiz", item: q })))
|
||||
.concat(pages.map((p) => ({ type: "page", item: p })))
|
||||
.sort(
|
||||
(a, b) =>
|
||||
|
||||
Reference in New Issue
Block a user