import { useCourseContext } from "@/app/course/[courseName]/context/courseContext"; import TextInput from "@/components/form/TextInput"; import Modal, { useModal } from "@/components/Modal"; import { Spinner } from "@/components/Spinner"; import { usePageQuery, useUpdatePageMutation, } from "@/features/local/pages/pageHooks"; import { getModuleItemUrl } from "@/services/urlUtils"; import { useRouter } from "next/navigation"; import { useState } from "react"; export function UpdatePageName({ moduleName, pageName, }: { pageName: string; moduleName: string; }) { const modal = useModal(); const { courseName } = useCourseContext(); const router = useRouter(); const { data: page } = usePageQuery(moduleName, pageName); const updatePage = useUpdatePageMutation(); const [name, setName] = useState(page.name); const [isLoading, setIsLoading] = useState(false); return (
{({ closeModal }) => (
{ e.preventDefault(); if (name === pageName) closeModal(); setIsLoading(true); // page refresh resets flag await updatePage.mutateAsync({ page: page, moduleName, pageName: name, previousModuleName: moduleName, previousPageName: pageName, courseName, }); // update url (will trigger reload...) router.replace( getModuleItemUrl(courseName, moduleName, "page", name), {} ); }} >
Warning: does not rename in Canvas
{isLoading && } )}
); }