mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 15:18:32 -06:00
102 lines
3.3 KiB
TypeScript
102 lines
3.3 KiB
TypeScript
"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 { data: 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 };
|
|
}
|