refactoring quiz data fetching to simplify

This commit is contained in:
2024-11-04 11:26:50 -07:00
parent 09597c55f8
commit 3f4d665dd2
15 changed files with 62 additions and 110 deletions

View File

@@ -33,8 +33,15 @@ export async function getAllItemsFromServer<T extends CourseItemType>({
);
return quizzes as CourseItemReturnType<T>[];
}
const pages = await fileStorageService.pages.getPages(courseName, moduleName);
return pages as CourseItemReturnType<T>[];
if (type === "Page") {
const pages = await fileStorageService.pages.getPages(
courseName,
moduleName
);
return pages as CourseItemReturnType<T>[];
}
throw Error(`cannot get item from server, invalid type: ${type}`)
}
export async function getItemFromServer<T extends CourseItemType>({

View File

@@ -7,7 +7,6 @@ import {
} from "@tanstack/react-query";
import { localCourseKeys } from "./localCourseKeys";
import { getAllAssignmentsQueryConfig } from "./assignmentHooks";
import { getAllQuizzesQueryConfig } from "./quizHooks";
import { getAllItemsQueryConfig } from "./courseItemHooks";
import {
createModuleOnServer,
@@ -39,36 +38,6 @@ export const useCreateModuleMutation = () => {
});
};
// // dangerous? really slowed down page...
// // maybe it only slowed down with react query devtools...
// export const useModuleDataQuery = (moduleName: string) => {
// console.log("running");
// const { data: assignmentNames } = useAssignmentNamesQuery(moduleName);
// const { data: quizNames } = useQuizNamesQuery(moduleName);
// const { data: pageNames } = usePageNamesQuery(moduleName);
// const { data: assignments } = useAssignmentsQueries(
// moduleName,
// assignmentNames
// );
// const { data: quizzes } = useQuizzesQueries(moduleName, quizNames);
// const { data: pages } = usePagesQueries(moduleName, pageNames);
// return {
// assignments,
// quizzes,
// pages,
// };
// // return useMemo(
// // () => ({
// // assignments,
// // quizzes,
// // pages,
// // }),
// // [assignments, pages, quizzes]
// // );
// };
export const useAllCourseDataQuery = () => {
const { courseName } = useCourseContext();
const { data: moduleNames } = useModuleNamesQuery();
@@ -90,7 +59,7 @@ export const useAllCourseDataQuery = () => {
const { data: quizzesAndModules } = useSuspenseQueries({
queries: moduleNames.map((moduleName) =>
getAllQuizzesQueryConfig(courseName, moduleName)
getAllItemsQueryConfig(courseName, moduleName, "Quiz")
),
combine: (results) => ({
data: results.flatMap((r, i) =>

View File

@@ -1,38 +0,0 @@
"use client";
import {
getAllItemsQueryConfig,
getItemQueryConfig,
useCreateItemMutation,
useDeleteItemMutation,
useItemQuery,
useItemsQueries,
useUpdateItemMutation,
} from "./courseItemHooks";
export function getAllQuizzesQueryConfig(
courseName: string,
moduleName: string
) {
return getAllItemsQueryConfig(courseName, moduleName, "Quiz");
}
export function getQuizQueryConfig(
courseName: string,
moduleName: string,
quizName: string
) {
return getItemQueryConfig(courseName, moduleName, quizName, "Quiz");
}
export const useQuizQuery = (moduleName: string, quizName: string) =>
useItemQuery(moduleName, quizName, "Quiz");
export const useQuizzesQueries = (moduleName: string) =>
useItemsQueries(moduleName, "Quiz");
export const useUpdateQuizMutation = () => useUpdateItemMutation("Quiz")
export const useCreateQuizMutation = () => useCreateItemMutation("Quiz")
export const useDeleteQuizMutation = () =>
useDeleteItemMutation("Quiz");