mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-27 07:58:31 -06:00
consolodating types
This commit is contained in:
@@ -11,6 +11,7 @@ import { canvasQuizService } from "@/services/canvas/canvasQuizService";
|
|||||||
import { canvasPageService } from "@/services/canvas/canvasPageService";
|
import { canvasPageService } from "@/services/canvas/canvasPageService";
|
||||||
import { canvasQuizKeys } from "./canvas/canvasQuizHooks";
|
import { canvasQuizKeys } from "./canvas/canvasQuizHooks";
|
||||||
import { canvasPageKeys } from "./canvas/canvasPageHooks";
|
import { canvasPageKeys } from "./canvas/canvasPageHooks";
|
||||||
|
|
||||||
// https://tanstack.com/query/latest/docs/framework/react/guides/ssr
|
// https://tanstack.com/query/latest/docs/framework/react/guides/ssr
|
||||||
export const hydrateCourses = async (queryClient: QueryClient) => {
|
export const hydrateCourses = async (queryClient: QueryClient) => {
|
||||||
const allSettings = await fileStorageService.settings.getAllCoursesSettings();
|
const allSettings = await fileStorageService.settings.getAllCoursesSettings();
|
||||||
@@ -132,11 +133,11 @@ const hydrateModuleData = async (
|
|||||||
queryFn: () => assignments,
|
queryFn: () => assignments,
|
||||||
});
|
});
|
||||||
await queryClient.prefetchQuery({
|
await queryClient.prefetchQuery({
|
||||||
queryKey: localCourseKeys.allQuizzes(courseName, moduleName),
|
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, "Quiz"),
|
||||||
queryFn: () => quizzes,
|
queryFn: () => quizzes,
|
||||||
});
|
});
|
||||||
await queryClient.prefetchQuery({
|
await queryClient.prefetchQuery({
|
||||||
queryKey: localCourseKeys.allPages(courseName, moduleName),
|
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, "Page"),
|
||||||
queryFn: () => pages,
|
queryFn: () => pages,
|
||||||
});
|
});
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
@@ -157,7 +158,12 @@ const hydrateModuleData = async (
|
|||||||
quizzes.map(
|
quizzes.map(
|
||||||
async (quiz) =>
|
async (quiz) =>
|
||||||
await queryClient.prefetchQuery({
|
await queryClient.prefetchQuery({
|
||||||
queryKey: localCourseKeys.quiz(courseName, moduleName, quiz.name),
|
queryKey: localCourseKeys.itemOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
quiz.name,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
queryFn: () => quiz,
|
queryFn: () => quiz,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
@@ -166,7 +172,12 @@ const hydrateModuleData = async (
|
|||||||
pages.map(
|
pages.map(
|
||||||
async (page) =>
|
async (page) =>
|
||||||
await queryClient.prefetchQuery({
|
await queryClient.prefetchQuery({
|
||||||
queryKey: localCourseKeys.page(courseName, moduleName, page.name),
|
queryKey: localCourseKeys.itemOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
page.name,
|
||||||
|
"Page"
|
||||||
|
),
|
||||||
queryFn: () => page,
|
queryFn: () => page,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -39,40 +39,4 @@ export const localCourseKeys = {
|
|||||||
typeToFolder[type],
|
typeToFolder[type],
|
||||||
name,
|
name,
|
||||||
] as const,
|
] as const,
|
||||||
allQuizzes: (courseName: string, moduleName: string) =>
|
|
||||||
[
|
|
||||||
"course details",
|
|
||||||
courseName,
|
|
||||||
"modules",
|
|
||||||
moduleName,
|
|
||||||
"quizzes",
|
|
||||||
{ type: "all" },
|
|
||||||
] as const,
|
|
||||||
allPages: (courseName: string, moduleName: string) =>
|
|
||||||
[
|
|
||||||
"course details",
|
|
||||||
courseName,
|
|
||||||
"modules",
|
|
||||||
moduleName,
|
|
||||||
"pages",
|
|
||||||
{ type: "all" },
|
|
||||||
] as const,
|
|
||||||
quiz: (courseName: string, moduleName: string, quizName: string) =>
|
|
||||||
[
|
|
||||||
"course details",
|
|
||||||
courseName,
|
|
||||||
"modules",
|
|
||||||
moduleName,
|
|
||||||
"quizzes",
|
|
||||||
quizName,
|
|
||||||
] as const,
|
|
||||||
page: (courseName: string, moduleName: string, pageName: string) =>
|
|
||||||
[
|
|
||||||
"course details",
|
|
||||||
courseName,
|
|
||||||
"modules",
|
|
||||||
moduleName,
|
|
||||||
"pages",
|
|
||||||
pageName,
|
|
||||||
] as const,
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { axiosClient } from "@/services/axiosUtils";
|
|||||||
|
|
||||||
export function getAllPagesQueryConfig(courseName: string, moduleName: string) {
|
export function getAllPagesQueryConfig(courseName: string, moduleName: string) {
|
||||||
return {
|
return {
|
||||||
queryKey: localCourseKeys.allPages(courseName, moduleName),
|
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, "Page"),
|
||||||
queryFn: async (): Promise<LocalCoursePage[]> => {
|
queryFn: async (): Promise<LocalCoursePage[]> => {
|
||||||
const url =
|
const url =
|
||||||
"/api/courses/" +
|
"/api/courses/" +
|
||||||
@@ -32,7 +32,7 @@ export function getPageQueryConfig(
|
|||||||
pageName: string
|
pageName: string
|
||||||
) {
|
) {
|
||||||
return {
|
return {
|
||||||
queryKey: localCourseKeys.page(courseName, moduleName, pageName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
queryFn: async (): Promise<LocalCoursePage> => {
|
queryFn: async (): Promise<LocalCoursePage> => {
|
||||||
const url =
|
const url =
|
||||||
"/api/courses/" +
|
"/api/courses/" +
|
||||||
@@ -100,18 +100,19 @@ export const useUpdatePageMutation = () => {
|
|||||||
(previousPageName !== page.name || previousModuleName !== moduleName)
|
(previousPageName !== page.name || previousModuleName !== moduleName)
|
||||||
) {
|
) {
|
||||||
queryClient.removeQueries({
|
queryClient.removeQueries({
|
||||||
queryKey: localCourseKeys.page(
|
queryKey: localCourseKeys.itemOfType(
|
||||||
courseName,
|
courseName,
|
||||||
previousModuleName,
|
previousModuleName,
|
||||||
previousPageName
|
previousPageName,
|
||||||
|
"Page"
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
queryClient.removeQueries({
|
queryClient.removeQueries({
|
||||||
queryKey: localCourseKeys.allPages(courseName, moduleName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
queryClient.setQueryData(
|
queryClient.setQueryData(
|
||||||
localCourseKeys.page(courseName, moduleName, pageName),
|
localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
page
|
page
|
||||||
);
|
);
|
||||||
const url =
|
const url =
|
||||||
@@ -129,10 +130,10 @@ export const useUpdatePageMutation = () => {
|
|||||||
},
|
},
|
||||||
onSuccess: async (_, { moduleName, pageName }) => {
|
onSuccess: async (_, { moduleName, pageName }) => {
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.allPages(courseName, moduleName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.page(courseName, moduleName, pageName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -152,7 +153,7 @@ export const useCreatePageMutation = () => {
|
|||||||
pageName: string;
|
pageName: string;
|
||||||
}) => {
|
}) => {
|
||||||
queryClient.setQueryData(
|
queryClient.setQueryData(
|
||||||
localCourseKeys.page(courseName, moduleName, pageName),
|
localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
page
|
page
|
||||||
);
|
);
|
||||||
const url =
|
const url =
|
||||||
@@ -166,10 +167,10 @@ export const useCreatePageMutation = () => {
|
|||||||
},
|
},
|
||||||
onSuccess: (_, { moduleName, pageName }) => {
|
onSuccess: (_, { moduleName, pageName }) => {
|
||||||
queryClient.invalidateQueries({
|
queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.page(courseName, moduleName, pageName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
queryClient.invalidateQueries({
|
queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.allPages(courseName, moduleName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -187,10 +188,10 @@ export const useDeletePageMutation = () => {
|
|||||||
pageName: string;
|
pageName: string;
|
||||||
}) => {
|
}) => {
|
||||||
queryClient.removeQueries({
|
queryClient.removeQueries({
|
||||||
queryKey: localCourseKeys.page(courseName, moduleName, pageName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
queryClient.removeQueries({
|
queryClient.removeQueries({
|
||||||
queryKey: localCourseKeys.allPages(courseName, moduleName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
const url =
|
const url =
|
||||||
"/api/courses/" +
|
"/api/courses/" +
|
||||||
@@ -203,10 +204,10 @@ export const useDeletePageMutation = () => {
|
|||||||
},
|
},
|
||||||
onSuccess: async (_, { moduleName, pageName }) => {
|
onSuccess: async (_, { moduleName, pageName }) => {
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.allPages(courseName, moduleName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.page(courseName, moduleName, pageName),
|
queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export function getAllQuizzesQueryConfig(
|
|||||||
moduleName: string
|
moduleName: string
|
||||||
) {
|
) {
|
||||||
return {
|
return {
|
||||||
queryKey: localCourseKeys.allQuizzes(courseName, moduleName),
|
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, "Quiz"),
|
||||||
queryFn: async (): Promise<LocalQuiz[]> => {
|
queryFn: async (): Promise<LocalQuiz[]> => {
|
||||||
const url =
|
const url =
|
||||||
"/api/courses/" +
|
"/api/courses/" +
|
||||||
@@ -59,7 +59,12 @@ export function getQuizQueryConfig(
|
|||||||
quizName: string
|
quizName: string
|
||||||
) {
|
) {
|
||||||
return {
|
return {
|
||||||
queryKey: localCourseKeys.quiz(courseName, moduleName, quizName),
|
queryKey: localCourseKeys.itemOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
quizName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
queryFn: async (): Promise<LocalQuiz> => {
|
queryFn: async (): Promise<LocalQuiz> => {
|
||||||
const url =
|
const url =
|
||||||
"/api/courses/" +
|
"/api/courses/" +
|
||||||
@@ -97,18 +102,23 @@ export const useUpdateQuizMutation = () => {
|
|||||||
(previousQuizName !== quiz.name || previousModuleName !== moduleName)
|
(previousQuizName !== quiz.name || previousModuleName !== moduleName)
|
||||||
) {
|
) {
|
||||||
queryClient.removeQueries({
|
queryClient.removeQueries({
|
||||||
queryKey: localCourseKeys.quiz(
|
queryKey: localCourseKeys.itemOfType(
|
||||||
courseName,
|
courseName,
|
||||||
previousModuleName,
|
previousModuleName,
|
||||||
previousQuizName
|
previousQuizName,
|
||||||
|
"Quiz"
|
||||||
),
|
),
|
||||||
});
|
});
|
||||||
queryClient.removeQueries({
|
queryClient.removeQueries({
|
||||||
queryKey: localCourseKeys.allQuizzes(courseName, previousModuleName),
|
queryKey: localCourseKeys.allItemsOfType(
|
||||||
|
courseName,
|
||||||
|
previousModuleName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
queryClient.setQueryData(
|
queryClient.setQueryData(
|
||||||
localCourseKeys.quiz(courseName, moduleName, quizName),
|
localCourseKeys.itemOfType(courseName, moduleName, quizName, "Quiz"),
|
||||||
quiz
|
quiz
|
||||||
);
|
);
|
||||||
const url =
|
const url =
|
||||||
@@ -130,10 +140,19 @@ export const useUpdateQuizMutation = () => {
|
|||||||
},
|
},
|
||||||
onSuccess: async (_, { moduleName, quizName }) => {
|
onSuccess: async (_, { moduleName, quizName }) => {
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.allQuizzes(courseName, moduleName),
|
queryKey: localCourseKeys.allItemsOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
});
|
});
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.quiz(courseName, moduleName, quizName),
|
queryKey: localCourseKeys.itemOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
quizName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -153,7 +172,7 @@ export const useCreateQuizMutation = () => {
|
|||||||
quizName: string;
|
quizName: string;
|
||||||
}) => {
|
}) => {
|
||||||
queryClient.setQueryData(
|
queryClient.setQueryData(
|
||||||
localCourseKeys.quiz(courseName, moduleName, quizName),
|
localCourseKeys.itemOfType(courseName, moduleName, quizName, "Quiz"),
|
||||||
quiz
|
quiz
|
||||||
);
|
);
|
||||||
const url =
|
const url =
|
||||||
@@ -167,10 +186,19 @@ export const useCreateQuizMutation = () => {
|
|||||||
},
|
},
|
||||||
onSuccess: async (_, { moduleName, quizName }) => {
|
onSuccess: async (_, { moduleName, quizName }) => {
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.allQuizzes(courseName, moduleName),
|
queryKey: localCourseKeys.allItemsOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
});
|
});
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.quiz(courseName, moduleName, quizName),
|
queryKey: localCourseKeys.itemOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
quizName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -196,15 +224,28 @@ export const useDeleteQuizMutation = () => {
|
|||||||
encodeURIComponent(quizName);
|
encodeURIComponent(quizName);
|
||||||
await axiosClient.delete(url);
|
await axiosClient.delete(url);
|
||||||
queryClient.removeQueries({
|
queryClient.removeQueries({
|
||||||
queryKey: localCourseKeys.allQuizzes(courseName, moduleName),
|
queryKey: localCourseKeys.allItemsOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
onSuccess: async (_, { moduleName, quizName }) => {
|
onSuccess: async (_, { moduleName, quizName }) => {
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.allQuizzes(courseName, moduleName),
|
queryKey: localCourseKeys.allItemsOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
});
|
});
|
||||||
await queryClient.invalidateQueries({
|
await queryClient.invalidateQueries({
|
||||||
queryKey: localCourseKeys.quiz(courseName, moduleName, quizName),
|
queryKey: localCourseKeys.itemOfType(
|
||||||
|
courseName,
|
||||||
|
moduleName,
|
||||||
|
quizName,
|
||||||
|
"Quiz"
|
||||||
|
),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user