diff --git a/nextjs/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts b/nextjs/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts index 7cdc831..0e7697e 100644 --- a/nextjs/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts +++ b/nextjs/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts @@ -16,8 +16,8 @@ import { 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"; +import { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks"; export function useItemDropOnDay({ setIsDragging, @@ -37,7 +37,7 @@ export function useItemDropOnDay({ const [weeks] = trpc.lectures.getLectures.useSuspenseQuery({ courseName: settings.name, }); - const updateQuizMutation = useUpdateItemMutation("Quiz"); + const updateQuizMutation = useUpdateQuizMutation(); const updateLectureMutation = useLectureUpdateMutation(); const updateAssignmentMutation = useUpdateAssignmentMutation(); const updatePageMutation = useUpdatePageMutation(); @@ -132,11 +132,12 @@ export function useItemDropOnDay({ ), }; updateQuizMutation.mutate({ - item: quiz, - itemName: quiz.name, + quiz, + quizName: quiz.name, moduleName: itemBeingDragged.sourceModuleName, previousModuleName: itemBeingDragged.sourceModuleName, - previousItemName: quiz.name, + previousQuizName: quiz.name, + courseName: settings.name, }); } function updatePage(dayAsDate: Date) { @@ -152,11 +153,12 @@ export function useItemDropOnDay({ dueAt: dateToMarkdownString(dayAsDate), }; updatePageMutation.mutate({ - item: page, + page, moduleName: itemBeingDragged.sourceModuleName, - itemName: page.name, - previousItemName: page.name, + pageName: page.name, + previousPageName: page.name, previousModuleName: itemBeingDragged.sourceModuleName, + courseName: settings.name, }); } function updateAssignment(dayAsDate: Date) { @@ -177,11 +179,12 @@ export function useItemDropOnDay({ ), }; updateAssignmentMutation.mutate({ - item: assignment, + assignment, previousModuleName: itemBeingDragged.sourceModuleName, moduleName: itemBeingDragged.sourceModuleName, - itemName: assignment.name, - previousItemName: assignment.name, + assignmentName: assignment.name, + previousAssignmentName: assignment.name, + courseName: settings.name, }); } }, diff --git a/nextjs/src/app/course/[courseName]/context/drag/useItemDropOnModule.ts b/nextjs/src/app/course/[courseName]/context/drag/useItemDropOnModule.ts index 04c819d..ba17215 100644 --- a/nextjs/src/app/course/[courseName]/context/drag/useItemDropOnModule.ts +++ b/nextjs/src/app/course/[courseName]/context/drag/useItemDropOnModule.ts @@ -6,16 +6,18 @@ import { LocalCoursePage } from "@/models/local/page/localCoursePage"; import { LocalQuiz } from "@/models/local/quiz/localQuiz"; import { Dispatch, SetStateAction, useCallback, DragEvent } from "react"; import { DraggableItem } from "./draggingContext"; -import { useUpdateItemMutation } from "@/hooks/localCourse/courseItemHooks"; +import { useCourseContext } from "../courseContext"; +import { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks"; export function useItemDropOnModule({ setIsDragging, }: { setIsDragging: Dispatch>; }) { - const updateQuizMutation = useUpdateItemMutation("Quiz"); + const updateQuizMutation = useUpdateQuizMutation(); const updateAssignmentMutation = useUpdateAssignmentMutation(); const updatePageMutation = useUpdatePageMutation(); + const { courseName } = useCourseContext(); return useCallback( (e: DragEvent, dropModuleName: string) => { @@ -41,11 +43,12 @@ export function useItemDropOnModule({ const quiz = itemBeingDragged.item as LocalQuiz; if (itemBeingDragged.sourceModuleName) { updateQuizMutation.mutate({ - item: quiz, - itemName: quiz.name, + quiz, + quizName: quiz.name, moduleName: dropModuleName, previousModuleName: itemBeingDragged.sourceModuleName, - previousItemName: quiz.name, + previousQuizName: quiz.name, + courseName, }); } else { console.error( @@ -58,11 +61,12 @@ export function useItemDropOnModule({ const assignment = itemBeingDragged.item as LocalAssignment; if (itemBeingDragged.sourceModuleName) { updateAssignmentMutation.mutate({ - item: assignment, + assignment, previousModuleName: itemBeingDragged.sourceModuleName, moduleName: dropModuleName, - itemName: assignment.name, - previousItemName: assignment.name, + assignmentName: assignment.name, + previousAssignmentName: assignment.name, + courseName, }); } else { console.error( @@ -75,11 +79,12 @@ export function useItemDropOnModule({ const page = itemBeingDragged.item as LocalCoursePage; if (itemBeingDragged.sourceModuleName) { updatePageMutation.mutate({ - item: page, + page, moduleName: dropModuleName, - itemName: page.name, - previousItemName: page.name, + pageName: page.name, + previousPageName: page.name, previousModuleName: itemBeingDragged.sourceModuleName, + courseName, }); } else { console.error( @@ -90,6 +95,7 @@ export function useItemDropOnModule({ } }, [ + courseName, setIsDragging, updateAssignmentMutation, updatePageMutation, diff --git a/nextjs/src/app/course/[courseName]/modules/ExpandableModule.tsx b/nextjs/src/app/course/[courseName]/modules/ExpandableModule.tsx index f466714..503d7b4 100644 --- a/nextjs/src/app/course/[courseName]/modules/ExpandableModule.tsx +++ b/nextjs/src/app/course/[courseName]/modules/ExpandableModule.tsx @@ -21,8 +21,8 @@ import { getModuleItemUrl } from "@/services/urlUtils"; import { useCourseContext } from "../context/courseContext"; import { Expandable } from "../../../../components/Expandable"; import { useDragStyleContext } from "../context/drag/dragStyleContext"; -import { useItemsQueries } from "@/hooks/localCourse/courseItemHooks"; import { useAssignmentsQuery } from "@/hooks/localCourse/assignmentHooks"; +import { useQuizzesQueries } from "@/hooks/localCourse/quizHooks"; export default function ExpandableModule({ moduleName, @@ -31,9 +31,9 @@ export default function ExpandableModule({ }) { const { itemDropOnModule } = useDraggingContext(); - const { data: assignments } = useAssignmentsQuery(moduleName); - // const { data: quizzes } = useItemsQueries(moduleName, "Quiz"); - const { data: pages } = usePagesQueries(moduleName); + const [assignments ] = useAssignmentsQuery(moduleName); + const [quizzes] = useQuizzesQueries(moduleName); + const [pages] = usePagesQueries(moduleName); const modal = useModal(); const moduleItems: { @@ -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) => diff --git a/nextjs/src/app/course/[courseName]/modules/NewItemForm.tsx b/nextjs/src/app/course/[courseName]/modules/NewItemForm.tsx index 46db811..3220d8f 100644 --- a/nextjs/src/app/course/[courseName]/modules/NewItemForm.tsx +++ b/nextjs/src/app/course/[courseName]/modules/NewItemForm.tsx @@ -4,7 +4,6 @@ import SelectInput from "@/components/form/SelectInput"; import TextInput from "@/components/form/TextInput"; import { Spinner } from "@/components/Spinner"; import { useCreateAssignmentMutation } from "@/hooks/localCourse/assignmentHooks"; -import { useCreateItemMutation } from "@/hooks/localCourse/courseItemHooks"; import { useModuleNamesQuery } from "@/hooks/localCourse/localCourseModuleHooks"; import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; import { useCreatePageMutation } from "@/hooks/localCourse/pageHooks"; @@ -14,9 +13,9 @@ import { getDateFromString, getDateFromStringOrThrow, } from "@/models/local/timeUtils"; -import { trpc } from "@/services/trpc/utils"; import React, { useState } from "react"; import { useCourseContext } from "../context/courseContext"; +import { useCreateQuizMutation } from "@/hooks/localCourse/quizHooks"; export default function NewItemForm({ moduleName: defaultModuleName, @@ -33,10 +32,6 @@ export default function NewItemForm({ const [type, setType] = useState<"Assignment" | "Quiz" | "Page">( "Assignment" ); - const assignmentCreationMutation = useCreateAssignmentMutation({ - courseName, - moduleName: defaultModuleName ?? "", - }); const [moduleName, setModuleName] = useState( defaultModuleName @@ -58,12 +53,11 @@ export default function NewItemForm({ useState(); const createPage = useCreatePageMutation(); - const createQuiz = useCreateItemMutation("Quiz"); + const createQuiz = useCreateQuizMutation(); + const createAssignment = useCreateAssignmentMutation(); const isPending = - assignmentCreationMutation.isPending || - createPage.isPending || - createQuiz.isPending; + createAssignment.isPending || createPage.isPending || createQuiz.isPending; return (
{ try { - const updatedAssignment = + const updatedAssignment: LocalAssignment = localAssignmentMarkdown.parseMarkdown(assignmentText); if ( localAssignmentMarkdown.toMarkdown(assignment) !== @@ -50,11 +53,12 @@ export default function EditAssignment({ console.log("updating assignment"); updateAssignment .mutateAsync({ - item: updatedAssignment, + assignment: updatedAssignment, moduleName, - itemName: updatedAssignment.name, + assignmentName: updatedAssignment.name, previousModuleName: moduleName, - previousItemName: assignmentName, + previousAssignmentName: assignmentName, + courseName, }) .then(() => { if (updatedAssignment.name !== assignmentName) diff --git a/nextjs/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPage.tsx b/nextjs/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPage.tsx index 8033413..d94b20b 100644 --- a/nextjs/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPage.tsx +++ b/nextjs/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPage.tsx @@ -24,7 +24,7 @@ export default function EditPage({ }) { const router = useRouter(); const { courseName } = useCourseContext(); - const { data: page } = usePageQuery(moduleName, pageName); + const [page] = usePageQuery(moduleName, pageName); const updatePage = useUpdatePageMutation(); const [pageText, setPageText] = useState( localPageMarkdownUtils.toMarkdown(page) @@ -44,11 +44,12 @@ export default function EditPage({ console.log("updating page"); updatePage .mutateAsync({ - item: updatedPage, + page: updatedPage, moduleName, - itemName: updatedPage.name, + pageName: updatedPage.name, previousModuleName: moduleName, - previousItemName: pageName, + previousPageName: pageName, + courseName, }) .then(() => { if (updatedPage.name !== pageName) diff --git a/nextjs/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx b/nextjs/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx index 5cd4c16..a7791f2 100644 --- a/nextjs/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx +++ b/nextjs/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx @@ -28,7 +28,7 @@ export default function EditPageButtons({ const router = useRouter(); const { courseName } = useCourseContext(); const [settings] = useLocalCourseSettingsQuery(); - const { data: page } = usePageQuery(moduleName, pageName); + const [page] = usePageQuery(moduleName, pageName); const { data: canvasPages } = useCanvasPagesQuery(); const createPageInCanvas = useCreateCanvasPageMutation(); const updatePageInCanvas = useUpdateCanvasPageMutation(); @@ -105,7 +105,8 @@ export default function EditPageButtons({ router.push(getCourseUrl(courseName)); deletePageLocal.mutate({ moduleName, - itemName: pageName, + pageName, + courseName, }); }} className="btn-danger" diff --git a/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx b/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx index 7a8ad1f..941abe2 100644 --- a/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx +++ b/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx @@ -9,7 +9,10 @@ import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling" import { useRouter } from "next/navigation"; import { getModuleItemUrl } from "@/services/urlUtils"; import { useCourseContext } from "@/app/course/[courseName]/context/courseContext"; -import { useItemQuery, useUpdateItemMutation } from "@/hooks/localCourse/courseItemHooks"; +import { + useQuizQuery, + useUpdateQuizMutation, +} from "@/hooks/localCourse/quizHooks"; const helpString = `QUESTION REFERENCE --- @@ -61,8 +64,8 @@ export default function EditQuiz({ }) { const router = useRouter(); const { courseName } = useCourseContext(); - const { data: quiz } = useItemQuery(moduleName, quizName, "Quiz"); - const updateQuizMutation = useUpdateItemMutation("Quiz"); + const [quiz] = useQuizQuery(moduleName, quizName); + const updateQuizMutation = useUpdateQuizMutation(); const [quizText, setQuizText] = useState(quizMarkdownUtils.toMarkdown(quiz)); const [error, setError] = useState(""); const [showHelp, setShowHelp] = useState(false); @@ -81,11 +84,12 @@ export default function EditQuiz({ const updatedQuiz = quizMarkdownUtils.parseMarkdown(quizText); updateQuizMutation .mutateAsync({ - item: updatedQuiz, + quiz: updatedQuiz, moduleName, - itemName: updatedQuiz.name, + quizName: updatedQuiz.name, previousModuleName: moduleName, - previousItemName: quizName, + previousQuizName: quizName, + courseName, }) .then(() => { if (updatedQuiz.name !== quizName) diff --git a/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx b/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx index 0191347..491ed89 100644 --- a/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx +++ b/nextjs/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx @@ -6,11 +6,11 @@ import { useAddQuizToCanvasMutation, useDeleteQuizFromCanvasMutation, } from "@/hooks/canvas/canvasQuizHooks"; -import { - useDeleteItemMutation, - useItemQuery, -} from "@/hooks/localCourse/courseItemHooks"; import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { + useDeleteQuizMutation, + useQuizQuery, +} from "@/hooks/localCourse/quizHooks"; import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; @@ -29,10 +29,11 @@ export function QuizButtons({ const { courseName } = useCourseContext(); const [settings] = useLocalCourseSettingsQuery(); const { data: canvasQuizzes } = useCanvasQuizzesQuery(); - const { data: quiz } = useItemQuery(moduleName, quizName, "Quiz"); + + const [quiz] = useQuizQuery(moduleName, quizName); const addToCanvas = useAddQuizToCanvasMutation(); const deleteFromCanvas = useDeleteQuizFromCanvasMutation(); - const deleteLocal = useDeleteItemMutation("Quiz"); + const deleteLocal = useDeleteQuizMutation(); const modal = useModal(); const quizInCanvas = canvasQuizzes.find((c) => c.title === quizName); @@ -90,7 +91,7 @@ export function QuizButtons({