drag and drop quiz also updated lock time

This commit is contained in:
2024-08-30 13:28:42 -06:00
parent 778a8fa3f5
commit baa69348a3
2 changed files with 18 additions and 4 deletions

View File

@@ -8,7 +8,6 @@ export default function Day({ day, month }: { day: Date; month: number }) {
const { data: moduleNames } = useModuleNamesQuery(courseName); const { data: moduleNames } = useModuleNamesQuery(courseName);
const isInSameMonth = day.getMonth() + 1 != month; const isInSameMonth = day.getMonth() + 1 != month;
const backgroundClass = isInSameMonth ? "" : "bg-slate-900"; const backgroundClass = isInSameMonth ? "" : "bg-slate-900";
console.log("render");
return ( return (
<> <>

View File

@@ -2,8 +2,12 @@
import { ReactNode, useCallback, useState } from "react"; import { ReactNode, useCallback, useState } from "react";
import { CourseContext, DraggableItem } from "./courseContext"; import { CourseContext, DraggableItem } from "./courseContext";
import { LocalQuiz } from "@/models/local/quiz/localQuiz"; 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 { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks";
import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
export default function CourseContextProvider({ export default function CourseContextProvider({
localCourseName, localCourseName,
@@ -13,6 +17,7 @@ export default function CourseContextProvider({
localCourseName: string; localCourseName: string;
}) { }) {
const updateQuizMutation = useUpdateQuizMutation(localCourseName); const updateQuizMutation = useUpdateQuizMutation(localCourseName);
const { data: settings } = useLocalCourseSettingsQuery(localCourseName);
const [itemBeingDragged, setItemBeingDragged] = useState< const [itemBeingDragged, setItemBeingDragged] = useState<
DraggableItem | undefined DraggableItem | undefined
>(); >();
@@ -20,10 +25,20 @@ export default function CourseContextProvider({
const itemDrop = useCallback( const itemDrop = useCallback(
(day: Date | undefined) => { (day: Date | undefined) => {
if (itemBeingDragged && day) { if (itemBeingDragged && day) {
day.setHours(settings.defaultDueTime.hour);
day.setHours(settings.defaultDueTime.minute);
if (itemBeingDragged.type === "quiz") { if (itemBeingDragged.type === "quiz") {
const previousQuiz = itemBeingDragged.item as LocalQuiz;
const quiz: LocalQuiz = { const quiz: LocalQuiz = {
...(itemBeingDragged.item as LocalQuiz), ...previousQuiz,
dueAt: dateToMarkdownString(day), dueAt: dateToMarkdownString(day),
lockAt:
previousQuiz.lockAt &&
(getDateFromStringOrThrow(previousQuiz.lockAt, "lockAt date") >
day
? previousQuiz.lockAt
: dateToMarkdownString(day)),
}; };
updateQuizMutation.mutate({ updateQuizMutation.mutate({
quiz: quiz, quiz: quiz,
@@ -34,7 +49,7 @@ export default function CourseContextProvider({
} }
setItemBeingDragged(undefined); setItemBeingDragged(undefined);
}, },
[itemBeingDragged, updateQuizMutation] [itemBeingDragged, settings.defaultDueTime.hour, settings.defaultDueTime.minute, updateQuizMutation]
); );
return ( return (