mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 23:58:31 -06:00
moving v2 to top level
This commit is contained in:
101
src/app/course/[courseName]/calendar/day/useTodaysItems.tsx
Normal file
101
src/app/course/[courseName]/calendar/day/useTodaysItems.tsx
Normal file
@@ -0,0 +1,101 @@
|
||||
"use client";
|
||||
import { useCanvasAssignmentsQuery } from "@/hooks/canvas/canvasAssignmentHooks";
|
||||
import { useCanvasPagesQuery } from "@/hooks/canvas/canvasPageHooks";
|
||||
import { useCanvasQuizzesQuery } from "@/hooks/canvas/canvasQuizHooks";
|
||||
import { LocalAssignment } from "@/models/local/assignment/localAssignment";
|
||||
import { LocalCoursePage } from "@/models/local/page/localCoursePage";
|
||||
import { LocalQuiz } from "@/models/local/quiz/localQuiz";
|
||||
import {
|
||||
getDateFromStringOrThrow,
|
||||
getDateOnlyMarkdownString,
|
||||
} from "@/models/local/utils/timeUtils";
|
||||
import { ReactNode } from "react";
|
||||
import { useCalendarItemsContext } from "../../context/calendarItemsContext";
|
||||
import { getStatus } from "./getStatus";
|
||||
import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks";
|
||||
|
||||
export function useTodaysItems(day: string) {
|
||||
const [settings] = useLocalCourseSettingsQuery();
|
||||
const dayAsDate = getDateFromStringOrThrow(
|
||||
day,
|
||||
"calculating same month in day items"
|
||||
);
|
||||
const itemsContext = useCalendarItemsContext();
|
||||
const dateKey = getDateOnlyMarkdownString(dayAsDate);
|
||||
const todaysModules = itemsContext[dateKey];
|
||||
|
||||
const { data: canvasAssignments } = useCanvasAssignmentsQuery();
|
||||
const { data: canvasQuizzes } = useCanvasQuizzesQuery();
|
||||
const { data: canvasPages } = useCanvasPagesQuery();
|
||||
const todaysAssignments: {
|
||||
moduleName: string;
|
||||
assignment: LocalAssignment;
|
||||
status: "localOnly" | "incomplete" | "published";
|
||||
message: ReactNode;
|
||||
}[] = todaysModules
|
||||
? Object.keys(todaysModules).flatMap((moduleName) =>
|
||||
todaysModules[moduleName].assignments.map((assignment) => {
|
||||
const canvasAssignment = canvasAssignments?.find(
|
||||
(c) => c.name === assignment.name
|
||||
);
|
||||
return {
|
||||
moduleName,
|
||||
assignment,
|
||||
...getStatus({
|
||||
item: assignment,
|
||||
canvasItem: canvasAssignment,
|
||||
type: "assignment",
|
||||
settings,
|
||||
}),
|
||||
};
|
||||
})
|
||||
)
|
||||
: [];
|
||||
|
||||
const todaysQuizzes: {
|
||||
moduleName: string;
|
||||
quiz: LocalQuiz;
|
||||
status: "localOnly" | "incomplete" | "published";
|
||||
message: ReactNode;
|
||||
}[] = todaysModules
|
||||
? Object.keys(todaysModules).flatMap((moduleName) =>
|
||||
todaysModules[moduleName].quizzes.map((quiz) => {
|
||||
const canvasQuiz = canvasQuizzes?.find((q) => q.title === quiz.name);
|
||||
return {
|
||||
moduleName,
|
||||
quiz,
|
||||
...getStatus({
|
||||
item: quiz,
|
||||
canvasItem: canvasQuiz,
|
||||
type: "quiz",
|
||||
settings,
|
||||
}),
|
||||
};
|
||||
})
|
||||
)
|
||||
: [];
|
||||
|
||||
const todaysPages: {
|
||||
moduleName: string;
|
||||
page: LocalCoursePage;
|
||||
status: "localOnly" | "incomplete" | "published";
|
||||
message: ReactNode;
|
||||
}[] = todaysModules
|
||||
? Object.keys(todaysModules).flatMap((moduleName) =>
|
||||
todaysModules[moduleName].pages.map((page) => {
|
||||
const canvasPage = canvasPages?.find((p) => p.title === page.name);
|
||||
return {
|
||||
moduleName,
|
||||
page,
|
||||
...getStatus({
|
||||
item: page,
|
||||
canvasItem: canvasPage,
|
||||
type: "page",
|
||||
settings,
|
||||
}),
|
||||
};
|
||||
})
|
||||
)
|
||||
: [];
|
||||
return { todaysAssignments, todaysQuizzes, todaysPages };
|
||||
}
|
||||
Reference in New Issue
Block a user