mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
updates
This commit is contained in:
@@ -10,7 +10,6 @@ export const CalendarMonth = ({ month }: { month: CalendarMonthModel }) => {
|
||||
new Date(month.year, month.month, 1) <
|
||||
new Date(Date.now() - weekInMilliseconds);
|
||||
|
||||
console.log(month, isInPast);
|
||||
const [isCollapsed, setIsCollapsed] = useState(isInPast);
|
||||
|
||||
const monthName = new Date(month.year, month.month - 1, 1).toLocaleString(
|
||||
@@ -20,7 +19,6 @@ export const CalendarMonth = ({ month }: { month: CalendarMonthModel }) => {
|
||||
const toggleCollapse = () => setIsCollapsed(!isCollapsed);
|
||||
const weekDaysList: DayOfWeek[] = Object.values(DayOfWeek);
|
||||
|
||||
console.log(isCollapsed);
|
||||
return (
|
||||
<>
|
||||
<div className="flex justify-center">
|
||||
|
||||
@@ -2,7 +2,6 @@ import { ReactNode } from "react";
|
||||
import { useCourseContext } from "./courseContext";
|
||||
import {
|
||||
useAllCourseDataQuery,
|
||||
useModuleDataQuery,
|
||||
} from "@/hooks/localCourse/localCoursesHooks";
|
||||
import {
|
||||
CalendarItemsContext,
|
||||
|
||||
@@ -87,14 +87,12 @@ export default function NewCourseForm() {
|
||||
daysOfWeek: selectedDaysOfWeek,
|
||||
canvasId: selectedCanvasCourse.id,
|
||||
startDate: selectedTerm.start_at ?? "",
|
||||
endDate: selectedTerm.start_at ?? "",
|
||||
endDate: selectedTerm.end_at ?? "",
|
||||
defaultDueTime: { hour: 11, minute: 59 },
|
||||
},
|
||||
})
|
||||
.then(() => {
|
||||
router.push(getCourseUrl(selectedDirectory), undefined, {
|
||||
shallow: true,
|
||||
});
|
||||
router.push(getCourseUrl(selectedDirectory));
|
||||
});
|
||||
}
|
||||
}}
|
||||
|
||||
148
nextjs/src/hooks/localCourse/localCourseModuleHooks.ts
Normal file
148
nextjs/src/hooks/localCourse/localCourseModuleHooks.ts
Normal file
@@ -0,0 +1,148 @@
|
||||
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
|
||||
import { axiosClient } from "@/services/axiosUtils";
|
||||
import { useMutation, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { localCourseKeys } from "./localCourseKeys";
|
||||
|
||||
export const useModuleNamesQuery = () => {
|
||||
const { courseName } = useCourseContext();
|
||||
return useSuspenseQuery({
|
||||
queryKey: localCourseKeys.moduleNames(courseName),
|
||||
queryFn: async (): Promise<string[]> => {
|
||||
const url = `/api/courses/${courseName}/modules`;
|
||||
const response = await axiosClient.get(url);
|
||||
return response.data;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const useCreateModuleMutation = () => {
|
||||
const { courseName } = useCourseContext();
|
||||
return useMutation({
|
||||
mutationFn: async (moduleName: string) => {
|
||||
const url = `/api/courses/${courseName}/modules`;
|
||||
const response = await axiosClient.post(url, {moduleName});
|
||||
return response.data;},
|
||||
});
|
||||
};
|
||||
|
||||
// // 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();
|
||||
|
||||
// const { data: assignmentNamesAndModules } = useSuspenseQueries({
|
||||
// queries: moduleNames.map((moduleName) =>
|
||||
// getAssignmentNamesQueryConfig(courseName, moduleName)
|
||||
// ),
|
||||
// combine: (results) => ({
|
||||
// data: results.flatMap((r, i) =>
|
||||
// r.data.map((assignmentName) => ({
|
||||
// moduleName: moduleNames[i],
|
||||
// assignmentName,
|
||||
// }))
|
||||
// ),
|
||||
// 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: quizNamesAndModules } = useSuspenseQueries({
|
||||
// queries: moduleNames.map((moduleName) =>
|
||||
// getQuizNamesQueryConfig(courseName, moduleName)
|
||||
// ),
|
||||
// combine: (results) => ({
|
||||
// data: results.flatMap((r, i) =>
|
||||
// r.data.map((quizName) => ({
|
||||
// moduleName: moduleNames[i],
|
||||
// quizName: quizName,
|
||||
// }))
|
||||
// ),
|
||||
// pending: results.some((r) => r.isPending),
|
||||
// }),
|
||||
// });
|
||||
|
||||
// const { data: quizzesAndModules } = useSuspenseQueries({
|
||||
// queries: quizNamesAndModules.map(({ moduleName, quizName }, i) =>
|
||||
// getQuizQueryConfig(courseName, moduleName, quizName)
|
||||
// ),
|
||||
// combine: (results) => ({
|
||||
// data: results.flatMap((r, i) => ({
|
||||
// moduleName: quizNamesAndModules[i].moduleName,
|
||||
// quiz: r.data,
|
||||
// })),
|
||||
// pending: results.some((r) => r.isPending),
|
||||
// }),
|
||||
// });
|
||||
|
||||
// const { data: pageNamesAndModules } = useSuspenseQueries({
|
||||
// queries: moduleNames.map((moduleName) =>
|
||||
// getPageNamesQueryConfig(courseName, moduleName)
|
||||
// ),
|
||||
// combine: (results) => ({
|
||||
// data: results.flatMap((r, i) =>
|
||||
// r.data.map((pageName) => ({
|
||||
// moduleName: moduleNames[i],
|
||||
// pageName,
|
||||
// }))
|
||||
// ),
|
||||
// pending: results.some((r) => r.isPending),
|
||||
// }),
|
||||
// });
|
||||
|
||||
// const { data: pagesAndModules } = useSuspenseQueries({
|
||||
// queries: pageNamesAndModules.map(({ moduleName, pageName }, i) =>
|
||||
// getPageQueryConfig(courseName, moduleName, pageName)
|
||||
// ),
|
||||
// combine: (results) => ({
|
||||
// data: results.flatMap((r, i) => ({
|
||||
// moduleName: pageNamesAndModules[i].moduleName,
|
||||
// page: r.data,
|
||||
// })),
|
||||
// pending: results.some((r) => r.isPending),
|
||||
// }),
|
||||
// });
|
||||
|
||||
// return { assignmentsAndModules, quizzesAndModules, pagesAndModules };
|
||||
// };
|
||||
@@ -2,32 +2,11 @@
|
||||
import { LocalCourse, LocalCourseSettings } from "@/models/local/localCourse";
|
||||
import {
|
||||
useMutation,
|
||||
useQueries,
|
||||
useQueryClient,
|
||||
useSuspenseQueries,
|
||||
useSuspenseQuery,
|
||||
} from "@tanstack/react-query";
|
||||
import axios from "axios";
|
||||
import { localCourseKeys } from "./localCourseKeys";
|
||||
import { axiosClient } from "@/services/axiosUtils";
|
||||
import {
|
||||
getAssignmentNamesQueryConfig,
|
||||
getAssignmentQueryConfig,
|
||||
useAssignmentNamesQuery,
|
||||
useAssignmentsQueries,
|
||||
} from "./assignmentHooks";
|
||||
import {
|
||||
getPageNamesQueryConfig,
|
||||
getPageQueryConfig,
|
||||
usePageNamesQuery,
|
||||
usePagesQueries,
|
||||
} from "./pageHooks";
|
||||
import {
|
||||
getQuizNamesQueryConfig,
|
||||
getQuizQueryConfig,
|
||||
useQuizNamesQuery,
|
||||
useQuizzesQueries,
|
||||
} from "./quizHooks";
|
||||
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
|
||||
|
||||
export const useLocalCoursesSettingsQuery = () =>
|
||||
@@ -94,140 +73,6 @@ export const useUpdateLocalCourseSettingsMutation = () => {
|
||||
});
|
||||
};
|
||||
|
||||
export const useModuleNamesQuery = () => {
|
||||
const { courseName } = useCourseContext();
|
||||
return useSuspenseQuery({
|
||||
queryKey: localCourseKeys.moduleNames(courseName),
|
||||
queryFn: async (): Promise<string[]> => {
|
||||
const url = `/api/courses/${courseName}/modules`;
|
||||
const response = await axiosClient.get(url);
|
||||
return response.data;
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
// 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();
|
||||
|
||||
const { data: assignmentNamesAndModules } = useSuspenseQueries({
|
||||
queries: moduleNames.map((moduleName) =>
|
||||
getAssignmentNamesQueryConfig(courseName, moduleName)
|
||||
),
|
||||
combine: (results) => ({
|
||||
data: results.flatMap((r, i) =>
|
||||
r.data.map((assignmentName) => ({
|
||||
moduleName: moduleNames[i],
|
||||
assignmentName,
|
||||
}))
|
||||
),
|
||||
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: quizNamesAndModules } = useSuspenseQueries({
|
||||
queries: moduleNames.map((moduleName) =>
|
||||
getQuizNamesQueryConfig(courseName, moduleName)
|
||||
),
|
||||
combine: (results) => ({
|
||||
data: results.flatMap((r, i) =>
|
||||
r.data.map((quizName) => ({
|
||||
moduleName: moduleNames[i],
|
||||
quizName: quizName,
|
||||
}))
|
||||
),
|
||||
pending: results.some((r) => r.isPending),
|
||||
}),
|
||||
});
|
||||
|
||||
const { data: quizzesAndModules } = useSuspenseQueries({
|
||||
queries: quizNamesAndModules.map(({ moduleName, quizName }, i) =>
|
||||
getQuizQueryConfig(courseName, moduleName, quizName)
|
||||
),
|
||||
combine: (results) => ({
|
||||
data: results.flatMap((r, i) => ({
|
||||
moduleName: quizNamesAndModules[i].moduleName,
|
||||
quiz: r.data,
|
||||
})),
|
||||
pending: results.some((r) => r.isPending),
|
||||
}),
|
||||
});
|
||||
|
||||
const { data: pageNamesAndModules } = useSuspenseQueries({
|
||||
queries: moduleNames.map((moduleName) =>
|
||||
getPageNamesQueryConfig(courseName, moduleName)
|
||||
),
|
||||
combine: (results) => ({
|
||||
data: results.flatMap((r, i) =>
|
||||
r.data.map((pageName) => ({
|
||||
moduleName: moduleNames[i],
|
||||
pageName,
|
||||
}))
|
||||
),
|
||||
pending: results.some((r) => r.isPending),
|
||||
}),
|
||||
});
|
||||
|
||||
const { data: pagesAndModules } = useSuspenseQueries({
|
||||
queries: pageNamesAndModules.map(({ moduleName, pageName }, i) =>
|
||||
getPageQueryConfig(courseName, moduleName, pageName)
|
||||
),
|
||||
combine: (results) => ({
|
||||
data: results.flatMap((r, i) => ({
|
||||
moduleName: pageNamesAndModules[i].moduleName,
|
||||
page: r.data,
|
||||
})),
|
||||
pending: results.some((r) => r.isPending),
|
||||
}),
|
||||
});
|
||||
|
||||
return { assignmentsAndModules, quizzesAndModules, pagesAndModules };
|
||||
};
|
||||
|
||||
// export const useUpdateCourseMutation = (courseName: string) => {
|
||||
// const queryClient = useQueryClient();
|
||||
// return useMutation({
|
||||
|
||||
Reference in New Issue
Block a user