diff --git a/nextjs/src/app/course/[courseName]/calendar/Day.tsx b/nextjs/src/app/course/[courseName]/calendar/Day.tsx index 7e9b618..c8d87fc 100644 --- a/nextjs/src/app/course/[courseName]/calendar/Day.tsx +++ b/nextjs/src/app/course/[courseName]/calendar/Day.tsx @@ -8,6 +8,7 @@ export default function Day({ day, month }: { day: Date; month: number }) { const { data: moduleNames } = useModuleNamesQuery(courseName); const isInSameMonth = day.getMonth() + 1 != month; const backgroundClass = isInSameMonth ? "" : "bg-slate-900"; + console.log("render"); return ( <> diff --git a/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx b/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx index 58f7b40..a48b16b 100644 --- a/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx +++ b/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx @@ -1,5 +1,5 @@ "use client"; -import { ReactNode, useState } from "react"; +import { ReactNode, useCallback, useState } from "react"; import { CourseContext, DraggableItem } from "./courseContext"; import { LocalQuiz } from "@/models/local/quiz/localQuiz"; import { dateToMarkdownString } from "@/models/local/timeUtils"; @@ -17,38 +17,26 @@ export default function CourseContextProvider({ DraggableItem | undefined >(); - const updateQuiz = (day: Date) => { - if (!itemBeingDragged) return; + const itemDrop = useCallback( + (day: Date | undefined) => { + if (itemBeingDragged && day) { + if (itemBeingDragged.type === "quiz") { + const quiz: LocalQuiz = { + ...(itemBeingDragged.item as LocalQuiz), + dueAt: dateToMarkdownString(day), + }; + updateQuizMutation.mutate({ + quiz: quiz, + quizName: quiz.name, + moduleName: itemBeingDragged.sourceModuleName, + }); + } + } + setItemBeingDragged(undefined); + }, + [itemBeingDragged, updateQuizMutation] + ); - const updatedQuiz: LocalQuiz = { - ...(itemBeingDragged.item as LocalQuiz), - dueAt: dateToMarkdownString(day), - }; - - // const localModule = course.modules.find((m) => - // m.quizzes.map((q) => q.name).includes(updatedQuiz.name) - // ); - // if (!localModule) - // console.log("could not find module for quiz ", updatedQuiz); - - // const updatedCourse: LocalCourse = { - // ...course, - // modules: course.modules.map((m) => - // m.name !== localModule?.name - // ? m - // : { - // ...m, - // quizzes: m.quizzes.map((q) => - // q.name === updatedQuiz.name ? updatedQuiz : q - // ), - // } - // ), - // }; - // updateCourseMutation.mutate({ - // updatedCourse, - // previousCourse: course, - // }); - }; return ( { setItemBeingDragged(undefined); }, - itemDrop: (day) => { - if (itemBeingDragged && day) { - if (itemBeingDragged.type === "quiz") { - const quiz: LocalQuiz = { - ...(itemBeingDragged.item as LocalQuiz), - dueAt: dateToMarkdownString(day), - }; - updateQuizMutation.mutate({ - quiz: quiz, - quizName: quiz.name, - moduleName: itemBeingDragged.sourceModuleName, - }); - } - } - setItemBeingDragged(undefined); - }, + itemDrop, }} > {children} diff --git a/nextjs/src/app/layout.tsx b/nextjs/src/app/layout.tsx index 6a197d7..d7a5ec5 100644 --- a/nextjs/src/app/layout.tsx +++ b/nextjs/src/app/layout.tsx @@ -1,8 +1,5 @@ import type { Metadata } from "next"; import "./globals.css"; -import { dehydrate } from "@tanstack/react-query"; -import { hydrateCourses } from "@/hooks/hookHydration"; -import { createQueryClientForServer } from "@/services/utils/queryClientServer"; import Providers from "./providers"; export const metadata: Metadata = { @@ -16,9 +13,9 @@ export default function RootLayout({ }>) { return ( - - {children} - + + {children} + ); }