updating page name and quiz name

This commit is contained in:
2024-09-23 08:35:16 -06:00
parent 158a5d82a2
commit 7af9cab7f0
6 changed files with 122 additions and 42 deletions

View File

@@ -122,6 +122,7 @@ export default function ExpandableModule({
<div className="grid grid-cols-[auto_1fr]">
{moduleItems.map(({ type, item }) => (
<ExpandableModuleItem
key={item.name + type}
type={type}
item={item}
moduleName={moduleName}

View File

@@ -11,6 +11,9 @@ import PagePreview from "./PagePreview";
import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
import EditPageButtons from "./EditPageButtons";
import ClientOnly from "@/components/ClientOnly";
import { getModuleItemUrl } from "@/services/urlUtils";
import { useRouter } from "next/navigation";
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
export default function EditPage({
moduleName,
@@ -19,6 +22,8 @@ export default function EditPage({
pageName: string;
moduleName: string;
}) {
const router = useRouter();
const { courseName } = useCourseContext();
const { data: page } = usePageQuery(moduleName, pageName);
const updatePage = useUpdatePageMutation();
const [pageText, setPageText] = useState(
@@ -37,11 +42,25 @@ export default function EditPage({
localPageMarkdownUtils.toMarkdown(updatedPage)
) {
console.log("updating page");
updatePage.mutate({
page: updatedPage,
moduleName,
pageName,
});
updatePage
.mutateAsync({
page: updatedPage,
moduleName,
pageName: updatedPage.name,
previousModuleName: moduleName,
previousPageName: pageName,
})
.then(() => {
if (updatedPage.name !== pageName)
router.push(
getModuleItemUrl(
courseName,
moduleName,
"page",
updatedPage.name
)
);
});
}
setError("");
} catch (e: any) {
@@ -70,10 +89,7 @@ export default function EditPage({
</div>
{settings.canvasId && (
<ClientOnly>
<EditPageButtons
pageName={pageName}
moduleName={moduleName}
/>
<EditPageButtons pageName={pageName} moduleName={moduleName} />
</ClientOnly>
)}
</div>

View File

@@ -10,6 +10,9 @@ import QuizPreview from "./QuizPreview";
import { QuizButtons } from "./QuizButton";
import ClientOnly from "@/components/ClientOnly";
import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling";
import { useRouter } from "next/navigation";
import { getModuleItemUrl } from "@/services/urlUtils";
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
const helpString = `QUESTION REFERENCE
---
@@ -59,6 +62,8 @@ export default function EditQuiz({
quizName: string;
moduleName: string;
}) {
const router = useRouter();
const { courseName } = useCourseContext();
const { data: quiz } = useQuizQuery(moduleName, quizName);
const updateQuizMutation = useUpdateQuizMutation();
const [quizText, setQuizText] = useState(quizMarkdownUtils.toMarkdown(quiz));
@@ -67,7 +72,7 @@ export default function EditQuiz({
useEffect(() => {
const delay = 1000;
const handler = setTimeout(() => {
const handler = setTimeout(async () => {
try {
console.log("checking if the same...");
if (
@@ -77,11 +82,25 @@ export default function EditQuiz({
)
) {
const updatedQuiz = quizMarkdownUtils.parseMarkdown(quizText);
updateQuizMutation.mutate({
quiz: updatedQuiz,
moduleName,
quizName,
});
updateQuizMutation
.mutateAsync({
quiz: updatedQuiz,
moduleName,
quizName: updatedQuiz.name,
previousModuleName: moduleName,
previousQuizName: quizName,
})
.then(() => {
if (updatedQuiz.name !== quizName)
router.push(
getModuleItemUrl(
courseName,
moduleName,
"quiz",
updatedQuiz.name
)
);
});
}
setError("");
} catch (e: any) {
@@ -92,7 +111,7 @@ export default function EditQuiz({
return () => {
clearTimeout(handler);
};
}, [moduleName, quiz, quizName, quizText, updateQuizMutation]);
}, [courseName, moduleName, quiz, quizName, quizText, router, updateQuizMutation]);
return (
<div className="h-full flex flex-col align-middle px-1">