ignoring assignments that cannot be parsed

This commit is contained in:
2024-09-23 22:15:20 -06:00
parent 55cb135d5d
commit eb73b7217f
12 changed files with 97 additions and 90 deletions

View File

@@ -11,12 +11,12 @@ import {
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
import { axiosClient } from "@/services/axiosUtils";
export const getAssignmentNamesQueryConfig = (
export const getAllAssignmentsQueryConfig = (
courseName: string,
moduleName: string
) => ({
queryKey: localCourseKeys.assignmentNames(courseName, moduleName),
queryFn: async (): Promise<string[]> => {
queryKey: localCourseKeys.allAssignments(courseName, moduleName),
queryFn: async (): Promise<LocalAssignment[]> => {
const url =
"/api/courses/" +
encodeURIComponent(courseName) +
@@ -28,11 +28,9 @@ export const getAssignmentNamesQueryConfig = (
},
});
export const useAssignmentNamesQuery = (moduleName: string) => {
export const useAllAssignmentNamesQuery = (moduleName: string) => {
const { courseName } = useCourseContext();
return useSuspenseQuery(
getAssignmentNamesQueryConfig(courseName, moduleName)
);
return useSuspenseQuery(getAllAssignmentsQueryConfig(courseName, moduleName));
};
export const getAssignmentQueryConfig = (
@@ -72,11 +70,11 @@ export const useAssignmentQuery = (
};
export const useAssignmentsQueries = (moduleName: string) => {
const { data: assignmentNames } = useAssignmentNamesQuery(moduleName);
const { data: allAssignments } = useAllAssignmentNamesQuery(moduleName);
const { courseName } = useCourseContext();
return useSuspenseQueries({
queries: assignmentNames.map((name) =>
getAssignmentQueryConfig(courseName, moduleName, name)
queries: allAssignments.map((assignment) =>
getAssignmentQueryConfig(courseName, moduleName, assignment.name)
),
combine: (results) => ({
data: results.map((r) => r.data),
@@ -114,7 +112,7 @@ export const useUpdateAssignmentMutation = () => {
),
});
queryClient.removeQueries({
queryKey: localCourseKeys.assignmentNames(
queryKey: localCourseKeys.allAssignments(
courseName,
previousModuleName
),
@@ -140,7 +138,7 @@ export const useUpdateAssignmentMutation = () => {
},
onSuccess: async (_, { moduleName, assignmentName }) => {
await queryClient.invalidateQueries({
queryKey: localCourseKeys.assignmentNames(courseName, moduleName),
queryKey: localCourseKeys.allAssignments(courseName, moduleName),
});
await queryClient.invalidateQueries({
queryKey: localCourseKeys.assignment(
@@ -181,7 +179,7 @@ export const useCreateAssignmentMutation = () => {
},
onSuccess: async (_, { moduleName, assignmentName }) => {
await queryClient.invalidateQueries({
queryKey: localCourseKeys.assignmentNames(courseName, moduleName),
queryKey: localCourseKeys.allAssignments(courseName, moduleName),
});
await queryClient.invalidateQueries({
queryKey: localCourseKeys.assignment(
@@ -205,7 +203,6 @@ export const useDeleteAssignmentMutation = () => {
moduleName: string;
assignmentName: string;
}) => {
queryClient.removeQueries({
queryKey: localCourseKeys.assignment(
courseName,
@@ -214,10 +211,7 @@ export const useDeleteAssignmentMutation = () => {
),
});
queryClient.removeQueries({
queryKey: localCourseKeys.assignmentNames(
courseName,
moduleName
),
queryKey: localCourseKeys.allAssignments(courseName, moduleName),
});
const url =
"/api/courses/" +
@@ -230,7 +224,7 @@ export const useDeleteAssignmentMutation = () => {
},
onSuccess: async (_, { moduleName, assignmentName }) => {
queryClient.invalidateQueries({
queryKey: localCourseKeys.assignmentNames(courseName, moduleName),
queryKey: localCourseKeys.allAssignments(courseName, moduleName),
});
},
});

View File

@@ -10,14 +10,14 @@ export const localCourseKeys = {
"modules",
{ type: "names" } as const,
] as const,
assignmentNames: (courseName: string, moduleName: string) =>
allAssignments: (courseName: string, moduleName: string) =>
[
"course details",
courseName,
"modules",
moduleName,
"assignments",
{ type: "names" },
{ type: "all assignments" },
] as const,
quizNames: (courseName: string, moduleName: string) =>
[

View File

@@ -8,7 +8,7 @@ import {
} from "@tanstack/react-query";
import { localCourseKeys } from "./localCourseKeys";
import {
getAssignmentNamesQueryConfig,
getAllAssignmentsQueryConfig,
getAssignmentQueryConfig,
} from "./assignmentHooks";
import { getPageNamesQueryConfig, getPageQueryConfig } from "./pageHooks";
@@ -77,34 +77,34 @@ export const useAllCourseDataQuery = () => {
const { courseName } = useCourseContext();
const { data: moduleNames } = useModuleNamesQuery();
const { data: assignmentNamesAndModules } = useSuspenseQueries({
const { data: assignmentsAndModules } = useSuspenseQueries({
queries: moduleNames.map((moduleName) =>
getAssignmentNamesQueryConfig(courseName, moduleName)
getAllAssignmentsQueryConfig(courseName, moduleName)
),
combine: (results) => ({
data: results.flatMap((r, i) =>
r.data.map((assignmentName) => ({
r.data.map((assignment) => ({
moduleName: moduleNames[i],
assignmentName,
assignment,
}))
),
pending: results.some((r) => r.isPending),
}),
});
const { data: assignmentsAndModules } = useSuspenseQueries({
queries: assignmentNamesAndModules.map(
({ moduleName, assignmentName }, i) =>
getAssignmentQueryConfig(courseName, moduleName, assignmentName)
),
combine: (results) => ({
data: results.flatMap((r, i) => ({
moduleName: assignmentNamesAndModules[i].moduleName,
assignment: r.data,
})),
pending: results.some((r) => r.isPending),
}),
});
// const { data: assignmentsAndModules } = useSuspenseQueries({
// queries: assignmentsAndModules.map(
// ({ moduleName, assignment }, i) =>
// getAssignmentQueryConfig(courseName, moduleName, assignment)
// ),
// combine: (results) => ({
// data: results.flatMap((r, i) => ({
// moduleName: assignmentsAndModules[i].moduleName,
// assignment: r.data,
// })),
// pending: results.some((r) => r.isPending),
// }),
// });
const { data: quizNamesAndModules } = useSuspenseQueries({
queries: moduleNames.map((moduleName) =>