From baa69348a33887d323e569c9bec0ca42e55fffbd Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Fri, 30 Aug 2024 13:28:42 -0600 Subject: [PATCH] drag and drop quiz also updated lock time --- .../app/course/[courseName]/calendar/Day.tsx | 1 - .../context/CourseContextProvider.tsx | 21 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/nextjs/src/app/course/[courseName]/calendar/Day.tsx b/nextjs/src/app/course/[courseName]/calendar/Day.tsx index c8d87fc..7e9b618 100644 --- a/nextjs/src/app/course/[courseName]/calendar/Day.tsx +++ b/nextjs/src/app/course/[courseName]/calendar/Day.tsx @@ -8,7 +8,6 @@ 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 a48b16b..f8ab09f 100644 --- a/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx +++ b/nextjs/src/app/course/[courseName]/context/CourseContextProvider.tsx @@ -2,8 +2,12 @@ import { ReactNode, useCallback, useState } from "react"; import { CourseContext, DraggableItem } from "./courseContext"; import { LocalQuiz } from "@/models/local/quiz/localQuiz"; -import { dateToMarkdownString } from "@/models/local/timeUtils"; +import { + dateToMarkdownString, + getDateFromStringOrThrow, +} from "@/models/local/timeUtils"; import { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks"; +import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; export default function CourseContextProvider({ localCourseName, @@ -13,6 +17,7 @@ export default function CourseContextProvider({ localCourseName: string; }) { const updateQuizMutation = useUpdateQuizMutation(localCourseName); + const { data: settings } = useLocalCourseSettingsQuery(localCourseName); const [itemBeingDragged, setItemBeingDragged] = useState< DraggableItem | undefined >(); @@ -20,10 +25,20 @@ export default function CourseContextProvider({ const itemDrop = useCallback( (day: Date | undefined) => { if (itemBeingDragged && day) { + day.setHours(settings.defaultDueTime.hour); + day.setHours(settings.defaultDueTime.minute); if (itemBeingDragged.type === "quiz") { + const previousQuiz = itemBeingDragged.item as LocalQuiz; + const quiz: LocalQuiz = { - ...(itemBeingDragged.item as LocalQuiz), + ...previousQuiz, dueAt: dateToMarkdownString(day), + lockAt: + previousQuiz.lockAt && + (getDateFromStringOrThrow(previousQuiz.lockAt, "lockAt date") > + day + ? previousQuiz.lockAt + : dateToMarkdownString(day)), }; updateQuizMutation.mutate({ quiz: quiz, @@ -34,7 +49,7 @@ export default function CourseContextProvider({ } setItemBeingDragged(undefined); }, - [itemBeingDragged, updateQuizMutation] + [itemBeingDragged, settings.defaultDueTime.hour, settings.defaultDueTime.minute, updateQuizMutation] ); return (