import { useCourseContext } from "@/app/course/[courseName]/context/courseContext"; import Modal, { useModal } from "@/components/Modal"; import { Spinner } from "@/components/Spinner"; import { useCanvasAssignmentsQuery, useAddAssignmentToCanvasMutation, useDeleteAssignmentFromCanvasMutation, useUpdateAssignmentInCanvasMutation, } from "@/features/canvas/hooks/canvasAssignmentHooks"; import { baseCanvasUrl } from "@/features/canvas/services/canvasServiceUtils"; import { useAssignmentQuery, useDeleteAssignmentMutation, } from "@/features/local/assignments/assignmentHooks"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { useItemNavigation } from "../../../../hooks/useItemNavigation"; import ItemNavigationButtons from "../../../../components/ItemNavigationButtons"; export function AssignmentFooterButtons({ moduleName, assignmentName, toggleHelp, }: { assignmentName: string; moduleName: string; toggleHelp: () => void; }) { const router = useRouter(); const { courseName } = useCourseContext(); const { data: settings } = useLocalCourseSettingsQuery(); const { data: canvasAssignments, isFetching: canvasIsFetching } = useCanvasAssignmentsQuery(); const { data: assignment, isFetching } = useAssignmentQuery( moduleName, assignmentName ); const addToCanvas = useAddAssignmentToCanvasMutation(); const deleteFromCanvas = useDeleteAssignmentFromCanvasMutation(); const updateAssignment = useUpdateAssignmentInCanvasMutation(); const deleteLocal = useDeleteAssignmentMutation(); const [isLoading, setIsLoading] = useState(false); const modal = useModal(); const { previousUrl, nextUrl } = useItemNavigation( "assignment", assignmentName, moduleName ); const assignmentInCanvas = canvasAssignments?.find( (a) => a.name === assignmentName ); const anythingIsLoading = addToCanvas.isPending || canvasIsFetching || isFetching || deleteFromCanvas.isPending || updateAssignment.isPending; return (