From 4681b1df5146df81348183726c0574eac62d489d Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Fri, 27 Sep 2024 11:17:47 -0600 Subject: [PATCH] consolodating types --- nextjs/src/hooks/hookHydration.ts | 19 +++-- .../src/hooks/localCourse/localCourseKeys.ts | 36 ---------- nextjs/src/hooks/localCourse/pageHooks.ts | 31 +++++---- nextjs/src/hooks/localCourse/quizHooks.ts | 69 +++++++++++++++---- 4 files changed, 86 insertions(+), 69 deletions(-) diff --git a/nextjs/src/hooks/hookHydration.ts b/nextjs/src/hooks/hookHydration.ts index 80dab10..d300acf 100644 --- a/nextjs/src/hooks/hookHydration.ts +++ b/nextjs/src/hooks/hookHydration.ts @@ -11,6 +11,7 @@ import { canvasQuizService } from "@/services/canvas/canvasQuizService"; import { canvasPageService } from "@/services/canvas/canvasPageService"; import { canvasQuizKeys } from "./canvas/canvasQuizHooks"; import { canvasPageKeys } from "./canvas/canvasPageHooks"; + // https://tanstack.com/query/latest/docs/framework/react/guides/ssr export const hydrateCourses = async (queryClient: QueryClient) => { const allSettings = await fileStorageService.settings.getAllCoursesSettings(); @@ -132,11 +133,11 @@ const hydrateModuleData = async ( queryFn: () => assignments, }); await queryClient.prefetchQuery({ - queryKey: localCourseKeys.allQuizzes(courseName, moduleName), + queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, "Quiz"), queryFn: () => quizzes, }); await queryClient.prefetchQuery({ - queryKey: localCourseKeys.allPages(courseName, moduleName), + queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, "Page"), queryFn: () => pages, }); await Promise.all( @@ -157,7 +158,12 @@ const hydrateModuleData = async ( quizzes.map( async (quiz) => await queryClient.prefetchQuery({ - queryKey: localCourseKeys.quiz(courseName, moduleName, quiz.name), + queryKey: localCourseKeys.itemOfType( + courseName, + moduleName, + quiz.name, + "Quiz" + ), queryFn: () => quiz, }) ) @@ -166,7 +172,12 @@ const hydrateModuleData = async ( pages.map( async (page) => await queryClient.prefetchQuery({ - queryKey: localCourseKeys.page(courseName, moduleName, page.name), + queryKey: localCourseKeys.itemOfType( + courseName, + moduleName, + page.name, + "Page" + ), queryFn: () => page, }) ) diff --git a/nextjs/src/hooks/localCourse/localCourseKeys.ts b/nextjs/src/hooks/localCourse/localCourseKeys.ts index 7c05753..8b3c4d7 100644 --- a/nextjs/src/hooks/localCourse/localCourseKeys.ts +++ b/nextjs/src/hooks/localCourse/localCourseKeys.ts @@ -39,40 +39,4 @@ export const localCourseKeys = { typeToFolder[type], name, ] 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, }; diff --git a/nextjs/src/hooks/localCourse/pageHooks.ts b/nextjs/src/hooks/localCourse/pageHooks.ts index dbbe302..3e29572 100644 --- a/nextjs/src/hooks/localCourse/pageHooks.ts +++ b/nextjs/src/hooks/localCourse/pageHooks.ts @@ -12,7 +12,7 @@ import { axiosClient } from "@/services/axiosUtils"; export function getAllPagesQueryConfig(courseName: string, moduleName: string) { return { - queryKey: localCourseKeys.allPages(courseName, moduleName), + queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, "Page"), queryFn: async (): Promise => { const url = "/api/courses/" + @@ -32,7 +32,7 @@ export function getPageQueryConfig( pageName: string ) { return { - queryKey: localCourseKeys.page(courseName, moduleName, pageName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), queryFn: async (): Promise => { const url = "/api/courses/" + @@ -100,18 +100,19 @@ export const useUpdatePageMutation = () => { (previousPageName !== page.name || previousModuleName !== moduleName) ) { queryClient.removeQueries({ - queryKey: localCourseKeys.page( + queryKey: localCourseKeys.itemOfType( courseName, previousModuleName, - previousPageName + previousPageName, + "Page" ), }); queryClient.removeQueries({ - queryKey: localCourseKeys.allPages(courseName, moduleName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), }); } queryClient.setQueryData( - localCourseKeys.page(courseName, moduleName, pageName), + localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), page ); const url = @@ -129,10 +130,10 @@ export const useUpdatePageMutation = () => { }, onSuccess: async (_, { moduleName, pageName }) => { await queryClient.invalidateQueries({ - queryKey: localCourseKeys.allPages(courseName, moduleName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), }); 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; }) => { queryClient.setQueryData( - localCourseKeys.page(courseName, moduleName, pageName), + localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), page ); const url = @@ -166,10 +167,10 @@ export const useCreatePageMutation = () => { }, onSuccess: (_, { moduleName, pageName }) => { queryClient.invalidateQueries({ - queryKey: localCourseKeys.page(courseName, moduleName, pageName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), }); queryClient.invalidateQueries({ - queryKey: localCourseKeys.allPages(courseName, moduleName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), }); }, }); @@ -187,10 +188,10 @@ export const useDeletePageMutation = () => { pageName: string; }) => { queryClient.removeQueries({ - queryKey: localCourseKeys.page(courseName, moduleName, pageName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), }); queryClient.removeQueries({ - queryKey: localCourseKeys.allPages(courseName, moduleName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), }); const url = "/api/courses/" + @@ -203,10 +204,10 @@ export const useDeletePageMutation = () => { }, onSuccess: async (_, { moduleName, pageName }) => { await queryClient.invalidateQueries({ - queryKey: localCourseKeys.allPages(courseName, moduleName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), }); await queryClient.invalidateQueries({ - queryKey: localCourseKeys.page(courseName, moduleName, pageName), + queryKey: localCourseKeys.itemOfType(courseName, moduleName, pageName, "Page"), }); }, }); diff --git a/nextjs/src/hooks/localCourse/quizHooks.ts b/nextjs/src/hooks/localCourse/quizHooks.ts index 0352037..bee99af 100644 --- a/nextjs/src/hooks/localCourse/quizHooks.ts +++ b/nextjs/src/hooks/localCourse/quizHooks.ts @@ -15,7 +15,7 @@ export function getAllQuizzesQueryConfig( moduleName: string ) { return { - queryKey: localCourseKeys.allQuizzes(courseName, moduleName), + queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, "Quiz"), queryFn: async (): Promise => { const url = "/api/courses/" + @@ -59,7 +59,12 @@ export function getQuizQueryConfig( quizName: string ) { return { - queryKey: localCourseKeys.quiz(courseName, moduleName, quizName), + queryKey: localCourseKeys.itemOfType( + courseName, + moduleName, + quizName, + "Quiz" + ), queryFn: async (): Promise => { const url = "/api/courses/" + @@ -97,18 +102,23 @@ export const useUpdateQuizMutation = () => { (previousQuizName !== quiz.name || previousModuleName !== moduleName) ) { queryClient.removeQueries({ - queryKey: localCourseKeys.quiz( + queryKey: localCourseKeys.itemOfType( courseName, previousModuleName, - previousQuizName + previousQuizName, + "Quiz" ), }); queryClient.removeQueries({ - queryKey: localCourseKeys.allQuizzes(courseName, previousModuleName), + queryKey: localCourseKeys.allItemsOfType( + courseName, + previousModuleName, + "Quiz" + ), }); } queryClient.setQueryData( - localCourseKeys.quiz(courseName, moduleName, quizName), + localCourseKeys.itemOfType(courseName, moduleName, quizName, "Quiz"), quiz ); const url = @@ -130,10 +140,19 @@ export const useUpdateQuizMutation = () => { }, onSuccess: async (_, { moduleName, quizName }) => { await queryClient.invalidateQueries({ - queryKey: localCourseKeys.allQuizzes(courseName, moduleName), + queryKey: localCourseKeys.allItemsOfType( + courseName, + moduleName, + "Quiz" + ), }); 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; }) => { queryClient.setQueryData( - localCourseKeys.quiz(courseName, moduleName, quizName), + localCourseKeys.itemOfType(courseName, moduleName, quizName, "Quiz"), quiz ); const url = @@ -167,10 +186,19 @@ export const useCreateQuizMutation = () => { }, onSuccess: async (_, { moduleName, quizName }) => { await queryClient.invalidateQueries({ - queryKey: localCourseKeys.allQuizzes(courseName, moduleName), + queryKey: localCourseKeys.allItemsOfType( + courseName, + moduleName, + "Quiz" + ), }); 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); await axiosClient.delete(url); queryClient.removeQueries({ - queryKey: localCourseKeys.allQuizzes(courseName, moduleName), + queryKey: localCourseKeys.allItemsOfType( + courseName, + moduleName, + "Quiz" + ), }); }, onSuccess: async (_, { moduleName, quizName }) => { await queryClient.invalidateQueries({ - queryKey: localCourseKeys.allQuizzes(courseName, moduleName), + queryKey: localCourseKeys.allItemsOfType( + courseName, + moduleName, + "Quiz" + ), }); await queryClient.invalidateQueries({ - queryKey: localCourseKeys.quiz(courseName, moduleName, quizName), + queryKey: localCourseKeys.itemOfType( + courseName, + moduleName, + quizName, + "Quiz" + ), }); }, });