mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
can delete without errors
This commit is contained in:
@@ -127,11 +127,11 @@ export function AssignmentButtons({
|
|||||||
<div className="flex justify-around gap-3">
|
<div className="flex justify-around gap-3">
|
||||||
<button
|
<button
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
deleteLocal
|
router.push(getCourseUrl(courseName));
|
||||||
.mutateAsync({ moduleName, itemName: assignmentName })
|
deleteLocal.mutate({
|
||||||
.then(() => {
|
moduleName,
|
||||||
router.push(getCourseUrl(courseName));
|
itemName: assignmentName,
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
className="btn-danger"
|
className="btn-danger"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import {
|
|||||||
} from "@/hooks/localCourse/pageHooks";
|
} from "@/hooks/localCourse/pageHooks";
|
||||||
import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils";
|
import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils";
|
||||||
import { getCourseUrl } from "@/services/urlUtils";
|
import { getCourseUrl } from "@/services/urlUtils";
|
||||||
|
import { revalidatePath } from "next/cache";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
@@ -99,10 +100,12 @@ export default function EditPageButtons({
|
|||||||
<br />
|
<br />
|
||||||
<div className="flex justify-around gap-3">
|
<div className="flex justify-around gap-3">
|
||||||
<button
|
<button
|
||||||
onClick={async () => {
|
onClick={() => {
|
||||||
deletePageLocal
|
router.push(getCourseUrl(courseName));
|
||||||
.mutateAsync({ moduleName, itemName: pageName })
|
deletePageLocal.mutate({
|
||||||
.then(() => router.push(getCourseUrl(courseName)));
|
moduleName,
|
||||||
|
itemName: pageName,
|
||||||
|
});
|
||||||
}}
|
}}
|
||||||
className="btn-danger"
|
className="btn-danger"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -87,9 +87,8 @@ export function QuizButtons({
|
|||||||
<div className="flex justify-around gap-3">
|
<div className="flex justify-around gap-3">
|
||||||
<button
|
<button
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
deleteLocal
|
router.push(getCourseUrl(courseName));
|
||||||
.mutateAsync({ moduleName, itemName: quizName })
|
deleteLocal.mutate({ moduleName, itemName: quizName });
|
||||||
.then(() => router.push(getCourseUrl(courseName)));
|
|
||||||
}}
|
}}
|
||||||
className="btn-danger"
|
className="btn-danger"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ export const MonacoEditor: React.FC<{
|
|||||||
}> = ({ value, onChange }) => {
|
}> = ({ value, onChange }) => {
|
||||||
const [salt, setSalt] = useState(Date.now());
|
const [salt, setSalt] = useState(Date.now());
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log("onchange changed");
|
|
||||||
setSalt(Date.now());
|
setSalt(Date.now());
|
||||||
}, [onChange]);
|
}, [onChange]);
|
||||||
return <InnerMonacoEditor key={salt} value={value} onChange={onChange} />;
|
return <InnerMonacoEditor key={salt} value={value} onChange={onChange} />;
|
||||||
|
|||||||
@@ -230,17 +230,6 @@ export const useDeleteItemMutation = <T extends CourseItemType>(type: T) => {
|
|||||||
moduleName: string;
|
moduleName: string;
|
||||||
itemName: string;
|
itemName: string;
|
||||||
}) => {
|
}) => {
|
||||||
queryClient.removeQueries({
|
|
||||||
queryKey: localCourseKeys.itemOfType(
|
|
||||||
courseName,
|
|
||||||
moduleName,
|
|
||||||
itemName,
|
|
||||||
type
|
|
||||||
),
|
|
||||||
});
|
|
||||||
queryClient.removeQueries({
|
|
||||||
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
|
||||||
});
|
|
||||||
const url =
|
const url =
|
||||||
"/api/courses/" +
|
"/api/courses/" +
|
||||||
encodeURIComponent(courseName) +
|
encodeURIComponent(courseName) +
|
||||||
@@ -253,8 +242,19 @@ export const useDeleteItemMutation = <T extends CourseItemType>(type: T) => {
|
|||||||
await axiosClient.delete(url);
|
await axiosClient.delete(url);
|
||||||
},
|
},
|
||||||
onSuccess: async (_, { moduleName, itemName }) => {
|
onSuccess: async (_, { moduleName, itemName }) => {
|
||||||
|
|
||||||
queryClient.invalidateQueries({
|
queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||||
|
refetchType: "all"
|
||||||
|
});
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: localCourseKeys.itemOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
itemName,
|
||||||
|
type
|
||||||
|
),
|
||||||
|
refetchType: "none"
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -7,12 +7,9 @@ import {
|
|||||||
useSuspenseQuery,
|
useSuspenseQuery,
|
||||||
} from "@tanstack/react-query";
|
} from "@tanstack/react-query";
|
||||||
import { localCourseKeys } from "./localCourseKeys";
|
import { localCourseKeys } from "./localCourseKeys";
|
||||||
import {
|
import { getAllAssignmentsQueryConfig } from "./assignmentHooks";
|
||||||
getAllAssignmentsQueryConfig,
|
import { getAllQuizzesQueryConfig } from "./quizHooks";
|
||||||
getAssignmentQueryConfig,
|
import { getAllItemsQueryConfig } from "./courseItemHooks";
|
||||||
} from "./assignmentHooks";
|
|
||||||
import { getAllPagesQueryConfig, getPageQueryConfig } from "./pageHooks";
|
|
||||||
import { getAllQuizzesQueryConfig, getQuizQueryConfig } from "./quizHooks";
|
|
||||||
|
|
||||||
export const useModuleNamesQuery = () => {
|
export const useModuleNamesQuery = () => {
|
||||||
const { courseName } = useCourseContext();
|
const { courseName } = useCourseContext();
|
||||||
@@ -109,7 +106,7 @@ export const useAllCourseDataQuery = () => {
|
|||||||
|
|
||||||
const { data: pagesAndModules } = useSuspenseQueries({
|
const { data: pagesAndModules } = useSuspenseQueries({
|
||||||
queries: moduleNames.map((moduleName) =>
|
queries: moduleNames.map((moduleName) =>
|
||||||
getAllPagesQueryConfig(courseName, moduleName)
|
getAllItemsQueryConfig(courseName, moduleName, "Page")
|
||||||
),
|
),
|
||||||
combine: (results) => ({
|
combine: (results) => ({
|
||||||
data: results.flatMap((r, i) =>
|
data: results.flatMap((r, i) =>
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
"use client";
|
"use client";
|
||||||
import {
|
import {
|
||||||
getAllItemsQueryConfig,
|
|
||||||
getItemQueryConfig,
|
|
||||||
useCreateItemMutation,
|
useCreateItemMutation,
|
||||||
useDeleteItemMutation,
|
useDeleteItemMutation,
|
||||||
useItemQuery,
|
useItemQuery,
|
||||||
@@ -9,18 +7,6 @@ import {
|
|||||||
useUpdateItemMutation,
|
useUpdateItemMutation,
|
||||||
} from "./courseItemHooks";
|
} from "./courseItemHooks";
|
||||||
|
|
||||||
export function getAllPagesQueryConfig(courseName: string, moduleName: string) {
|
|
||||||
return getAllItemsQueryConfig(courseName, moduleName, "Page");
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getPageQueryConfig(
|
|
||||||
courseName: string,
|
|
||||||
moduleName: string,
|
|
||||||
pageName: string
|
|
||||||
) {
|
|
||||||
return getItemQueryConfig(courseName, moduleName, pageName, "Page");
|
|
||||||
}
|
|
||||||
|
|
||||||
export const usePageQuery = (moduleName: string, pageName: string) =>
|
export const usePageQuery = (moduleName: string, pageName: string) =>
|
||||||
useItemQuery(moduleName, pageName, "Page");
|
useItemQuery(moduleName, pageName, "Page");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user