From ae19b5a075ca2aff13548854652d068b153eb535 Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Mon, 24 Nov 2025 16:06:25 -0700 Subject: [PATCH] validation on changing assignment name --- .../[assignmentName]/UpdateAssignmentName.tsx | 31 +++++++++++-------- .../local/assignments/assignmentRouter.ts | 12 +++++++ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/UpdateAssignmentName.tsx b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/UpdateAssignmentName.tsx index 07987c8..055c9ad 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/UpdateAssignmentName.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/UpdateAssignmentName.tsx @@ -40,20 +40,25 @@ export function UpdateAssignmentName({ if (name === assignmentName) closeModal(); setIsLoading(true); // page refresh resets flag - await updateAssignment.mutateAsync({ - assignment: assignment, - moduleName, - assignmentName: name, - previousModuleName: moduleName, - previousAssignmentName: assignmentName, - courseName, - }); + try{ - // update url (will trigger reload...) - router.replace( - getModuleItemUrl(courseName, moduleName, "assignment", name), - {} - ); + await updateAssignment.mutateAsync({ + assignment: assignment, + moduleName, + assignmentName: name, + previousModuleName: moduleName, + previousAssignmentName: assignmentName, + courseName, + }); + + // update url (will trigger reload...) + router.replace( + getModuleItemUrl(courseName, moduleName, "assignment", name), + {} + ); + }finally { + setIsLoading(false); + } }} > ", ":", '"', "/", "\\", "|", "?", "*"]; + const foundIllegalCharacters = illegalCharacters.filter((char) => + assignmentName.includes(char) + ); + if (foundIllegalCharacters.length > 0) { + throw new Error( + `"${assignmentName}" cannot contain the following characters: ${foundIllegalCharacters.join( + " " + )}` + ); + } + const courseDirectory = await getCoursePathByName(courseName); const folder = path.join(courseDirectory, moduleName, "assignments"); await fs.mkdir(folder, { recursive: true });