mostly proper assignment name updates

This commit is contained in:
2024-09-23 08:45:02 -06:00
parent 7af9cab7f0
commit ccaaad1fe4
5 changed files with 35 additions and 22 deletions

View File

@@ -31,8 +31,8 @@ export const PUT = async (
const { assignment, previousModuleName, previousAssignmentName } = const { assignment, previousModuleName, previousAssignmentName } =
(await request.json()) as { (await request.json()) as {
assignment: LocalAssignment; assignment: LocalAssignment;
previousModuleName?: string; previousModuleName: string;
previousAssignmentName?: string; previousAssignmentName: string;
}; };
await fileStorageService.assignments.updateOrCreateAssignment({ await fileStorageService.assignments.updateOrCreateAssignment({
@@ -43,10 +43,8 @@ export const PUT = async (
}); });
if ( if (
previousModuleName && assignment.name !== previousAssignmentName ||
previousAssignmentName && moduleName !== previousModuleName
(assignment.name !== previousAssignmentName ||
moduleName !== previousModuleName)
) { ) {
fileStorageService.assignments.delete({ fileStorageService.assignments.delete({
courseName, courseName,

View File

@@ -7,7 +7,7 @@ import {
import { localAssignmentMarkdown } from "@/models/local/assignment/localAssignment"; import { localAssignmentMarkdown } from "@/models/local/assignment/localAssignment";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import AssignmentPreview from "./AssignmentPreview"; import AssignmentPreview from "./AssignmentPreview";
import { getCourseUrl } from "@/services/urlUtils"; import { getCourseUrl, getModuleItemUrl } from "@/services/urlUtils";
import Link from "next/link"; import Link from "next/link";
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext"; import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
@@ -23,6 +23,7 @@ import ClientOnly from "@/components/ClientOnly";
import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling"; import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling";
import { AssignmentSubmissionType } from "@/models/local/assignment/assignmentSubmissionType"; import { AssignmentSubmissionType } from "@/models/local/assignment/assignmentSubmissionType";
import { LocalCourseSettings } from "@/models/local/localCourse"; import { LocalCourseSettings } from "@/models/local/localCourse";
import { useRouter } from "next/navigation";
export default function EditAssignment({ export default function EditAssignment({
moduleName, moduleName,
@@ -31,6 +32,8 @@ export default function EditAssignment({
assignmentName: string; assignmentName: string;
moduleName: string; moduleName: string;
}) { }) {
const router = useRouter();
const { courseName } = useCourseContext();
const { data: settings } = useLocalCourseSettingsQuery(); const { data: settings } = useLocalCourseSettingsQuery();
const { data: assignment } = useAssignmentQuery(moduleName, assignmentName); const { data: assignment } = useAssignmentQuery(moduleName, assignmentName);
const updateAssignment = useUpdateAssignmentMutation(); const updateAssignment = useUpdateAssignmentMutation();
@@ -52,12 +55,24 @@ export default function EditAssignment({
localAssignmentMarkdown.toMarkdown(updatedAssignment) localAssignmentMarkdown.toMarkdown(updatedAssignment)
) { ) {
console.log("updating assignment"); console.log("updating assignment");
updateAssignment.mutate({ updateAssignment
.mutateAsync({
assignment: updatedAssignment, assignment: updatedAssignment,
moduleName, moduleName,
assignmentName, assignmentName: updatedAssignment.name,
previousModuleName: moduleName, previousModuleName: moduleName,
previousAssignmentName: assignment.name, previousAssignmentName: assignmentName,
})
.then(() => {
if (updatedAssignment.name !== assignmentName)
router.replace(
getModuleItemUrl(
courseName,
moduleName,
"assignment",
updatedAssignment.name
)
);
}); });
} }
setError(""); setError("");
@@ -73,7 +88,9 @@ export default function EditAssignment({
assignment, assignment,
assignmentName, assignmentName,
assignmentText, assignmentText,
courseName,
moduleName, moduleName,
router,
updateAssignment, updateAssignment,
]); ]);

View File

@@ -52,7 +52,7 @@ export default function EditPage({
}) })
.then(() => { .then(() => {
if (updatedPage.name !== pageName) if (updatedPage.name !== pageName)
router.push( router.replace(
getModuleItemUrl( getModuleItemUrl(
courseName, courseName,
moduleName, moduleName,
@@ -71,7 +71,7 @@ export default function EditPage({
return () => { return () => {
clearTimeout(handler); clearTimeout(handler);
}; };
}, [moduleName, page, pageName, pageText, updatePage]); }, [courseName, moduleName, page, pageName, pageText, router, updatePage]);
return ( return (
<div className="h-full flex flex-col"> <div className="h-full flex flex-col">

View File

@@ -92,7 +92,7 @@ export default function EditQuiz({
}) })
.then(() => { .then(() => {
if (updatedQuiz.name !== quizName) if (updatedQuiz.name !== quizName)
router.push( router.replace(
getModuleItemUrl( getModuleItemUrl(
courseName, courseName,
moduleName, moduleName,

View File

@@ -105,10 +105,8 @@ export const useUpdateAssignmentMutation = () => {
assignmentName: string; assignmentName: string;
}) => { }) => {
if ( if (
previousAssignmentName && previousAssignmentName !== assignment.name ||
previousModuleName && previousModuleName !== moduleName
(previousAssignmentName !== assignment.name ||
previousModuleName !== moduleName)
) { ) {
queryClient.removeQueries({ queryClient.removeQueries({
queryKey: localCourseKeys.assignment( queryKey: localCourseKeys.assignment(