diff --git a/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx b/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx index 5b2fbe8..abc457d 100644 --- a/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx +++ b/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx @@ -6,14 +6,12 @@ import { StoragePathSelector } from "@/components/form/StoragePathSelector"; import TextInput from "@/components/form/TextInput"; import { Spinner } from "@/components/Spinner"; import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling"; -import { useCourseListInTermQuery } from "@/hooks/canvas/canvasCourseHooks"; -import { useCanvasTermsQuery } from "@/hooks/canvas/canvasHooks"; import { useCreateLocalCourseMutation, useLocalCoursesSettingsQuery, } from "@/features/local/course/localCoursesHooks"; -import { CanvasCourseModel } from "@/models/canvas/courses/canvasCourseModel"; -import { CanvasEnrollmentTermModel } from "@/models/canvas/enrollmentTerms/canvasEnrollmentTermModel"; +import { CanvasCourseModel } from "@/features/canvas/models/courses/canvasCourseModel"; +import { CanvasEnrollmentTermModel } from "@/features/canvas/models/enrollmentTerms/canvasEnrollmentTermModel"; import { AssignmentSubmissionType } from "@/features/local/assignments/models/assignmentSubmissionType"; import { getCourseUrl } from "@/services/urlUtils"; import { useRouter } from "next/navigation"; @@ -22,6 +20,8 @@ import { DayOfWeek, LocalCourseSettings, } from "@/features/local/course/localCourseSettings"; +import { useCourseListInTermQuery } from "@/features/canvas/hooks/canvasCourseHooks"; +import { useCanvasTermsQuery } from "@/features/canvas/hooks/canvasHooks"; const sampleCompose = `services: canvas_manager: diff --git a/src/app/course/[courseName]/CourseNavigation.tsx b/src/app/course/[courseName]/CourseNavigation.tsx index 2b1fcf1..5f45130 100644 --- a/src/app/course/[courseName]/CourseNavigation.tsx +++ b/src/app/course/[courseName]/CourseNavigation.tsx @@ -1,22 +1,10 @@ "use client"; import { Spinner } from "@/components/Spinner"; -import { - canvasAssignmentKeys, - useCanvasAssignmentsQuery, -} from "@/hooks/canvas/canvasAssignmentHooks"; -import { canvasCourseKeys } from "@/hooks/canvas/canvasCourseHooks"; -import { - canvasCourseModuleKeys, - useCanvasModulesQuery, -} from "@/hooks/canvas/canvasModuleHooks"; -import { - canvasPageKeys, - useCanvasPagesQuery, -} from "@/hooks/canvas/canvasPageHooks"; -import { - canvasQuizKeys, - useCanvasQuizzesQuery, -} from "@/hooks/canvas/canvasQuizHooks"; +import { useCanvasAssignmentsQuery, canvasAssignmentKeys } from "@/features/canvas/hooks/canvasAssignmentHooks"; +import { canvasCourseKeys } from "@/features/canvas/hooks/canvasCourseHooks"; +import { useCanvasModulesQuery, canvasCourseModuleKeys } from "@/features/canvas/hooks/canvasModuleHooks"; +import { useCanvasPagesQuery, canvasPageKeys } from "@/features/canvas/hooks/canvasPageHooks"; +import { useCanvasQuizzesQuery, canvasQuizKeys } from "@/features/canvas/hooks/canvasQuizHooks"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useQueryClient } from "@tanstack/react-query"; import Link from "next/link"; diff --git a/src/app/course/[courseName]/calendar/day/getStatus.tsx b/src/app/course/[courseName]/calendar/day/getStatus.tsx index 5f24120..5ea6b6c 100644 --- a/src/app/course/[courseName]/calendar/day/getStatus.tsx +++ b/src/app/course/[courseName]/calendar/day/getStatus.tsx @@ -1,7 +1,7 @@ "use client"; -import { CanvasAssignment } from "@/models/canvas/assignments/canvasAssignment"; -import { CanvasPage } from "@/models/canvas/pages/canvasPageModel"; -import { CanvasQuiz } from "@/models/canvas/quizzes/canvasQuizModel"; +import { CanvasAssignment } from "@/features/canvas/models/assignments/canvasAssignment"; +import { CanvasPage } from "@/features/canvas/models/pages/canvasPageModel"; +import { CanvasQuiz } from "@/features/canvas/models/quizzes/canvasQuizModel"; import { LocalAssignment } from "@/features/local/assignments/models/localAssignment"; import { dateToMarkdownString, diff --git a/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx b/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx index d173c03..cc4cc2b 100644 --- a/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx +++ b/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx @@ -1,7 +1,5 @@ "use client"; -import { useCanvasAssignmentsQuery } from "@/hooks/canvas/canvasAssignmentHooks"; -import { useCanvasPagesQuery } from "@/hooks/canvas/canvasPageHooks"; -import { useCanvasQuizzesQuery } from "@/hooks/canvas/canvasQuizHooks"; + import { LocalAssignment } from "@/features/local/assignments/models/localAssignment"; import { getDateFromStringOrThrow, @@ -13,6 +11,9 @@ import { getStatus } from "./getStatus"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; +import { useCanvasAssignmentsQuery } from "@/features/canvas/hooks/canvasAssignmentHooks"; +import { useCanvasPagesQuery } from "@/features/canvas/hooks/canvasPageHooks"; +import { useCanvasQuizzesQuery } from "@/features/canvas/hooks/canvasQuizHooks"; export function useTodaysItems(day: string) { const { data: settings } = useLocalCourseSettingsQuery(); diff --git a/src/app/course/[courseName]/modules/ModuleCanvasStatus.tsx b/src/app/course/[courseName]/modules/ModuleCanvasStatus.tsx index 238a55a..76d5af1 100644 --- a/src/app/course/[courseName]/modules/ModuleCanvasStatus.tsx +++ b/src/app/course/[courseName]/modules/ModuleCanvasStatus.tsx @@ -2,9 +2,9 @@ import CheckIcon from "@/components/icons/CheckIcon"; import { Spinner } from "@/components/Spinner"; import { - useAddCanvasModuleMutation, useCanvasModulesQuery, -} from "@/hooks/canvas/canvasModuleHooks"; + useAddCanvasModuleMutation, +} from "@/features/canvas/hooks/canvasModuleHooks"; export function ModuleCanvasStatus({ moduleName }: { moduleName: string }) { const { data: canvasModules } = useCanvasModulesQuery(); diff --git a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/AssignmentFooterButtons.tsx b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/AssignmentFooterButtons.tsx index 6dc24df..239c9bd 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/AssignmentFooterButtons.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/AssignmentFooterButtons.tsx @@ -1,18 +1,18 @@ import { useCourseContext } from "@/app/course/[courseName]/context/courseContext"; import Modal, { useModal } from "@/components/Modal"; import { Spinner } from "@/components/Spinner"; -import { - useAssignmentQuery, - useDeleteAssignmentMutation, -} from "@/features/local/assignments/assignmentHooks"; import { useCanvasAssignmentsQuery, useAddAssignmentToCanvasMutation, useDeleteAssignmentFromCanvasMutation, useUpdateAssignmentInCanvasMutation, -} from "@/hooks/canvas/canvasAssignmentHooks"; +} 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 { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; import { useRouter } from "next/navigation"; diff --git a/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx b/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx index 0cdd8e4..cd5c662 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx @@ -4,15 +4,15 @@ import { Spinner } from "@/components/Spinner"; import { useCanvasPagesQuery, useCreateCanvasPageMutation, - useDeleteCanvasPageMutation, useUpdateCanvasPageMutation, -} from "@/hooks/canvas/canvasPageHooks"; + useDeleteCanvasPageMutation, +} from "@/features/canvas/hooks/canvasPageHooks"; +import { baseCanvasUrl } from "@/features/canvas/services/canvasServiceUtils"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useDeletePageMutation, usePageQuery, } from "@/features/local/pages/pageHooks"; -import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; import { useRouter } from "next/navigation"; diff --git a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx index 130eea4..ded4ed0 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx @@ -5,13 +5,13 @@ import { useCanvasQuizzesQuery, useAddQuizToCanvasMutation, useDeleteQuizFromCanvasMutation, -} from "@/hooks/canvas/canvasQuizHooks"; +} from "@/features/canvas/hooks/canvasQuizHooks"; +import { baseCanvasUrl } from "@/features/canvas/services/canvasServiceUtils"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useDeleteQuizMutation, useQuizQuery, } from "@/features/local/quizzes/quizHooks"; -import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; import { useRouter } from "next/navigation"; diff --git a/src/app/course/[courseName]/settings/AssignmentGroupManagement.tsx b/src/app/course/[courseName]/settings/AssignmentGroupManagement.tsx index 9ecabfb..4985228 100644 --- a/src/app/course/[courseName]/settings/AssignmentGroupManagement.tsx +++ b/src/app/course/[courseName]/settings/AssignmentGroupManagement.tsx @@ -7,11 +7,11 @@ import { import { LocalAssignmentGroup } from "@/features/local/assignments/models/localAssignmentGroup"; import { useEffect, useState } from "react"; import TextInput from "../../../../components/form/TextInput"; -import { useSetAssignmentGroupsMutation } from "@/hooks/canvas/canvasCourseHooks"; import { settingsBox } from "./sharedSettings"; import { Spinner } from "@/components/Spinner"; -import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils"; import MeatballIcon from "./MeatballIcon"; +import { useSetAssignmentGroupsMutation } from "@/features/canvas/hooks/canvasCourseHooks"; +import { baseCanvasUrl } from "@/features/canvas/services/canvasServiceUtils"; export default function AssignmentGroupManagement() { const { data: settings, isPending } = useLocalCourseSettingsQuery(); diff --git a/src/app/course/[courseName]/settings/GithubClassroomList.tsx b/src/app/course/[courseName]/settings/GithubClassroomList.tsx index 18f7bd2..78b5e60 100644 --- a/src/app/course/[courseName]/settings/GithubClassroomList.tsx +++ b/src/app/course/[courseName]/settings/GithubClassroomList.tsx @@ -1,8 +1,8 @@ "use client"; import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { settingsBox } from "./sharedSettings"; -import { useCourseStudentsQuery } from "@/hooks/canvas/canvasCourseHooks"; import { Spinner } from "@/components/Spinner"; +import { useCourseStudentsQuery } from "@/features/canvas/hooks/canvasCourseHooks"; export default function GithubClassroomList() { const { data: settings } = useLocalCourseSettingsQuery(); diff --git a/src/app/course/[courseName]/settings/canvasNavigation.tsx/CanvasNavigationManagement.tsx b/src/app/course/[courseName]/settings/canvasNavigation.tsx/CanvasNavigationManagement.tsx index 22c6b8b..fb87c92 100644 --- a/src/app/course/[courseName]/settings/canvasNavigation.tsx/CanvasNavigationManagement.tsx +++ b/src/app/course/[courseName]/settings/canvasNavigation.tsx/CanvasNavigationManagement.tsx @@ -1,8 +1,10 @@ import React, { useState } from "react"; -import { useCanvasTabsQuery } from "@/hooks/canvas/canvasNavigationHooks"; -import { useUpdateCanvasTabMutation } from "@/hooks/canvas/canvasNavigationHooks"; import { Spinner } from "@/components/Spinner"; import { NavTabListItem } from "./NavTabListItem"; +import { + useCanvasTabsQuery, + useUpdateCanvasTabMutation, +} from "@/features/canvas/hooks/canvasNavigationHooks"; export const CanvasNavigationManagement = () => { const { data: tabs, isLoading, isError } = useCanvasTabsQuery(); diff --git a/src/app/course/[courseName]/settings/canvasNavigation.tsx/NavTabListItem.tsx b/src/app/course/[courseName]/settings/canvasNavigation.tsx/NavTabListItem.tsx index d8bc5a8..09264a1 100644 --- a/src/app/course/[courseName]/settings/canvasNavigation.tsx/NavTabListItem.tsx +++ b/src/app/course/[courseName]/settings/canvasNavigation.tsx/NavTabListItem.tsx @@ -1,6 +1,6 @@ import { Spinner } from "@/components/Spinner"; -import { useUpdateCanvasTabMutation } from "@/hooks/canvas/canvasNavigationHooks"; -import { CanvasCourseTab } from "@/services/canvas/canvasNavigationService"; +import { useUpdateCanvasTabMutation } from "@/features/canvas/hooks/canvasNavigationHooks"; +import { CanvasCourseTab } from "@/features/canvas/services/canvasNavigationService"; import React, { FC } from "react"; export const NavTabListItem: FC<{ diff --git a/src/hooks/canvas/canvasAssignmentHooks.ts b/src/features/canvas/hooks/canvasAssignmentHooks.ts similarity index 93% rename from src/hooks/canvas/canvasAssignmentHooks.ts rename to src/features/canvas/hooks/canvasAssignmentHooks.ts index 87ca8f7..dca0761 100644 --- a/src/hooks/canvas/canvasAssignmentHooks.ts +++ b/src/features/canvas/hooks/canvasAssignmentHooks.ts @@ -1,12 +1,12 @@ -import { canvasAssignmentService } from "@/services/canvas/canvasAssignmentService"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; import { LocalAssignment } from "@/features/local/assignments/models/localAssignment"; -import { canvasModuleService } from "@/services/canvas/canvasModuleService"; import { useAddCanvasModuleMutation, useCanvasModulesQuery, } from "./canvasModuleHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; +import { canvasModuleService } from "../services/canvasModuleService"; +import { canvasAssignmentService } from "../services/canvasAssignmentService"; export const canvasAssignmentKeys = { assignments: (canvasCourseId: number) => diff --git a/src/hooks/canvas/canvasCourseHooks.ts b/src/features/canvas/hooks/canvasCourseHooks.ts similarity index 89% rename from src/hooks/canvas/canvasCourseHooks.ts rename to src/features/canvas/hooks/canvasCourseHooks.ts index daa24eb..57ad068 100644 --- a/src/hooks/canvas/canvasCourseHooks.ts +++ b/src/features/canvas/hooks/canvasCourseHooks.ts @@ -1,11 +1,11 @@ -import { CanvasAssignmentGroup } from "@/models/canvas/assignments/canvasAssignmentGroup"; -import { CanvasCourseModel } from "@/models/canvas/courses/canvasCourseModel"; +import { CanvasAssignmentGroup } from "@/features/canvas/models/assignments/canvasAssignmentGroup"; +import { CanvasCourseModel } from "@/features/canvas/models/courses/canvasCourseModel"; import { LocalAssignmentGroup } from "@/features/local/assignments/models/localAssignmentGroup"; -import { canvasAssignmentGroupService } from "@/services/canvas/canvasAssignmentGroupService"; -import { canvasService } from "@/services/canvas/canvasService"; import { useMutation, useQuery } from "@tanstack/react-query"; -import { useUpdateLocalCourseSettingsMutation } from "../../features/local/course/localCoursesHooks"; import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; +import { useUpdateLocalCourseSettingsMutation } from "@/features/local/course/localCoursesHooks"; +import { canvasAssignmentGroupService } from "../services/canvasAssignmentGroupService"; +import { canvasService } from "../services/canvasService"; export const canvasCourseKeys = { courseDetails: (canavasId: number) => diff --git a/src/hooks/canvas/canvasHooks.ts b/src/features/canvas/hooks/canvasHooks.ts similarity index 94% rename from src/hooks/canvas/canvasHooks.ts rename to src/features/canvas/hooks/canvasHooks.ts index ced0116..9ef49f6 100644 --- a/src/hooks/canvas/canvasHooks.ts +++ b/src/features/canvas/hooks/canvasHooks.ts @@ -1,5 +1,5 @@ -import { canvasService } from "@/services/canvas/canvasService"; import { useSuspenseQuery } from "@tanstack/react-query"; +import { canvasService } from "../services/canvasService"; export const canvasKeys = { allTerms: ["all canvas terms"] as const, diff --git a/src/hooks/canvas/canvasModuleHooks.ts b/src/features/canvas/hooks/canvasModuleHooks.ts similarity index 84% rename from src/hooks/canvas/canvasModuleHooks.ts rename to src/features/canvas/hooks/canvasModuleHooks.ts index 8750310..9cfc074 100644 --- a/src/hooks/canvas/canvasModuleHooks.ts +++ b/src/features/canvas/hooks/canvasModuleHooks.ts @@ -1,6 +1,6 @@ -import { canvasModuleService } from "@/services/canvas/canvasModuleService"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; +import { canvasModuleService } from "../services/canvasModuleService"; export const canvasCourseModuleKeys = { modules: (canvasId: number) => ["canvas", canvasId, "module list"] as const, diff --git a/src/hooks/canvas/canvasNavigationHooks.tsx b/src/features/canvas/hooks/canvasNavigationHooks.tsx similarity index 86% rename from src/hooks/canvas/canvasNavigationHooks.tsx rename to src/features/canvas/hooks/canvasNavigationHooks.tsx index 653de83..9fffe66 100644 --- a/src/hooks/canvas/canvasNavigationHooks.tsx +++ b/src/features/canvas/hooks/canvasNavigationHooks.tsx @@ -1,6 +1,6 @@ import { useQuery, useQueryClient, useMutation } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; -import { canvasNavigationService } from "@/services/canvas/canvasNavigationService"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; +import { canvasNavigationService } from "../services/canvasNavigationService"; export const canvasCourseTabKeys = { tabs: (canvasId: number) => ["canvas", canvasId, "tabs list"] as const, diff --git a/src/hooks/canvas/canvasPageHooks.ts b/src/features/canvas/hooks/canvasPageHooks.ts similarity index 92% rename from src/hooks/canvas/canvasPageHooks.ts rename to src/features/canvas/hooks/canvasPageHooks.ts index eb0df50..9dceb55 100644 --- a/src/hooks/canvas/canvasPageHooks.ts +++ b/src/features/canvas/hooks/canvasPageHooks.ts @@ -1,12 +1,12 @@ import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; -import { canvasPageService } from "@/services/canvas/canvasPageService"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; -import { canvasModuleService } from "@/services/canvas/canvasModuleService"; import { useCanvasModulesQuery, useAddCanvasModuleMutation, } from "./canvasModuleHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; +import { canvasModuleService } from "../services/canvasModuleService"; +import { canvasPageService } from "../services/canvasPageService"; export const canvasPageKeys = { pagesInCourse: (courseCanvasId: number) => [ diff --git a/src/hooks/canvas/canvasQuizHooks.ts b/src/features/canvas/hooks/canvasQuizHooks.ts similarity index 90% rename from src/hooks/canvas/canvasQuizHooks.ts rename to src/features/canvas/hooks/canvasQuizHooks.ts index 87becfa..d742681 100644 --- a/src/hooks/canvas/canvasQuizHooks.ts +++ b/src/features/canvas/hooks/canvasQuizHooks.ts @@ -1,12 +1,12 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; -import { canvasQuizService } from "@/services/canvas/canvasQuizService"; import { useAddCanvasModuleMutation, useCanvasModulesQuery, } from "./canvasModuleHooks"; -import { canvasModuleService } from "@/services/canvas/canvasModuleService"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; +import { canvasModuleService } from "../services/canvasModuleService"; +import { canvasQuizService } from "../services/canvasQuizService"; export const canvasQuizKeys = { quizzes: (canvasCourseId: number) => diff --git a/src/models/canvas/assignments/canvasAssignment.ts b/src/features/canvas/models/assignments/canvasAssignment.ts similarity index 100% rename from src/models/canvas/assignments/canvasAssignment.ts rename to src/features/canvas/models/assignments/canvasAssignment.ts diff --git a/src/models/canvas/assignments/canvasAssignmentDate.ts b/src/features/canvas/models/assignments/canvasAssignmentDate.ts similarity index 100% rename from src/models/canvas/assignments/canvasAssignmentDate.ts rename to src/features/canvas/models/assignments/canvasAssignmentDate.ts diff --git a/src/models/canvas/assignments/canvasAssignmentGroup.ts b/src/features/canvas/models/assignments/canvasAssignmentGroup.ts similarity index 100% rename from src/models/canvas/assignments/canvasAssignmentGroup.ts rename to src/features/canvas/models/assignments/canvasAssignmentGroup.ts diff --git a/src/models/canvas/assignments/canvasAssignmentOverride.ts b/src/features/canvas/models/assignments/canvasAssignmentOverride.ts similarity index 100% rename from src/models/canvas/assignments/canvasAssignmentOverride.ts rename to src/features/canvas/models/assignments/canvasAssignmentOverride.ts diff --git a/src/models/canvas/assignments/canvasExternalToolTagAttributes.ts b/src/features/canvas/models/assignments/canvasExternalToolTagAttributes.ts similarity index 100% rename from src/models/canvas/assignments/canvasExternalToolTagAttributes.ts rename to src/features/canvas/models/assignments/canvasExternalToolTagAttributes.ts diff --git a/src/models/canvas/assignments/canvasLockInfo.ts b/src/features/canvas/models/assignments/canvasLockInfo.ts similarity index 100% rename from src/models/canvas/assignments/canvasLockInfo.ts rename to src/features/canvas/models/assignments/canvasLockInfo.ts diff --git a/src/models/canvas/assignments/canvasRubric.ts b/src/features/canvas/models/assignments/canvasRubric.ts similarity index 100% rename from src/models/canvas/assignments/canvasRubric.ts rename to src/features/canvas/models/assignments/canvasRubric.ts diff --git a/src/models/canvas/assignments/canvasRubricAssociation.ts b/src/features/canvas/models/assignments/canvasRubricAssociation.ts similarity index 100% rename from src/models/canvas/assignments/canvasRubricAssociation.ts rename to src/features/canvas/models/assignments/canvasRubricAssociation.ts diff --git a/src/models/canvas/assignments/canvasRubricCreationResponse.ts b/src/features/canvas/models/assignments/canvasRubricCreationResponse.ts similarity index 100% rename from src/models/canvas/assignments/canvasRubricCreationResponse.ts rename to src/features/canvas/models/assignments/canvasRubricCreationResponse.ts diff --git a/src/models/canvas/assignments/canvasRubricCriteria.ts b/src/features/canvas/models/assignments/canvasRubricCriteria.ts similarity index 100% rename from src/models/canvas/assignments/canvasRubricCriteria.ts rename to src/features/canvas/models/assignments/canvasRubricCriteria.ts diff --git a/src/models/canvas/assignments/canvasTurnitinSettings.ts b/src/features/canvas/models/assignments/canvasTurnitinSettings.ts similarity index 100% rename from src/models/canvas/assignments/canvasTurnitinSettings.ts rename to src/features/canvas/models/assignments/canvasTurnitinSettings.ts diff --git a/src/models/canvas/courses/canvasCalendarLinkModel.ts b/src/features/canvas/models/courses/canvasCalendarLinkModel.ts similarity index 100% rename from src/models/canvas/courses/canvasCalendarLinkModel.ts rename to src/features/canvas/models/courses/canvasCalendarLinkModel.ts diff --git a/src/models/canvas/courses/canvasCourseModel.ts b/src/features/canvas/models/courses/canvasCourseModel.ts similarity index 100% rename from src/models/canvas/courses/canvasCourseModel.ts rename to src/features/canvas/models/courses/canvasCourseModel.ts diff --git a/src/models/canvas/courses/canvasCourseProgressModel.ts b/src/features/canvas/models/courses/canvasCourseProgressModel.ts similarity index 100% rename from src/models/canvas/courses/canvasCourseProgressModel.ts rename to src/features/canvas/models/courses/canvasCourseProgressModel.ts diff --git a/src/models/canvas/courses/canvasCourseSettingsModel.ts b/src/features/canvas/models/courses/canvasCourseSettingsModel.ts similarity index 100% rename from src/models/canvas/courses/canvasCourseSettingsModel.ts rename to src/features/canvas/models/courses/canvasCourseSettingsModel.ts diff --git a/src/models/canvas/courses/canvasCourseStudentModel.ts b/src/features/canvas/models/courses/canvasCourseStudentModel.ts similarity index 100% rename from src/models/canvas/courses/canvasCourseStudentModel.ts rename to src/features/canvas/models/courses/canvasCourseStudentModel.ts diff --git a/src/models/canvas/courses/canvasTermModel.ts b/src/features/canvas/models/courses/canvasTermModel.ts similarity index 100% rename from src/models/canvas/courses/canvasTermModel.ts rename to src/features/canvas/models/courses/canvasTermModel.ts diff --git a/src/models/canvas/discussions/canvasDiscussionModelTopic.ts b/src/features/canvas/models/discussions/canvasDiscussionModelTopic.ts similarity index 100% rename from src/models/canvas/discussions/canvasDiscussionModelTopic.ts rename to src/features/canvas/models/discussions/canvasDiscussionModelTopic.ts diff --git a/src/models/canvas/discussions/canvasFileAttachmentModel.ts b/src/features/canvas/models/discussions/canvasFileAttachmentModel.ts similarity index 100% rename from src/models/canvas/discussions/canvasFileAttachmentModel.ts rename to src/features/canvas/models/discussions/canvasFileAttachmentModel.ts diff --git a/src/models/canvas/enrollmentTerms/canvasEnrollmentTermModel.ts b/src/features/canvas/models/enrollmentTerms/canvasEnrollmentTermModel.ts similarity index 100% rename from src/models/canvas/enrollmentTerms/canvasEnrollmentTermModel.ts rename to src/features/canvas/models/enrollmentTerms/canvasEnrollmentTermModel.ts diff --git a/src/models/canvas/enrollments/canvasEnrollmentModel.ts b/src/features/canvas/models/enrollments/canvasEnrollmentModel.ts similarity index 100% rename from src/models/canvas/enrollments/canvasEnrollmentModel.ts rename to src/features/canvas/models/enrollments/canvasEnrollmentModel.ts diff --git a/src/models/canvas/enrollments/canvasGradeModel.ts b/src/features/canvas/models/enrollments/canvasGradeModel.ts similarity index 100% rename from src/models/canvas/enrollments/canvasGradeModel.ts rename to src/features/canvas/models/enrollments/canvasGradeModel.ts diff --git a/src/models/canvas/modules/canvasModule.ts b/src/features/canvas/models/modules/canvasModule.ts similarity index 100% rename from src/models/canvas/modules/canvasModule.ts rename to src/features/canvas/models/modules/canvasModule.ts diff --git a/src/models/canvas/modules/canvasModuleItems.ts b/src/features/canvas/models/modules/canvasModuleItems.ts similarity index 100% rename from src/models/canvas/modules/canvasModuleItems.ts rename to src/features/canvas/models/modules/canvasModuleItems.ts diff --git a/src/models/canvas/pages/canvasPageModel.ts b/src/features/canvas/models/pages/canvasPageModel.ts similarity index 100% rename from src/models/canvas/pages/canvasPageModel.ts rename to src/features/canvas/models/pages/canvasPageModel.ts diff --git a/src/models/canvas/quizzes/canvasQuizAnswerModel.ts b/src/features/canvas/models/quizzes/canvasQuizAnswerModel.ts similarity index 100% rename from src/models/canvas/quizzes/canvasQuizAnswerModel.ts rename to src/features/canvas/models/quizzes/canvasQuizAnswerModel.ts diff --git a/src/models/canvas/quizzes/canvasQuizModel.ts b/src/features/canvas/models/quizzes/canvasQuizModel.ts similarity index 100% rename from src/models/canvas/quizzes/canvasQuizModel.ts rename to src/features/canvas/models/quizzes/canvasQuizModel.ts diff --git a/src/models/canvas/quizzes/canvasQuizPermission.ts b/src/features/canvas/models/quizzes/canvasQuizPermission.ts similarity index 100% rename from src/models/canvas/quizzes/canvasQuizPermission.ts rename to src/features/canvas/models/quizzes/canvasQuizPermission.ts diff --git a/src/models/canvas/quizzes/canvasQuizQuestionModel.ts b/src/features/canvas/models/quizzes/canvasQuizQuestionModel.ts similarity index 100% rename from src/models/canvas/quizzes/canvasQuizQuestionModel.ts rename to src/features/canvas/models/quizzes/canvasQuizQuestionModel.ts diff --git a/src/models/canvas/submissions/canvasSubmissionModel.ts b/src/features/canvas/models/submissions/canvasSubmissionModel.ts similarity index 100% rename from src/models/canvas/submissions/canvasSubmissionModel.ts rename to src/features/canvas/models/submissions/canvasSubmissionModel.ts diff --git a/src/models/canvas/users/canvasUserModel.ts b/src/features/canvas/models/users/canvasUserModel.ts similarity index 100% rename from src/models/canvas/users/canvasUserModel.ts rename to src/features/canvas/models/users/canvasUserModel.ts diff --git a/src/models/canvas/users/userDisplayModel.ts b/src/features/canvas/models/users/userDisplayModel.ts similarity index 100% rename from src/models/canvas/users/userDisplayModel.ts rename to src/features/canvas/models/users/userDisplayModel.ts diff --git a/src/services/canvas/canvasAssignmentGroupService.ts b/src/features/canvas/services/canvasAssignmentGroupService.ts similarity index 93% rename from src/services/canvas/canvasAssignmentGroupService.ts rename to src/features/canvas/services/canvasAssignmentGroupService.ts index 1d4bfce..34fd0a6 100644 --- a/src/services/canvas/canvasAssignmentGroupService.ts +++ b/src/features/canvas/services/canvasAssignmentGroupService.ts @@ -1,8 +1,8 @@ import { canvasApi, paginatedRequest } from "./canvasServiceUtils"; -import { axiosClient } from "../axiosUtils"; -import { CanvasAssignmentGroup } from "@/models/canvas/assignments/canvasAssignmentGroup"; +import { CanvasAssignmentGroup } from "@/features/canvas/models/assignments/canvasAssignmentGroup"; import { LocalAssignmentGroup } from "@/features/local/assignments/models/localAssignmentGroup"; import { rateLimitAwareDelete } from "./canvasWebRequestor"; +import { axiosClient } from "@/services/axiosUtils"; export const canvasAssignmentGroupService = { async getAll(courseId: number): Promise { diff --git a/src/services/canvas/canvasAssignmentService.ts b/src/features/canvas/services/canvasAssignmentService.ts similarity index 94% rename from src/services/canvas/canvasAssignmentService.ts rename to src/features/canvas/services/canvasAssignmentService.ts index e5c2878..108daa6 100644 --- a/src/services/canvas/canvasAssignmentService.ts +++ b/src/features/canvas/services/canvasAssignmentService.ts @@ -1,13 +1,13 @@ -import { CanvasAssignment } from "@/models/canvas/assignments/canvasAssignment"; +import { CanvasAssignment } from "@/features/canvas/models/assignments/canvasAssignment"; import { canvasApi, paginatedRequest } from "./canvasServiceUtils"; import { LocalAssignment } from "@/features/local/assignments/models/localAssignment"; -import { axiosClient } from "../axiosUtils"; -import { markdownToHTMLSafe } from "../htmlMarkdownUtils"; -import { CanvasRubricCreationResponse } from "@/models/canvas/assignments/canvasRubricCreationResponse"; +import { CanvasRubricCreationResponse } from "@/features/canvas/models/assignments/canvasRubricCreationResponse"; import { assignmentPoints } from "@/features/local/assignments/models/utils/assignmentPointsUtils"; import { getDateFromString } from "@/features/local/utils/timeUtils"; import { getRubricCriterion } from "./canvasRubricUtils"; import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; +import { axiosClient } from "@/services/axiosUtils"; +import { markdownToHTMLSafe } from "@/services/htmlMarkdownUtils"; export const canvasAssignmentService = { async getAll(courseId: number): Promise { diff --git a/src/services/canvas/canvasFileRouter.ts b/src/features/canvas/services/canvasFileRouter.ts similarity index 82% rename from src/services/canvas/canvasFileRouter.ts rename to src/features/canvas/services/canvasFileRouter.ts index e0d8975..781bcc2 100644 --- a/src/services/canvas/canvasFileRouter.ts +++ b/src/features/canvas/services/canvasFileRouter.ts @@ -1,12 +1,7 @@ +import publicProcedure from "@/services/serverFunctions/publicProcedure"; +import { router } from "@/services/serverFunctions/trpcSetup"; import { z } from "zod"; -import { - downloadUrlToTempDirectory, - uploadToCanvasPart1, - uploadToCanvasPart2, -} from "@/services/canvas/files/canvasFileService"; -import { router } from "../serverFunctions/trpcSetup"; -import publicProcedure from "../serverFunctions/publicProcedure"; - +import { downloadUrlToTempDirectory, uploadToCanvasPart1, uploadToCanvasPart2 } from "./files/canvasFileService"; const fileStorageLocation = process.env.FILE_STORAGE_LOCATION ?? "/app/public"; export const canvasFileRouter = router({ diff --git a/src/services/canvas/canvasModuleService.ts b/src/features/canvas/services/canvasModuleService.ts similarity index 87% rename from src/services/canvas/canvasModuleService.ts rename to src/features/canvas/services/canvasModuleService.ts index c8307f1..e157324 100644 --- a/src/services/canvas/canvasModuleService.ts +++ b/src/features/canvas/services/canvasModuleService.ts @@ -1,8 +1,8 @@ -import { CanvasModuleItem } from "@/models/canvas/modules/canvasModuleItems"; -import { CanvasPage } from "@/models/canvas/pages/canvasPageModel"; -import { axiosClient } from "../axiosUtils"; +import { CanvasModuleItem } from "@/features/canvas/models/modules/canvasModuleItems"; +import { CanvasPage } from "@/features/canvas/models/pages/canvasPageModel"; import { canvasApi, paginatedRequest } from "./canvasServiceUtils"; -import { CanvasModule } from "@/models/canvas/modules/canvasModule"; +import { CanvasModule } from "@/features/canvas/models/modules/canvasModule"; +import { axiosClient } from "@/services/axiosUtils"; export const canvasModuleService = { async updateModuleItem( @@ -63,5 +63,4 @@ export const canvasModuleService = { const response = await axiosClient.post(url, body); return response.data.id; }, - }; diff --git a/src/services/canvas/canvasNavigationService.ts b/src/features/canvas/services/canvasNavigationService.ts similarity index 94% rename from src/services/canvas/canvasNavigationService.ts rename to src/features/canvas/services/canvasNavigationService.ts index 7a7e5fb..01ca50e 100644 --- a/src/services/canvas/canvasNavigationService.ts +++ b/src/features/canvas/services/canvasNavigationService.ts @@ -1,4 +1,4 @@ -import { axiosClient } from "../axiosUtils"; +import { axiosClient } from "@/services/axiosUtils"; import { canvasApi } from "./canvasServiceUtils"; export interface CanvasCourseTab { diff --git a/src/services/canvas/canvasPageService.ts b/src/features/canvas/services/canvasPageService.ts similarity index 91% rename from src/services/canvas/canvasPageService.ts rename to src/features/canvas/services/canvasPageService.ts index 9c8735f..692a528 100644 --- a/src/services/canvas/canvasPageService.ts +++ b/src/features/canvas/services/canvasPageService.ts @@ -1,10 +1,10 @@ -import { CanvasPage } from "@/models/canvas/pages/canvasPageModel"; +import { CanvasPage } from "@/features/canvas/models/pages/canvasPageModel"; import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { canvasApi, paginatedRequest } from "./canvasServiceUtils"; -import { markdownToHTMLSafe } from "../htmlMarkdownUtils"; -import { axiosClient } from "../axiosUtils"; import { rateLimitAwareDelete } from "./canvasWebRequestor"; import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; +import { axiosClient } from "@/services/axiosUtils"; +import { markdownToHTMLSafe } from "@/services/htmlMarkdownUtils"; export const canvasPageService = { async getAll(courseId: number): Promise { diff --git a/src/services/canvas/canvasQuizService.ts b/src/features/canvas/services/canvasQuizService.ts similarity index 94% rename from src/services/canvas/canvasQuizService.ts rename to src/features/canvas/services/canvasQuizService.ts index bca6766..81e4022 100644 --- a/src/services/canvas/canvasQuizService.ts +++ b/src/features/canvas/services/canvasQuizService.ts @@ -1,17 +1,17 @@ -import { CanvasQuiz } from "@/models/canvas/quizzes/canvasQuizModel"; -import { axiosClient } from "../axiosUtils"; +import { CanvasQuiz } from "@/features/canvas/models/quizzes/canvasQuizModel"; import { canvasApi, paginatedRequest } from "./canvasServiceUtils"; -import { markdownToHTMLSafe } from "../htmlMarkdownUtils"; import { getDateFromStringOrThrow } from "@/features/local/utils/timeUtils"; import { canvasAssignmentService } from "./canvasAssignmentService"; -import { CanvasQuizQuestion } from "@/models/canvas/quizzes/canvasQuizQuestionModel"; -import { escapeMatchingText } from "../utils/questionHtmlUtils"; +import { CanvasQuizQuestion } from "@/features/canvas/models/quizzes/canvasQuizQuestionModel"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; import { LocalQuizQuestion, QuestionType, } from "@/features/local/quizzes/models/localQuizQuestion"; import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; +import { axiosClient } from "@/services/axiosUtils"; +import { markdownToHTMLSafe } from "@/services/htmlMarkdownUtils"; +import { escapeMatchingText } from "@/services/utils/questionHtmlUtils"; export const getAnswers = ( question: LocalQuizQuestion, diff --git a/src/services/canvas/canvasRubricUtils.ts b/src/features/canvas/services/canvasRubricUtils.ts similarity index 100% rename from src/services/canvas/canvasRubricUtils.ts rename to src/features/canvas/services/canvasRubricUtils.ts diff --git a/src/services/canvas/canvasService.ts b/src/features/canvas/services/canvasService.ts similarity index 80% rename from src/services/canvas/canvasService.ts rename to src/features/canvas/services/canvasService.ts index 5cbf7fc..de98a23 100644 --- a/src/services/canvas/canvasService.ts +++ b/src/features/canvas/services/canvasService.ts @@ -1,8 +1,8 @@ -import { CanvasEnrollmentTermModel } from "@/models/canvas/enrollmentTerms/canvasEnrollmentTermModel"; +import { CanvasEnrollmentTermModel } from "@/features/canvas/models/enrollmentTerms/canvasEnrollmentTermModel"; import { canvasApi, paginatedRequest } from "./canvasServiceUtils"; -import { CanvasCourseModel } from "@/models/canvas/courses/canvasCourseModel"; -import { axiosClient } from "../axiosUtils"; -import { CanvasCourseStudentModel } from "@/models/canvas/courses/canvasCourseStudentModel"; +import { CanvasCourseModel } from "@/features/canvas/models/courses/canvasCourseModel"; +import { CanvasCourseStudentModel } from "@/features/canvas/models/courses/canvasCourseStudentModel"; +import { axiosClient } from "@/services/axiosUtils"; const getAllTerms = async () => { const url = `${canvasApi}/accounts/10/terms?per_page=100`; @@ -55,7 +55,7 @@ export const canvasService = { async getEnrolledStudents(canvasCourseId: number) { console.log(`Getting students for course ${canvasCourseId}`); const url = `${canvasApi}/courses/${canvasCourseId}/users?enrollment_type=student`; - const data = await paginatedRequest({url}); + const data = await paginatedRequest({ url }); if (!data) throw new Error( diff --git a/src/services/canvas/canvasServiceUtils.ts b/src/features/canvas/services/canvasServiceUtils.ts similarity index 97% rename from src/services/canvas/canvasServiceUtils.ts rename to src/features/canvas/services/canvasServiceUtils.ts index 620db83..8b7c132 100644 --- a/src/services/canvas/canvasServiceUtils.ts +++ b/src/features/canvas/services/canvasServiceUtils.ts @@ -1,7 +1,7 @@ // services/canvasServiceUtils.ts +import { axiosClient } from "@/services/axiosUtils"; import { AxiosResponseHeaders, RawAxiosResponseHeaders } from "axios"; -import { axiosClient } from "../axiosUtils"; export const baseCanvasUrl = "https://snow.instructure.com"; export const canvasApi = baseCanvasUrl + "/api/v1"; diff --git a/src/services/canvas/canvasWebRequestor.ts b/src/features/canvas/services/canvasWebRequestor.ts similarity index 97% rename from src/services/canvas/canvasWebRequestor.ts rename to src/features/canvas/services/canvasWebRequestor.ts index 2091c73..2c496c7 100644 --- a/src/services/canvas/canvasWebRequestor.ts +++ b/src/features/canvas/services/canvasWebRequestor.ts @@ -1,5 +1,5 @@ +import { axiosClient } from "@/services/axiosUtils"; import { AxiosResponse } from "axios"; -import { axiosClient } from "../axiosUtils"; const rateLimitRetryCount = 6; const rateLimitSleepInterval = 1000; diff --git a/src/services/canvas/files/canvasFileService.ts b/src/features/canvas/services/files/canvasFileService.ts similarity index 100% rename from src/services/canvas/files/canvasFileService.ts rename to src/features/canvas/services/files/canvasFileService.ts diff --git a/src/services/canvas/rubric.test.ts b/src/features/canvas/services/rubric.test.ts similarity index 100% rename from src/services/canvas/rubric.test.ts rename to src/features/canvas/services/rubric.test.ts diff --git a/src/features/local/parsingTests/quizMarkdown/testAnswer.test.ts b/src/features/local/parsingTests/quizMarkdown/testAnswer.test.ts index 8bbb901..fb4819b 100644 --- a/src/features/local/parsingTests/quizMarkdown/testAnswer.test.ts +++ b/src/features/local/parsingTests/quizMarkdown/testAnswer.test.ts @@ -1,10 +1,11 @@ -import { QuestionType, zodQuestionType } from "@/features/local/quizzes/models/localQuizQuestion"; +import { getQuestionType, getAnswers } from "@/features/canvas/services/canvasQuizService"; +import { + QuestionType, + zodQuestionType, +} from "@/features/local/quizzes/models/localQuizQuestion"; import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils"; import { quizQuestionMarkdownUtils } from "@/features/local/quizzes/models/utils/quizQuestionMarkdownUtils"; -import { - getAnswers, - getQuestionType, -} from "@/services/canvas/canvasQuizService"; + import { describe, it, expect } from "vitest"; describe("TextAnswerTests", () => { diff --git a/src/services/axiosUtils.ts b/src/services/axiosUtils.ts index 18048e1..b578a84 100644 --- a/src/services/axiosUtils.ts +++ b/src/services/axiosUtils.ts @@ -1,7 +1,7 @@ +import { baseCanvasUrl } from "@/features/canvas/services/canvasServiceUtils"; import { isServer } from "@tanstack/react-query"; import axios, { AxiosInstance, AxiosError } from "axios"; import toast from "react-hot-toast"; -import { baseCanvasUrl } from "./canvas/canvasServiceUtils"; const canvasBaseUrl = "https://snow.instructure.com/api/v1/"; diff --git a/src/services/serverFunctions/appRouter.ts b/src/services/serverFunctions/appRouter.ts index 2d46500..efae573 100644 --- a/src/services/serverFunctions/appRouter.ts +++ b/src/services/serverFunctions/appRouter.ts @@ -8,7 +8,7 @@ import { pageRouter } from "../../features/local/pages/pageRouter"; import { quizRouter } from "../../features/local/quizzes/quizRouter"; import { settingsRouter } from "../../features/local/course/settingsRouter"; import { moduleRouter } from "@/features/local/modules/moduleRouter"; -import { canvasFileRouter } from "../canvas/canvasFileRouter"; +import { canvasFileRouter } from "@/features/canvas/services/canvasFileRouter"; export const trpcAppRouter = router({ assignment: assignmentRouter,