From 3e371247d640d52eb1abb3604fca8d711bcf56a0 Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Wed, 23 Jul 2025 09:46:35 -0600 Subject: [PATCH] more refactoring by feature --- src/app/CourseList.tsx | 2 +- .../AddCourseToGlobalSettingsForm.tsx | 7 ++---- .../course/[courseName]/CourseNavigation.tsx | 2 +- .../[courseName]/CourseSettingsLink.tsx | 2 +- .../[courseName]/calendar/CalendarMonth.tsx | 4 ++-- .../[courseName]/calendar/CalendarWeek.tsx | 2 +- .../[courseName]/calendar/CourseCalendar.tsx | 2 +- .../course/[courseName]/calendar/day/Day.tsx | 4 ++-- .../[courseName]/calendar/day/DayTitle.tsx | 2 +- .../[courseName]/calendar/day/ItemInDay.tsx | 2 +- .../[courseName]/calendar/day/getStatus.tsx | 2 +- .../calendar/day/useTodaysItems.tsx | 2 +- .../context/CalendarItemsContextProvider.tsx | 2 +- .../context/drag/draggingContext.tsx | 2 +- .../context/drag/useItemDropOnDay.ts | 8 +++---- .../context/drag/useItemDropOnModule.ts | 2 +- .../lecture/[lectureDay]/EditLecture.tsx | 6 ++--- .../lecture/[lectureDay]/EditLectureTitle.tsx | 4 ++-- .../lecture/[lectureDay]/LectureButtons.tsx | 4 ++-- .../lecture/[lectureDay]/LecturePreview.tsx | 2 +- .../preview/LecturePreviewPage.tsx | 2 +- .../[courseName]/modules/CreateModule.tsx | 2 +- .../[courseName]/modules/ExpandableModule.tsx | 4 ++-- .../[courseName]/modules/ModuleList.tsx | 2 +- .../[courseName]/modules/NewItemForm.tsx | 6 ++--- .../AssignmentFooterButtons.tsx | 7 ++++-- .../[assignmentName]/EditAssignment.tsx | 2 +- .../getAssignmentHelpString.tsx | 2 +- .../[moduleName]/page/[pageName]/EditPage.tsx | 2 +- .../page/[pageName]/EditPageButtons.tsx | 2 +- .../[moduleName]/quiz/[quizName]/EditQuiz.tsx | 6 ++--- .../quiz/[quizName]/QuizButton.tsx | 4 ++-- .../quiz/[quizName]/QuizPreview.tsx | 7 ++++-- .../quiz/[quizName]/UpdateQuizName.tsx | 2 +- .../settings/AssignmentGroupManagement.tsx | 2 +- .../settings/DaysOfWeekSettings.tsx | 2 +- .../[courseName]/settings/DefaultDueTime.tsx | 2 +- .../settings/DefaultFileUploadTypes.tsx | 2 +- .../settings/DefaultLockOffset.tsx | 2 +- .../settings/GithubClassroomList.tsx | 2 +- .../[courseName]/settings/HolidayConfig.tsx | 2 +- .../[courseName]/settings/SettingsHeader.tsx | 2 +- .../[courseName]/settings/StartAndEndDate.tsx | 2 +- .../settings/SubmissionDefaults.tsx | 2 +- src/app/todaysLectures/OneCourseLectures.tsx | 2 +- src/app/todaysLectures/TodaysLectures.tsx | 2 +- src/components/MarkdownDisplay.tsx | 4 ++-- src/components/TimePicker.tsx | 2 +- src/components/form/DayOfWeekInput.tsx | 2 +- .../local/assignments/assignmentHooks.ts | 2 +- .../assignmentsFileStorageService.ts | 6 ++--- .../assignments/models/localAssignment.ts | 2 +- .../course}/courseItemFileStorageService.ts | 11 +++++---- .../local/course}/courseItemTypes.ts | 2 +- .../local/course}/localCourseSettings.ts | 6 ++--- .../local/course}/localCoursesHooks.ts | 0 .../course}/settingsFileStorageService.ts | 15 +++++++----- .../lectures}/lectureFileStorageService.ts | 24 ++++++++----------- .../local/lectures}/lectureHooks.ts | 0 .../local/lectures/lectureModel.ts} | 0 .../local/lectures}/lectureRouter.ts | 12 +++++----- .../local/modules}/IModuleItem.ts | 0 .../local/modules}/localCourseModuleHooks.ts | 0 .../local/modules}/localModules.ts | 4 ++-- .../modules}/moduleFileStorageService.ts | 4 ++-- .../local/modules}/moduleRouter.ts | 4 ++-- .../local/pages/localCoursePageModels.ts | 2 +- .../local/pages/pageFileStorageService.ts | 2 +- .../local/quizzes/models/localQuiz.ts | 2 +- .../local/quizzes}/quizFileStorageService.ts | 4 ++-- .../local/quizzes}/quizHooks.ts | 0 .../local/quizzes}/quizRouter.ts | 4 ++-- src/hooks/canvas/canvasAssignmentHooks.ts | 2 +- src/hooks/canvas/canvasCourseHooks.ts | 4 ++-- src/hooks/canvas/canvasModuleHooks.ts | 2 +- src/hooks/canvas/canvasNavigationHooks.tsx | 2 +- src/hooks/canvas/canvasPageHooks.ts | 2 +- src/hooks/canvas/canvasQuizHooks.ts | 2 +- .../local/tests/testSemesterImport.test.ts | 2 +- src/models/local/utils/lectureUtils.ts | 8 ++++--- .../local/utils/semesterTransferUtils.ts | 2 +- src/models/local/utils/timeUtils.ts | 2 +- .../canvas/canvasAssignmentService.ts | 2 +- src/services/canvas/canvasPageService.ts | 2 +- src/services/canvas/canvasQuizService.ts | 2 +- .../fileStorage/fileStorageService.ts | 8 +++---- .../fileStorage/utils/lectureUtils.ts | 2 +- src/services/htmlMarkdownUtils.ts | 2 +- src/services/serverFunctions/router/app.ts | 6 ++--- .../serverFunctions/router/settingsRouter.ts | 7 ++---- src/services/tests/fileStorage.test.ts | 5 +--- src/services/tests/lectureStorage.test.ts | 2 +- 92 files changed, 159 insertions(+), 158 deletions(-) rename src/{services/fileStorage => features/local/assignments}/assignmentsFileStorageService.ts (90%) rename src/{services/fileStorage => features/local/course}/courseItemFileStorageService.ts (91%) rename src/{models/local => features/local/course}/courseItemTypes.ts (84%) rename src/{models/local => features/local/course}/localCourseSettings.ts (95%) rename src/{hooks/localCourse => features/local/course}/localCoursesHooks.ts (100%) rename src/{services/fileStorage => features/local/course}/settingsFileStorageService.ts (94%) rename src/{services/fileStorage => features/local/lectures}/lectureFileStorageService.ts (90%) rename src/{hooks/localCourse => features/local/lectures}/lectureHooks.ts (100%) rename src/{models/local/lecture.ts => features/local/lectures/lectureModel.ts} (100%) rename src/{services/serverFunctions/router => features/local/lectures}/lectureRouter.ts (78%) rename src/{models/local => features/local/modules}/IModuleItem.ts (100%) rename src/{hooks/localCourse => features/local/modules}/localCourseModuleHooks.ts (100%) rename src/{models/local => features/local/modules}/localModules.ts (94%) rename src/{services/fileStorage => features/local/modules}/moduleFileStorageService.ts (82%) rename src/{services/serverFunctions/router => features/local/modules}/moduleRouter.ts (83%) rename src/{services/fileStorage => features/local/quizzes}/quizFileStorageService.ts (89%) rename src/{hooks/localCourse => features/local/quizzes}/quizHooks.ts (100%) rename src/{services/serverFunctions/router => features/local/quizzes}/quizRouter.ts (94%) diff --git a/src/app/CourseList.tsx b/src/app/CourseList.tsx index 5166b28..97785f1 100644 --- a/src/app/CourseList.tsx +++ b/src/app/CourseList.tsx @@ -1,5 +1,5 @@ "use client"; -import { useLocalCoursesSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCoursesSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { getDateKey, getTermName, diff --git a/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx b/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx index f637774..75d6cac 100644 --- a/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx +++ b/src/app/addCourse/AddCourseToGlobalSettingsForm.tsx @@ -11,17 +11,14 @@ import { useCanvasTermsQuery } from "@/hooks/canvas/canvasHooks"; import { useCreateLocalCourseMutation, useLocalCoursesSettingsQuery, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; import { CanvasCourseModel } from "@/models/canvas/courses/canvasCourseModel"; import { CanvasEnrollmentTermModel } from "@/models/canvas/enrollmentTerms/canvasEnrollmentTermModel"; import { AssignmentSubmissionType } from "@/features/local/assignments/models/assignmentSubmissionType"; -import { - DayOfWeek, - LocalCourseSettings, -} from "@/models/local/localCourseSettings"; import { getCourseUrl } from "@/services/urlUtils"; import { useRouter } from "next/navigation"; import React, { Dispatch, SetStateAction, useMemo, useState } from "react"; +import { DayOfWeek, LocalCourseSettings } from "@/features/local/course/localCourseSettings"; const sampleCompose = `services: canvas_manager: diff --git a/src/app/course/[courseName]/CourseNavigation.tsx b/src/app/course/[courseName]/CourseNavigation.tsx index 25705cb..2b1fcf1 100644 --- a/src/app/course/[courseName]/CourseNavigation.tsx +++ b/src/app/course/[courseName]/CourseNavigation.tsx @@ -17,7 +17,7 @@ import { canvasQuizKeys, useCanvasQuizzesQuery, } from "@/hooks/canvas/canvasQuizHooks"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +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]/CourseSettingsLink.tsx b/src/app/course/[courseName]/CourseSettingsLink.tsx index 453480c..9713ff5 100644 --- a/src/app/course/[courseName]/CourseSettingsLink.tsx +++ b/src/app/course/[courseName]/CourseSettingsLink.tsx @@ -1,6 +1,6 @@ "use client"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import Link from "next/link"; import { useCourseContext } from "./context/courseContext"; import { getCourseSettingsUrl } from "@/services/urlUtils"; diff --git a/src/app/course/[courseName]/calendar/CalendarMonth.tsx b/src/app/course/[courseName]/calendar/CalendarMonth.tsx index 13df28a..f5177ea 100644 --- a/src/app/course/[courseName]/calendar/CalendarMonth.tsx +++ b/src/app/course/[courseName]/calendar/CalendarMonth.tsx @@ -1,12 +1,12 @@ "use client"; import { CalendarMonthModel, getWeekNumber } from "./calendarMonthUtils"; -import { DayOfWeek } from "@/models/local/localCourseSettings"; import { Expandable } from "@/components/Expandable"; import { CalendarWeek } from "./CalendarWeek"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; import UpChevron from "@/components/icons/UpChevron"; import DownChevron from "@/components/icons/DownChevron"; +import { DayOfWeek } from "@/features/local/course/localCourseSettings"; export const CalendarMonth = ({ month }: { month: CalendarMonthModel }) => { // const weekInMilliseconds = 604_800_000; diff --git a/src/app/course/[courseName]/calendar/CalendarWeek.tsx b/src/app/course/[courseName]/calendar/CalendarWeek.tsx index 29a2cd3..fad7b84 100644 --- a/src/app/course/[courseName]/calendar/CalendarWeek.tsx +++ b/src/app/course/[courseName]/calendar/CalendarWeek.tsx @@ -1,5 +1,5 @@ "use client"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; import { getWeekNumber } from "./calendarMonthUtils"; import Day from "./day/Day"; diff --git a/src/app/course/[courseName]/calendar/CourseCalendar.tsx b/src/app/course/[courseName]/calendar/CourseCalendar.tsx index e2c4164..0892f1b 100644 --- a/src/app/course/[courseName]/calendar/CourseCalendar.tsx +++ b/src/app/course/[courseName]/calendar/CourseCalendar.tsx @@ -2,7 +2,7 @@ import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; import { getMonthsBetweenDates } from "./calendarMonthUtils"; import { CalendarMonth } from "./CalendarMonth"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useEffect, useMemo, useRef } from "react"; import CalendarItemsContextProvider from "../context/CalendarItemsContextProvider"; diff --git a/src/app/course/[courseName]/calendar/day/Day.tsx b/src/app/course/[courseName]/calendar/day/Day.tsx index 4dc0372..16cf6fb 100644 --- a/src/app/course/[courseName]/calendar/day/Day.tsx +++ b/src/app/course/[courseName]/calendar/day/Day.tsx @@ -4,11 +4,11 @@ import { getDateOnlyMarkdownString, } from "@/models/local/utils/timeUtils"; import { useDraggingContext } from "../../context/drag/draggingContext"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; -import { getDayOfWeek } from "@/models/local/localCourseSettings"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { ItemInDay } from "./ItemInDay"; import { useTodaysItems } from "./useTodaysItems"; import { DayTitle } from "./DayTitle"; +import { getDayOfWeek } from "@/features/local/course/localCourseSettings"; export default function Day({ day, month }: { day: string; month: number }) { const dayAsDate = getDateFromStringOrThrow( diff --git a/src/app/course/[courseName]/calendar/day/DayTitle.tsx b/src/app/course/[courseName]/calendar/day/DayTitle.tsx index cabf522..961ba3b 100644 --- a/src/app/course/[courseName]/calendar/day/DayTitle.tsx +++ b/src/app/course/[courseName]/calendar/day/DayTitle.tsx @@ -6,7 +6,7 @@ import NewItemForm from "../../modules/NewItemForm"; import { DraggableItem } from "../../context/drag/draggingContext"; import { useDragStyleContext } from "../../context/drag/dragStyleContext"; import { getLectureForDay } from "@/models/local/utils/lectureUtils"; -import { useLecturesSuspenseQuery } from "@/hooks/localCourse/lectureHooks"; +import { useLecturesSuspenseQuery } from "@/features/local/lectures/lectureHooks"; import ClientOnly from "@/components/ClientOnly"; import { Tooltip } from "@/components/Tooltip"; import { useRef, useState } from "react"; diff --git a/src/app/course/[courseName]/calendar/day/ItemInDay.tsx b/src/app/course/[courseName]/calendar/day/ItemInDay.tsx index 2ef9aba..b6f1cbc 100644 --- a/src/app/course/[courseName]/calendar/day/ItemInDay.tsx +++ b/src/app/course/[courseName]/calendar/day/ItemInDay.tsx @@ -1,4 +1,4 @@ -import { IModuleItem } from "@/models/local/IModuleItem"; +import { IModuleItem } from "@/features/local/modules/IModuleItem"; import { getModuleItemUrl } from "@/services/urlUtils"; import Link from "next/link"; import { ReactNode, useRef, useState } from "react"; diff --git a/src/app/course/[courseName]/calendar/day/getStatus.tsx b/src/app/course/[courseName]/calendar/day/getStatus.tsx index 6be9e86..a0f219c 100644 --- a/src/app/course/[courseName]/calendar/day/getStatus.tsx +++ b/src/app/course/[courseName]/calendar/day/getStatus.tsx @@ -3,7 +3,6 @@ import { CanvasAssignment } from "@/models/canvas/assignments/canvasAssignment"; import { CanvasPage } from "@/models/canvas/pages/canvasPageModel"; import { CanvasQuiz } from "@/models/canvas/quizzes/canvasQuizModel"; import { LocalAssignment } from "@/features/local/assignments/models/localAssignment"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; import { dateToMarkdownString, getDateFromStringOrThrow, @@ -13,6 +12,7 @@ import { htmlIsCloseEnough } from "@/services/utils/htmlIsCloseEnough"; import { ReactNode } from "react"; import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; export const getStatus = ({ item, diff --git a/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx b/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx index af2fece..d6224cf 100644 --- a/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx +++ b/src/app/course/[courseName]/calendar/day/useTodaysItems.tsx @@ -10,7 +10,7 @@ import { import { ReactNode } from "react"; import { useCalendarItemsContext } from "../../context/calendarItemsContext"; import { getStatus } from "./getStatus"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; diff --git a/src/app/course/[courseName]/context/CalendarItemsContextProvider.tsx b/src/app/course/[courseName]/context/CalendarItemsContextProvider.tsx index 2d21415..ba105a7 100644 --- a/src/app/course/[courseName]/context/CalendarItemsContextProvider.tsx +++ b/src/app/course/[courseName]/context/CalendarItemsContextProvider.tsx @@ -8,7 +8,7 @@ import { useCourseQuizzesByModuleByDateQuery, useCourseAssignmentsByModuleByDateQuery, useCoursePagesByModuleByDateQuery, -} from "@/hooks/localCourse/localCourseModuleHooks"; +} from "@/features/local/modules/localCourseModuleHooks"; export default function CalendarItemsContextProvider({ children, diff --git a/src/app/course/[courseName]/context/drag/draggingContext.tsx b/src/app/course/[courseName]/context/drag/draggingContext.tsx index 814ba8e..c8c7b29 100644 --- a/src/app/course/[courseName]/context/drag/draggingContext.tsx +++ b/src/app/course/[courseName]/context/drag/draggingContext.tsx @@ -1,5 +1,5 @@ "use client"; -import { IModuleItem } from "@/models/local/IModuleItem"; +import { IModuleItem } from "@/features/local/modules/IModuleItem"; import { createContext, useContext, DragEvent } from "react"; export interface DraggableItem { diff --git a/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts b/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts index bb6347e..4060376 100644 --- a/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts +++ b/src/app/course/[courseName]/context/drag/useItemDropOnDay.ts @@ -2,11 +2,11 @@ import { useLecturesSuspenseQuery, useLectureUpdateMutation, -} from "@/hooks/localCourse/lectureHooks"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/lectures/lectureHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useUpdatePageMutation } from "@/features/local/pages/pageHooks"; import { LocalAssignment } from "@/features/local/assignments/models/localAssignment"; -import { Lecture } from "@/models/local/lecture"; +import { Lecture } from "@/features/local/lectures/lectureModel"; import { getLectureForDay } from "@/models/local/utils/lectureUtils"; import { getDateFromStringOrThrow, @@ -16,7 +16,7 @@ import { import { Dispatch, SetStateAction, useCallback, DragEvent } from "react"; import { DraggableItem } from "./draggingContext"; import { getNewLockDate } from "./getNewLockDate"; -import { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks"; +import { useUpdateQuizMutation } from "@/features/local/quizzes/quizHooks"; import { useCourseContext } from "../courseContext"; import { useUpdateAssignmentMutation } from "@/features/local/assignments/assignmentHooks"; import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; diff --git a/src/app/course/[courseName]/context/drag/useItemDropOnModule.ts b/src/app/course/[courseName]/context/drag/useItemDropOnModule.ts index efd6248..b3c1e5d 100644 --- a/src/app/course/[courseName]/context/drag/useItemDropOnModule.ts +++ b/src/app/course/[courseName]/context/drag/useItemDropOnModule.ts @@ -4,7 +4,7 @@ import { LocalAssignment } from "@/features/local/assignments/models/localAssign import { Dispatch, SetStateAction, useCallback, DragEvent } from "react"; import { DraggableItem } from "./draggingContext"; import { useCourseContext } from "../courseContext"; -import { useUpdateQuizMutation } from "@/hooks/localCourse/quizHooks"; +import { useUpdateQuizMutation } from "@/features/local/quizzes/quizHooks"; import { useUpdateAssignmentMutation } from "@/features/local/assignments/assignmentHooks"; import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/EditLecture.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/EditLecture.tsx index 5bd6a0d..0e2a4e1 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/EditLecture.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/EditLecture.tsx @@ -3,7 +3,7 @@ import { MonacoEditor } from "@/components/editor/MonacoEditor"; import { useLecturesSuspenseQuery, useLectureUpdateMutation, -} from "@/hooks/localCourse/lectureHooks"; +} from "@/features/local/lectures/lectureHooks"; import { lectureToString, parseLecture, @@ -13,8 +13,8 @@ import LecturePreview from "./LecturePreview"; import EditLectureTitle from "./EditLectureTitle"; import LectureButtons from "./LectureButtons"; import { useCourseContext } from "../../context/courseContext"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; -import { Lecture } from "@/models/local/lecture"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; +import { Lecture } from "@/features/local/lectures/lectureModel"; import { useAuthoritativeUpdates } from "../../utils/useAuthoritativeUpdates"; import { EditLayout } from "@/components/EditLayout"; diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx index dc0286e..955cecd 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/EditLectureTitle.tsx @@ -1,10 +1,10 @@ -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; -import { getDayOfWeek } from "@/models/local/localCourseSettings"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { getDateFromString } from "@/models/local/utils/timeUtils"; import { getLectureWeekName } from "@/services/fileStorage/utils/lectureUtils"; import { getCourseUrl, getLecturePreviewUrl } from "@/services/urlUtils"; import { useCourseContext } from "../../context/courseContext"; import Link from "next/link"; +import { getDayOfWeek } from "@/features/local/course/localCourseSettings"; export default function EditLectureTitle({ lectureDay, diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/LectureButtons.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/LectureButtons.tsx index 5438ecc..1bb98df 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/LectureButtons.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/LectureButtons.tsx @@ -6,8 +6,8 @@ import { getCourseUrl } from "@/services/urlUtils"; import { useRouter } from "next/navigation"; import { useState } from "react"; import { useCourseContext } from "../../context/courseContext"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; -import { useDeleteLectureMutation } from "@/hooks/localCourse/lectureHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; +import { useDeleteLectureMutation } from "@/features/local/lectures/lectureHooks"; import Link from "next/link"; export default function LectureButtons({ lectureDay }: { lectureDay: string }) { diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/LecturePreview.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/LecturePreview.tsx index 76c14cf..2dad58a 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/LecturePreview.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/LecturePreview.tsx @@ -1,5 +1,5 @@ import MarkdownDisplay from "@/components/MarkdownDisplay"; -import { Lecture } from "@/models/local/lecture"; +import { Lecture } from "@/features/local/lectures/lectureModel"; export default function LecturePreview({ lecture }: { lecture: Lecture }) { return ( diff --git a/src/app/course/[courseName]/lecture/[lectureDay]/preview/LecturePreviewPage.tsx b/src/app/course/[courseName]/lecture/[lectureDay]/preview/LecturePreviewPage.tsx index 5d9f0e5..d70f792 100644 --- a/src/app/course/[courseName]/lecture/[lectureDay]/preview/LecturePreviewPage.tsx +++ b/src/app/course/[courseName]/lecture/[lectureDay]/preview/LecturePreviewPage.tsx @@ -4,7 +4,7 @@ import LecturePreview from "../LecturePreview"; import { getCourseUrl, getLectureUrl } from "@/services/urlUtils"; import { useCourseContext } from "../../../context/courseContext"; import Link from "next/link"; -import { useLecturesSuspenseQuery } from "@/hooks/localCourse/lectureHooks"; +import { useLecturesSuspenseQuery } from "@/features/local/lectures/lectureHooks"; export default function LecturePreviewPage({ lectureDay, diff --git a/src/app/course/[courseName]/modules/CreateModule.tsx b/src/app/course/[courseName]/modules/CreateModule.tsx index b9ac7a1..f340539 100644 --- a/src/app/course/[courseName]/modules/CreateModule.tsx +++ b/src/app/course/[courseName]/modules/CreateModule.tsx @@ -1,6 +1,6 @@ import { Expandable } from "@/components/Expandable"; import TextInput from "@/components/form/TextInput"; -import { useCreateModuleMutation } from "@/hooks/localCourse/localCourseModuleHooks"; +import { useCreateModuleMutation } from "@/features/local/modules/localCourseModuleHooks"; import React, { useState } from "react"; import { useCourseContext } from "../context/courseContext"; diff --git a/src/app/course/[courseName]/modules/ExpandableModule.tsx b/src/app/course/[courseName]/modules/ExpandableModule.tsx index 99f1e61..cfd8594 100644 --- a/src/app/course/[courseName]/modules/ExpandableModule.tsx +++ b/src/app/course/[courseName]/modules/ExpandableModule.tsx @@ -1,6 +1,6 @@ "use client"; import { usePagesQueries } from "@/features/local/pages/pageHooks"; -import { IModuleItem } from "@/models/local/IModuleItem"; +import { IModuleItem } from "@/features/local/modules/IModuleItem"; import { getDateFromString, getDateFromStringOrThrow, @@ -21,7 +21,7 @@ import { getModuleItemUrl } from "@/services/urlUtils"; import { useCourseContext } from "../context/courseContext"; import { Expandable } from "../../../../components/Expandable"; import { useDragStyleContext } from "../context/drag/dragStyleContext"; -import { useQuizzesQueries } from "@/hooks/localCourse/quizHooks"; +import { useQuizzesQueries } from "@/features/local/quizzes/quizHooks"; import { useTRPC } from "@/services/serverFunctions/trpcClient"; import { useSuspenseQueries } from "@tanstack/react-query"; import { useAssignmentNamesQuery } from "@/features/local/assignments/assignmentHooks"; diff --git a/src/app/course/[courseName]/modules/ModuleList.tsx b/src/app/course/[courseName]/modules/ModuleList.tsx index f7b7c15..13858b6 100644 --- a/src/app/course/[courseName]/modules/ModuleList.tsx +++ b/src/app/course/[courseName]/modules/ModuleList.tsx @@ -1,5 +1,5 @@ "use client"; -import { useModuleNamesQuery } from "@/hooks/localCourse/localCourseModuleHooks"; +import { useModuleNamesQuery } from "@/features/local/modules/localCourseModuleHooks"; import ExpandableModule from "./ExpandableModule"; import CreateModule from "./CreateModule"; diff --git a/src/app/course/[courseName]/modules/NewItemForm.tsx b/src/app/course/[courseName]/modules/NewItemForm.tsx index 9edd51b..a720eca 100644 --- a/src/app/course/[courseName]/modules/NewItemForm.tsx +++ b/src/app/course/[courseName]/modules/NewItemForm.tsx @@ -3,14 +3,14 @@ import ButtonSelect from "@/components/ButtonSelect"; import SelectInput from "@/components/form/SelectInput"; import TextInput from "@/components/form/TextInput"; import { Spinner } from "@/components/Spinner"; -import { useModuleNamesQuery } from "@/hooks/localCourse/localCourseModuleHooks"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useModuleNamesQuery } from "@/features/local/modules/localCourseModuleHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useCreatePageMutation } from "@/features/local/pages/pageHooks"; import { LocalAssignmentGroup } from "@/features/local/assignments/models/localAssignmentGroup"; import React, { useState } from "react"; import { useCourseContext } from "../context/courseContext"; -import { useCreateQuizMutation } from "@/hooks/localCourse/quizHooks"; +import { useCreateQuizMutation } from "@/features/local/quizzes/quizHooks"; import { getDateFromString, dateToMarkdownString, 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 244f15e..6dc24df 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/AssignmentFooterButtons.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/AssignmentFooterButtons.tsx @@ -1,14 +1,17 @@ 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 { + useAssignmentQuery, + useDeleteAssignmentMutation, +} from "@/features/local/assignments/assignmentHooks"; import { useCanvasAssignmentsQuery, useAddAssignmentToCanvasMutation, useDeleteAssignmentFromCanvasMutation, useUpdateAssignmentInCanvasMutation, } from "@/hooks/canvas/canvasAssignmentHooks"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; diff --git a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/EditAssignment.tsx b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/EditAssignment.tsx index 0ab7093..10218b0 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/EditAssignment.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/EditAssignment.tsx @@ -7,7 +7,7 @@ import { import { useEffect, useState } from "react"; import AssignmentPreview from "./AssignmentPreview"; import { useCourseContext } from "@/app/course/[courseName]/context/courseContext"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import ClientOnly from "@/components/ClientOnly"; import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling"; import { useRouter } from "next/navigation"; diff --git a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/getAssignmentHelpString.tsx b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/getAssignmentHelpString.tsx index af729e9..7798565 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/getAssignmentHelpString.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/assignment/[assignmentName]/getAssignmentHelpString.tsx @@ -1,6 +1,6 @@ "use client"; import { AssignmentSubmissionType } from "@/features/local/assignments/models/assignmentSubmissionType"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; export function getAssignmentHelpString(settings: LocalCourseSettings) { const groupNames = settings.assignmentGroups.map((g) => g.name).join("\n- "); diff --git a/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPage.tsx b/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPage.tsx index 143c966..9675af9 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPage.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPage.tsx @@ -2,7 +2,7 @@ import { MonacoEditor } from "@/components/editor/MonacoEditor"; import { useEffect, useState } from "react"; import PagePreview from "./PagePreview"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import EditPageButtons from "./EditPageButtons"; import ClientOnly from "@/components/ClientOnly"; 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 a25df19..0cdd8e4 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/page/[pageName]/EditPageButtons.tsx @@ -7,7 +7,7 @@ import { useDeleteCanvasPageMutation, useUpdateCanvasPageMutation, } from "@/hooks/canvas/canvasPageHooks"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useDeletePageMutation, usePageQuery, diff --git a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx index a2a55a4..acde26a 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/EditQuiz.tsx @@ -10,14 +10,14 @@ import { useCourseContext } from "@/app/course/[courseName]/context/courseContex import { useQuizQuery, useUpdateQuizMutation, -} from "@/hooks/localCourse/quizHooks"; +} from "@/features/local/quizzes/quizHooks"; import { useAuthoritativeUpdates } from "../../../../utils/useAuthoritativeUpdates"; import { extractLabelValue } from "@/features/local/assignments/models/utils/markdownUtils"; import EditQuizHeader from "./EditQuizHeader"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { EditLayout } from "@/components/EditLayout"; import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; const helpString = (settings: LocalCourseSettings) => { const groupNames = settings.assignmentGroups.map((g) => g.name).join("\n- "); 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 2f3bb66..130eea4 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizButton.tsx @@ -6,11 +6,11 @@ import { useAddQuizToCanvasMutation, useDeleteQuizFromCanvasMutation, } from "@/hooks/canvas/canvasQuizHooks"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { useDeleteQuizMutation, useQuizQuery, -} from "@/hooks/localCourse/quizHooks"; +} from "@/features/local/quizzes/quizHooks"; import { baseCanvasUrl } from "@/services/canvas/canvasServiceUtils"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; diff --git a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizPreview.tsx b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizPreview.tsx index 22b494e..5f25b37 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizPreview.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/QuizPreview.tsx @@ -1,7 +1,10 @@ import CheckIcon from "@/components/icons/CheckIcon"; import MarkdownDisplay from "@/components/MarkdownDisplay"; -import { LocalQuizQuestion, QuestionType } from "@/features/local/quizzes/models/localQuizQuestion"; -import { useQuizQuery } from "@/hooks/localCourse/quizHooks"; +import { + LocalQuizQuestion, + QuestionType, +} from "@/features/local/quizzes/models/localQuizQuestion"; +import { useQuizQuery } from "@/features/local/quizzes/quizHooks"; import { escapeMatchingText } from "@/services/utils/questionHtmlUtils"; export default function QuizPreview({ diff --git a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/UpdateQuizName.tsx b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/UpdateQuizName.tsx index 69194a2..f1968a0 100644 --- a/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/UpdateQuizName.tsx +++ b/src/app/course/[courseName]/modules/[moduleName]/quiz/[quizName]/UpdateQuizName.tsx @@ -5,7 +5,7 @@ import { Spinner } from "@/components/Spinner"; import { useQuizQuery, useUpdateQuizMutation, -} from "@/hooks/localCourse/quizHooks"; +} from "@/features/local/quizzes/quizHooks"; import { getModuleItemUrl } from "@/services/urlUtils"; import { useRouter } from "next/navigation"; import { useState } from "react"; diff --git a/src/app/course/[courseName]/settings/AssignmentGroupManagement.tsx b/src/app/course/[courseName]/settings/AssignmentGroupManagement.tsx index c8e90d9..9ecabfb 100644 --- a/src/app/course/[courseName]/settings/AssignmentGroupManagement.tsx +++ b/src/app/course/[courseName]/settings/AssignmentGroupManagement.tsx @@ -3,7 +3,7 @@ import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; import { LocalAssignmentGroup } from "@/features/local/assignments/models/localAssignmentGroup"; import { useEffect, useState } from "react"; import TextInput from "../../../../components/form/TextInput"; diff --git a/src/app/course/[courseName]/settings/DaysOfWeekSettings.tsx b/src/app/course/[courseName]/settings/DaysOfWeekSettings.tsx index 959f059..ce5639b 100644 --- a/src/app/course/[courseName]/settings/DaysOfWeekSettings.tsx +++ b/src/app/course/[courseName]/settings/DaysOfWeekSettings.tsx @@ -4,7 +4,7 @@ import { Spinner } from "@/components/Spinner"; import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; import React from "react"; export default function DaysOfWeekSettings() { diff --git a/src/app/course/[courseName]/settings/DefaultDueTime.tsx b/src/app/course/[courseName]/settings/DefaultDueTime.tsx index 40bebba..e2950e9 100644 --- a/src/app/course/[courseName]/settings/DefaultDueTime.tsx +++ b/src/app/course/[courseName]/settings/DefaultDueTime.tsx @@ -3,7 +3,7 @@ import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; import { TimePicker } from "../../../../components/TimePicker"; import { useState } from "react"; import DefaultLockOffset from "./DefaultLockOffset"; diff --git a/src/app/course/[courseName]/settings/DefaultFileUploadTypes.tsx b/src/app/course/[courseName]/settings/DefaultFileUploadTypes.tsx index 5ce7f21..8f29351 100644 --- a/src/app/course/[courseName]/settings/DefaultFileUploadTypes.tsx +++ b/src/app/course/[courseName]/settings/DefaultFileUploadTypes.tsx @@ -3,7 +3,7 @@ import TextInput from "@/components/form/TextInput"; import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; import { useState, useEffect } from "react"; import { settingsBox } from "./sharedSettings"; diff --git a/src/app/course/[courseName]/settings/DefaultLockOffset.tsx b/src/app/course/[courseName]/settings/DefaultLockOffset.tsx index a2d009f..4438a1e 100644 --- a/src/app/course/[courseName]/settings/DefaultLockOffset.tsx +++ b/src/app/course/[courseName]/settings/DefaultLockOffset.tsx @@ -4,7 +4,7 @@ import TextInput from "@/components/form/TextInput"; import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; import { useEffect, useState } from "react"; export default function DefaultLockOffset() { diff --git a/src/app/course/[courseName]/settings/GithubClassroomList.tsx b/src/app/course/[courseName]/settings/GithubClassroomList.tsx index 800d830..18f7bd2 100644 --- a/src/app/course/[courseName]/settings/GithubClassroomList.tsx +++ b/src/app/course/[courseName]/settings/GithubClassroomList.tsx @@ -1,5 +1,5 @@ "use client"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { settingsBox } from "./sharedSettings"; import { useCourseStudentsQuery } from "@/hooks/canvas/canvasCourseHooks"; import { Spinner } from "@/components/Spinner"; diff --git a/src/app/course/[courseName]/settings/HolidayConfig.tsx b/src/app/course/[courseName]/settings/HolidayConfig.tsx index a99a2a9..0a7a2fe 100644 --- a/src/app/course/[courseName]/settings/HolidayConfig.tsx +++ b/src/app/course/[courseName]/settings/HolidayConfig.tsx @@ -5,7 +5,7 @@ import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling" import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; import { getDateFromString } from "@/models/local/utils/timeUtils"; import { useEffect, useState } from "react"; import { diff --git a/src/app/course/[courseName]/settings/SettingsHeader.tsx b/src/app/course/[courseName]/settings/SettingsHeader.tsx index 9550e21..c0d6df3 100644 --- a/src/app/course/[courseName]/settings/SettingsHeader.tsx +++ b/src/app/course/[courseName]/settings/SettingsHeader.tsx @@ -1,5 +1,5 @@ "use client"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { getCourseUrl } from "@/services/urlUtils"; import Link from "next/link"; import React from "react"; diff --git a/src/app/course/[courseName]/settings/StartAndEndDate.tsx b/src/app/course/[courseName]/settings/StartAndEndDate.tsx index c84869e..c488818 100644 --- a/src/app/course/[courseName]/settings/StartAndEndDate.tsx +++ b/src/app/course/[courseName]/settings/StartAndEndDate.tsx @@ -1,5 +1,5 @@ "use client"; -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { getDateOnlyMarkdownString } from "@/models/local/utils/timeUtils"; import React from "react"; import { settingsBox } from "./sharedSettings"; diff --git a/src/app/course/[courseName]/settings/SubmissionDefaults.tsx b/src/app/course/[courseName]/settings/SubmissionDefaults.tsx index 1179b83..aea8aab 100644 --- a/src/app/course/[courseName]/settings/SubmissionDefaults.tsx +++ b/src/app/course/[courseName]/settings/SubmissionDefaults.tsx @@ -3,7 +3,7 @@ import SelectInput from "@/components/form/SelectInput"; import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; import { AssignmentSubmissionType, AssignmentSubmissionTypeList, diff --git a/src/app/todaysLectures/OneCourseLectures.tsx b/src/app/todaysLectures/OneCourseLectures.tsx index 518aeb0..c362a89 100644 --- a/src/app/todaysLectures/OneCourseLectures.tsx +++ b/src/app/todaysLectures/OneCourseLectures.tsx @@ -3,7 +3,7 @@ import { getLecturePreviewUrl } from "@/services/urlUtils"; import Link from "next/link"; import { useCourseContext } from "../course/[courseName]/context/courseContext"; -import { useLecturesSuspenseQuery as useLecturesQuery } from "@/hooks/localCourse/lectureHooks"; +import { useLecturesSuspenseQuery as useLecturesQuery } from "@/features/local/lectures/lectureHooks"; import { getLectureForDay } from "@/models/local/utils/lectureUtils"; import { getDateOnlyMarkdownString } from "@/models/local/utils/timeUtils"; diff --git a/src/app/todaysLectures/TodaysLectures.tsx b/src/app/todaysLectures/TodaysLectures.tsx index a4a462e..ef0863c 100644 --- a/src/app/todaysLectures/TodaysLectures.tsx +++ b/src/app/todaysLectures/TodaysLectures.tsx @@ -1,6 +1,6 @@ "use client"; -import { useLocalCoursesSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCoursesSettingsQuery } from "@/features/local/course/localCoursesHooks"; import OneCourseLectures from "./OneCourseLectures"; import { SuspenseAndErrorHandling } from "@/components/SuspenseAndErrorHandling"; import CourseContextProvider from "../course/[courseName]/context/CourseContextProvider"; diff --git a/src/components/MarkdownDisplay.tsx b/src/components/MarkdownDisplay.tsx index 8f0b5d4..069af69 100644 --- a/src/components/MarkdownDisplay.tsx +++ b/src/components/MarkdownDisplay.tsx @@ -1,7 +1,7 @@ -import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "@/features/local/course/localCoursesHooks"; import { SuspenseAndErrorHandling } from "./SuspenseAndErrorHandling"; import { markdownToHTMLSafe } from "@/services/htmlMarkdownUtils"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; export default function MarkdownDisplay({ markdown, diff --git a/src/components/TimePicker.tsx b/src/components/TimePicker.tsx index f15a66a..e4cb61b 100644 --- a/src/components/TimePicker.tsx +++ b/src/components/TimePicker.tsx @@ -1,5 +1,5 @@ "use client"; -import { SimpleTimeOnly } from "@/models/local/localCourseSettings"; +import { SimpleTimeOnly } from "@/features/local/course/localCourseSettings"; import { FC } from "react"; export const TimePicker: FC<{ diff --git a/src/components/form/DayOfWeekInput.tsx b/src/components/form/DayOfWeekInput.tsx index 72026c3..e24cc42 100644 --- a/src/components/form/DayOfWeekInput.tsx +++ b/src/components/form/DayOfWeekInput.tsx @@ -1,4 +1,4 @@ -import { DayOfWeek } from "@/models/local/localCourseSettings"; +import { DayOfWeek } from "@/features/local/course/localCourseSettings"; export function DayOfWeekInput({ selectedDays, diff --git a/src/features/local/assignments/assignmentHooks.ts b/src/features/local/assignments/assignmentHooks.ts index f32e38d..df9f608 100644 --- a/src/features/local/assignments/assignmentHooks.ts +++ b/src/features/local/assignments/assignmentHooks.ts @@ -14,7 +14,7 @@ import { import { useLocalCourseSettingsQuery, useUpdateLocalCourseSettingsMutation, -} from "@/hooks/localCourse/localCoursesHooks"; +} from "@/features/local/course/localCoursesHooks"; export const useAssignmentQuery = ( moduleName: string, diff --git a/src/services/fileStorage/assignmentsFileStorageService.ts b/src/features/local/assignments/assignmentsFileStorageService.ts similarity index 90% rename from src/services/fileStorage/assignmentsFileStorageService.ts rename to src/features/local/assignments/assignmentsFileStorageService.ts index b11b1c3..b693da5 100644 --- a/src/services/fileStorage/assignmentsFileStorageService.ts +++ b/src/features/local/assignments/assignmentsFileStorageService.ts @@ -4,10 +4,10 @@ import { } from "@/features/local/assignments/models/localAssignment"; import { assignmentMarkdownSerializer } from "@/features/local/assignments/models/utils/assignmentMarkdownSerializer"; import path from "path"; -import { directoryOrFileExists } from "./utils/fileSystemUtils"; import { promises as fs } from "fs"; -import { courseItemFileStorageService } from "./courseItemFileStorageService"; -import { getCoursePathByName } from "./globalSettingsFileStorageService"; +import { courseItemFileStorageService } from "@/features/local/course/courseItemFileStorageService"; +import { getCoursePathByName } from "@/services/fileStorage/globalSettingsFileStorageService"; +import { directoryOrFileExists } from "@/services/fileStorage/utils/fileSystemUtils"; const getAssignmentNames = async (courseName: string, moduleName: string) => { const courseDirectory = await getCoursePathByName(courseName); diff --git a/src/features/local/assignments/models/localAssignment.ts b/src/features/local/assignments/models/localAssignment.ts index b3b9aac..d44c71d 100644 --- a/src/features/local/assignments/models/localAssignment.ts +++ b/src/features/local/assignments/models/localAssignment.ts @@ -1,4 +1,4 @@ -import { IModuleItem } from "../../../../models/local/IModuleItem"; +import { IModuleItem } from "../../modules/IModuleItem"; import { AssignmentSubmissionType, zodAssignmentSubmissionType, diff --git a/src/services/fileStorage/courseItemFileStorageService.ts b/src/features/local/course/courseItemFileStorageService.ts similarity index 91% rename from src/services/fileStorage/courseItemFileStorageService.ts rename to src/features/local/course/courseItemFileStorageService.ts index 3d6f1d2..40d4149 100644 --- a/src/services/fileStorage/courseItemFileStorageService.ts +++ b/src/features/local/course/courseItemFileStorageService.ts @@ -1,5 +1,5 @@ import path from "path"; -import { directoryOrFileExists } from "./utils/fileSystemUtils"; +import { directoryOrFileExists } from "../../../services/fileStorage/utils/fileSystemUtils"; import fs from "fs/promises"; import { LocalAssignment, @@ -10,13 +10,16 @@ import { CourseItemReturnType, CourseItemType, typeToFolder, -} from "@/models/local/courseItemTypes"; -import { getCoursePathByName } from "./globalSettingsFileStorageService"; +} from "@/features/local/course/courseItemTypes"; +import { getCoursePathByName } from "../../../services/fileStorage/globalSettingsFileStorageService"; import { localPageMarkdownUtils, LocalCoursePage, } from "@/features/local/pages/localCoursePageModels"; -import { LocalQuiz, localQuizMarkdownUtils } from "@/features/local/quizzes/models/localQuiz"; +import { + LocalQuiz, + localQuizMarkdownUtils, +} from "@/features/local/quizzes/models/localQuiz"; import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils"; const getItemFileNames = async ( diff --git a/src/models/local/courseItemTypes.ts b/src/features/local/course/courseItemTypes.ts similarity index 84% rename from src/models/local/courseItemTypes.ts rename to src/features/local/course/courseItemTypes.ts index 724bd3c..538c90f 100644 --- a/src/models/local/courseItemTypes.ts +++ b/src/features/local/course/courseItemTypes.ts @@ -1,5 +1,5 @@ import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; -import { LocalAssignment } from "../../features/local/assignments/models/localAssignment"; +import { LocalAssignment } from "../assignments/models/localAssignment"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; export type CourseItemType = "Assignment" | "Quiz" | "Page"; diff --git a/src/models/local/localCourseSettings.ts b/src/features/local/course/localCourseSettings.ts similarity index 95% rename from src/models/local/localCourseSettings.ts rename to src/features/local/course/localCourseSettings.ts index 7815664..d9da7a8 100644 --- a/src/models/local/localCourseSettings.ts +++ b/src/features/local/course/localCourseSettings.ts @@ -1,13 +1,13 @@ import { z } from "zod"; +import { parse, stringify } from "yaml"; import { AssignmentSubmissionType, zodAssignmentSubmissionType, -} from "../../features/local/assignments/models/assignmentSubmissionType"; +} from "../assignments/models/assignmentSubmissionType"; import { LocalAssignmentGroup, zodLocalAssignmentGroup, -} from "../../features/local/assignments/models/localAssignmentGroup"; -import { parse, stringify } from "yaml"; +} from "../assignments/models/localAssignmentGroup"; export interface SimpleTimeOnly { hour: number; diff --git a/src/hooks/localCourse/localCoursesHooks.ts b/src/features/local/course/localCoursesHooks.ts similarity index 100% rename from src/hooks/localCourse/localCoursesHooks.ts rename to src/features/local/course/localCoursesHooks.ts diff --git a/src/services/fileStorage/settingsFileStorageService.ts b/src/features/local/course/settingsFileStorageService.ts similarity index 94% rename from src/services/fileStorage/settingsFileStorageService.ts rename to src/features/local/course/settingsFileStorageService.ts index 2e50412..0ef6525 100644 --- a/src/services/fileStorage/settingsFileStorageService.ts +++ b/src/features/local/course/settingsFileStorageService.ts @@ -1,16 +1,19 @@ -import { - LocalCourseSettings, - localCourseYamlUtils, -} from "@/models/local/localCourseSettings"; import { promises as fs } from "fs"; import path from "path"; -import { basePath, directoryOrFileExists } from "./utils/fileSystemUtils"; +import { + basePath, + directoryOrFileExists, +} from "../../../services/fileStorage/utils/fileSystemUtils"; import { AssignmentSubmissionType } from "@/features/local/assignments/models/assignmentSubmissionType"; import { getCoursePathByName, getGlobalSettings, -} from "./globalSettingsFileStorageService"; +} from "../../../services/fileStorage/globalSettingsFileStorageService"; import { GlobalSettingsCourse } from "@/models/local/globalSettings"; +import { + LocalCourseSettings, + localCourseYamlUtils, +} from "@/features/local/course/localCourseSettings"; const getCourseSettings = async ( course: GlobalSettingsCourse diff --git a/src/services/fileStorage/lectureFileStorageService.ts b/src/features/local/lectures/lectureFileStorageService.ts similarity index 90% rename from src/services/fileStorage/lectureFileStorageService.ts rename to src/features/local/lectures/lectureFileStorageService.ts index fe25f27..d64d625 100644 --- a/src/services/fileStorage/lectureFileStorageService.ts +++ b/src/features/local/lectures/lectureFileStorageService.ts @@ -1,19 +1,15 @@ - import path from "path"; import fs from "fs/promises"; -import { - getLectureWeekName, - lectureFolderName, - lectureToString, - parseLecture, -} from "./utils/lectureUtils"; -import { Lecture } from "@/models/local/lecture"; -import { - getDayOfWeek, - LocalCourseSettings, -} from "@/models/local/localCourseSettings"; +import { Lecture } from "@/features/local/lectures/lectureModel"; import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; -import { getCoursePathByName } from "./globalSettingsFileStorageService"; +import { getCoursePathByName } from "@/services/fileStorage/globalSettingsFileStorageService"; +import { + lectureFolderName, + parseLecture, + getLectureWeekName, + lectureToString, +} from "@/services/fileStorage/utils/lectureUtils"; +import { LocalCourseSettings, getDayOfWeek } from "../course/localCourseSettings"; export async function getLectures(courseName: string) { const courseDirectory = await getCoursePathByName(courseName); @@ -105,7 +101,7 @@ export async function deleteLecture( await fs.access(lecturePath); // throws error if no file await fs.unlink(lecturePath); console.log(`File deleted: ${lecturePath}`); - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { if (error?.code === "ENOENT") { console.log(`Cannot delete lecture, file does not exist: ${lecturePath}`); diff --git a/src/hooks/localCourse/lectureHooks.ts b/src/features/local/lectures/lectureHooks.ts similarity index 100% rename from src/hooks/localCourse/lectureHooks.ts rename to src/features/local/lectures/lectureHooks.ts diff --git a/src/models/local/lecture.ts b/src/features/local/lectures/lectureModel.ts similarity index 100% rename from src/models/local/lecture.ts rename to src/features/local/lectures/lectureModel.ts diff --git a/src/services/serverFunctions/router/lectureRouter.ts b/src/features/local/lectures/lectureRouter.ts similarity index 78% rename from src/services/serverFunctions/router/lectureRouter.ts rename to src/features/local/lectures/lectureRouter.ts index a18dfda..16fe9d0 100644 --- a/src/services/serverFunctions/router/lectureRouter.ts +++ b/src/features/local/lectures/lectureRouter.ts @@ -1,13 +1,13 @@ import { z } from "zod"; -import publicProcedure from "../procedures/public"; -import { router } from "../trpcSetup"; +import publicProcedure from "../../../services/serverFunctions/procedures/public"; +import { router } from "../../../services/serverFunctions/trpcSetup"; +import { zodLecture } from "@/features/local/lectures/lectureModel"; import { - deleteLecture, getLectures, updateLecture, -} from "@/services/fileStorage/lectureFileStorageService"; -import { zodLecture } from "@/models/local/lecture"; -import { zodLocalCourseSettings } from "@/models/local/localCourseSettings"; + deleteLecture, +} from "./lectureFileStorageService"; +import { zodLocalCourseSettings } from "../course/localCourseSettings"; export const lectureRouter = router({ getLectures: publicProcedure diff --git a/src/models/local/IModuleItem.ts b/src/features/local/modules/IModuleItem.ts similarity index 100% rename from src/models/local/IModuleItem.ts rename to src/features/local/modules/IModuleItem.ts diff --git a/src/hooks/localCourse/localCourseModuleHooks.ts b/src/features/local/modules/localCourseModuleHooks.ts similarity index 100% rename from src/hooks/localCourse/localCourseModuleHooks.ts rename to src/features/local/modules/localCourseModuleHooks.ts diff --git a/src/models/local/localModules.ts b/src/features/local/modules/localModules.ts similarity index 94% rename from src/models/local/localModules.ts rename to src/features/local/modules/localModules.ts index a0f98b6..4e81773 100644 --- a/src/models/local/localModules.ts +++ b/src/features/local/modules/localModules.ts @@ -1,7 +1,7 @@ import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; -import { LocalAssignment } from "../../features/local/assignments/models/localAssignment"; +import { LocalAssignment } from "../assignments/models/localAssignment"; import { IModuleItem } from "./IModuleItem"; -import { getDateFromString } from "./utils/timeUtils"; +import { getDateFromString } from "../../../models/local/utils/timeUtils"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; export interface LocalModule { diff --git a/src/services/fileStorage/moduleFileStorageService.ts b/src/features/local/modules/moduleFileStorageService.ts similarity index 82% rename from src/services/fileStorage/moduleFileStorageService.ts rename to src/features/local/modules/moduleFileStorageService.ts index 7a882bd..be00619 100644 --- a/src/services/fileStorage/moduleFileStorageService.ts +++ b/src/features/local/modules/moduleFileStorageService.ts @@ -1,6 +1,6 @@ import { promises as fs } from "fs"; -import { lectureFolderName } from "./utils/lectureUtils"; -import { getCoursePathByName } from "./globalSettingsFileStorageService"; +import { lectureFolderName } from "../../../services/fileStorage/utils/lectureUtils"; +import { getCoursePathByName } from "../../../services/fileStorage/globalSettingsFileStorageService"; export const moduleFileStorageService = { async getModuleNames(courseName: string) { diff --git a/src/services/serverFunctions/router/moduleRouter.ts b/src/features/local/modules/moduleRouter.ts similarity index 83% rename from src/services/serverFunctions/router/moduleRouter.ts rename to src/features/local/modules/moduleRouter.ts index 01bcbbe..10000e8 100644 --- a/src/services/serverFunctions/router/moduleRouter.ts +++ b/src/features/local/modules/moduleRouter.ts @@ -1,7 +1,7 @@ import { z } from "zod"; -import publicProcedure from "../procedures/public"; -import { router } from "../trpcSetup"; import { fileStorageService } from "@/services/fileStorage/fileStorageService"; +import { router } from "@/services/serverFunctions/trpcSetup"; +import publicProcedure from "@/services/serverFunctions/procedures/public"; export const moduleRouter = router({ getModuleNames: publicProcedure diff --git a/src/features/local/pages/localCoursePageModels.ts b/src/features/local/pages/localCoursePageModels.ts index 895fc07..395bf6f 100644 --- a/src/features/local/pages/localCoursePageModels.ts +++ b/src/features/local/pages/localCoursePageModels.ts @@ -1,4 +1,4 @@ -import { IModuleItem } from "@/models/local/IModuleItem"; +import { IModuleItem } from "@/features/local/modules/IModuleItem"; import { verifyDateOrThrow } from "@/models/local/utils/timeUtils"; import { z } from "zod"; import { extractLabelValue } from "../assignments/models/utils/markdownUtils"; diff --git a/src/features/local/pages/pageFileStorageService.ts b/src/features/local/pages/pageFileStorageService.ts index 4b5b13d..d559417 100644 --- a/src/features/local/pages/pageFileStorageService.ts +++ b/src/features/local/pages/pageFileStorageService.ts @@ -1,6 +1,6 @@ import { promises as fs } from "fs"; import path from "path"; -import { courseItemFileStorageService } from "../../../services/fileStorage/courseItemFileStorageService"; +import { courseItemFileStorageService } from "../course/courseItemFileStorageService"; import { getCoursePathByName } from "../../../services/fileStorage/globalSettingsFileStorageService"; import { LocalCoursePage, diff --git a/src/features/local/quizzes/models/localQuiz.ts b/src/features/local/quizzes/models/localQuiz.ts index 5190b15..af4e6e3 100644 --- a/src/features/local/quizzes/models/localQuiz.ts +++ b/src/features/local/quizzes/models/localQuiz.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { LocalQuizQuestion, zodLocalQuizQuestion } from "./localQuizQuestion"; import { quizMarkdownUtils } from "./utils/quizMarkdownUtils"; -import { IModuleItem } from "@/models/local/IModuleItem"; +import { IModuleItem } from "@/features/local/modules/IModuleItem"; export interface LocalQuiz extends IModuleItem { name: string; diff --git a/src/services/fileStorage/quizFileStorageService.ts b/src/features/local/quizzes/quizFileStorageService.ts similarity index 89% rename from src/services/fileStorage/quizFileStorageService.ts rename to src/features/local/quizzes/quizFileStorageService.ts index 7a26e92..1fff5a0 100644 --- a/src/services/fileStorage/quizFileStorageService.ts +++ b/src/features/local/quizzes/quizFileStorageService.ts @@ -1,7 +1,7 @@ import path from "path"; import { promises as fs } from "fs"; -import { courseItemFileStorageService } from "./courseItemFileStorageService"; -import { getCoursePathByName } from "./globalSettingsFileStorageService"; +import { courseItemFileStorageService } from "../course/courseItemFileStorageService"; +import { getCoursePathByName } from "../../../services/fileStorage/globalSettingsFileStorageService"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; import { quizMarkdownUtils } from "@/features/local/quizzes/models/utils/quizMarkdownUtils"; diff --git a/src/hooks/localCourse/quizHooks.ts b/src/features/local/quizzes/quizHooks.ts similarity index 100% rename from src/hooks/localCourse/quizHooks.ts rename to src/features/local/quizzes/quizHooks.ts diff --git a/src/services/serverFunctions/router/quizRouter.ts b/src/features/local/quizzes/quizRouter.ts similarity index 94% rename from src/services/serverFunctions/router/quizRouter.ts rename to src/features/local/quizzes/quizRouter.ts index 47d96c1..01b2129 100644 --- a/src/services/serverFunctions/router/quizRouter.ts +++ b/src/features/local/quizzes/quizRouter.ts @@ -1,6 +1,6 @@ -import publicProcedure from "../procedures/public"; +import publicProcedure from "../../../services/serverFunctions/procedures/public"; import { z } from "zod"; -import { router } from "../trpcSetup"; +import { router } from "../../../services/serverFunctions/trpcSetup"; import { fileStorageService } from "@/services/fileStorage/fileStorageService"; import { zodLocalQuiz } from "@/features/local/quizzes/models/localQuiz"; diff --git a/src/hooks/canvas/canvasAssignmentHooks.ts b/src/hooks/canvas/canvasAssignmentHooks.ts index 1d63b0e..87ca8f7 100644 --- a/src/hooks/canvas/canvasAssignmentHooks.ts +++ b/src/hooks/canvas/canvasAssignmentHooks.ts @@ -1,6 +1,6 @@ import { canvasAssignmentService } from "@/services/canvas/canvasAssignmentService"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; import { LocalAssignment } from "@/features/local/assignments/models/localAssignment"; import { canvasModuleService } from "@/services/canvas/canvasModuleService"; import { diff --git a/src/hooks/canvas/canvasCourseHooks.ts b/src/hooks/canvas/canvasCourseHooks.ts index 9cdfd80..daa24eb 100644 --- a/src/hooks/canvas/canvasCourseHooks.ts +++ b/src/hooks/canvas/canvasCourseHooks.ts @@ -1,11 +1,11 @@ import { CanvasAssignmentGroup } from "@/models/canvas/assignments/canvasAssignmentGroup"; import { CanvasCourseModel } from "@/models/canvas/courses/canvasCourseModel"; import { LocalAssignmentGroup } from "@/features/local/assignments/models/localAssignmentGroup"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; import { canvasAssignmentGroupService } from "@/services/canvas/canvasAssignmentGroupService"; import { canvasService } from "@/services/canvas/canvasService"; import { useMutation, useQuery } from "@tanstack/react-query"; -import { useUpdateLocalCourseSettingsMutation } from "../localCourse/localCoursesHooks"; +import { useUpdateLocalCourseSettingsMutation } from "../../features/local/course/localCoursesHooks"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; export const canvasCourseKeys = { courseDetails: (canavasId: number) => diff --git a/src/hooks/canvas/canvasModuleHooks.ts b/src/hooks/canvas/canvasModuleHooks.ts index 3a45575..8750310 100644 --- a/src/hooks/canvas/canvasModuleHooks.ts +++ b/src/hooks/canvas/canvasModuleHooks.ts @@ -1,6 +1,6 @@ import { canvasModuleService } from "@/services/canvas/canvasModuleService"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; export const canvasCourseModuleKeys = { modules: (canvasId: number) => ["canvas", canvasId, "module list"] as const, diff --git a/src/hooks/canvas/canvasNavigationHooks.tsx b/src/hooks/canvas/canvasNavigationHooks.tsx index d3359d3..653de83 100644 --- a/src/hooks/canvas/canvasNavigationHooks.tsx +++ b/src/hooks/canvas/canvasNavigationHooks.tsx @@ -1,5 +1,5 @@ import { useQuery, useQueryClient, useMutation } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; import { canvasNavigationService } from "@/services/canvas/canvasNavigationService"; export const canvasCourseTabKeys = { diff --git a/src/hooks/canvas/canvasPageHooks.ts b/src/hooks/canvas/canvasPageHooks.ts index 289f9ae..eb0df50 100644 --- a/src/hooks/canvas/canvasPageHooks.ts +++ b/src/hooks/canvas/canvasPageHooks.ts @@ -1,7 +1,7 @@ import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { canvasPageService } from "@/services/canvas/canvasPageService"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; import { canvasModuleService } from "@/services/canvas/canvasModuleService"; import { useCanvasModulesQuery, diff --git a/src/hooks/canvas/canvasQuizHooks.ts b/src/hooks/canvas/canvasQuizHooks.ts index 1a946d4..87becfa 100644 --- a/src/hooks/canvas/canvasQuizHooks.ts +++ b/src/hooks/canvas/canvasQuizHooks.ts @@ -1,5 +1,5 @@ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; -import { useLocalCourseSettingsQuery } from "../localCourse/localCoursesHooks"; +import { useLocalCourseSettingsQuery } from "../../features/local/course/localCoursesHooks"; import { canvasQuizService } from "@/services/canvas/canvasQuizService"; import { useAddCanvasModuleMutation, diff --git a/src/models/local/tests/testSemesterImport.test.ts b/src/models/local/tests/testSemesterImport.test.ts index 7d9240f..9bf540a 100644 --- a/src/models/local/tests/testSemesterImport.test.ts +++ b/src/models/local/tests/testSemesterImport.test.ts @@ -6,7 +6,7 @@ import { prepPageForNewSemester, prepQuizForNewSemester, } from "../utils/semesterTransferUtils"; -import { Lecture } from "../lecture"; +import { Lecture } from "../../../features/local/lectures/lectureModel"; import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; diff --git a/src/models/local/utils/lectureUtils.ts b/src/models/local/utils/lectureUtils.ts index 6143fa7..b7e1f4f 100644 --- a/src/models/local/utils/lectureUtils.ts +++ b/src/models/local/utils/lectureUtils.ts @@ -1,9 +1,11 @@ -import { Lecture } from "../lecture"; +import { Lecture } from "../../../features/local/lectures/lectureModel"; import { getDateOnlyMarkdownString } from "./timeUtils"; -export function getLectureForDay(weeks: { weekName: string; lectures: Lecture[]; }[], dayAsDate: Date) { +export function getLectureForDay( + weeks: { weekName: string; lectures: Lecture[] }[], + dayAsDate: Date +) { return weeks .flatMap((w) => w.lectures) .find((l) => l.date == getDateOnlyMarkdownString(dayAsDate)); } - diff --git a/src/models/local/utils/semesterTransferUtils.ts b/src/models/local/utils/semesterTransferUtils.ts index f768290..404c101 100644 --- a/src/models/local/utils/semesterTransferUtils.ts +++ b/src/models/local/utils/semesterTransferUtils.ts @@ -1,6 +1,6 @@ import { LocalCoursePage } from "@/features/local/pages/localCoursePageModels"; import { LocalAssignment } from "../../../features/local/assignments/models/localAssignment"; -import { Lecture } from "../lecture"; +import { Lecture } from "../../../features/local/lectures/lectureModel"; import { dateToMarkdownString, getDateFromStringOrThrow } from "./timeUtils"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; diff --git a/src/models/local/utils/timeUtils.ts b/src/models/local/utils/timeUtils.ts index 10821fa..3a963fb 100644 --- a/src/models/local/utils/timeUtils.ts +++ b/src/models/local/utils/timeUtils.ts @@ -1,4 +1,4 @@ -import { LocalCourseSettings } from "../localCourseSettings"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; const _getDateFromAMPM = ( datePart: string, diff --git a/src/services/canvas/canvasAssignmentService.ts b/src/services/canvas/canvasAssignmentService.ts index 50900ff..2620bdc 100644 --- a/src/services/canvas/canvasAssignmentService.ts +++ b/src/services/canvas/canvasAssignmentService.ts @@ -7,7 +7,7 @@ import { CanvasRubricCreationResponse } from "@/models/canvas/assignments/canvas import { assignmentPoints } from "@/features/local/assignments/models/utils/assignmentPointsUtils"; import { getDateFromString } from "@/models/local/utils/timeUtils"; import { getRubricCriterion } from "./canvasRubricUtils"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; export const canvasAssignmentService = { async getAll(courseId: number): Promise { diff --git a/src/services/canvas/canvasPageService.ts b/src/services/canvas/canvasPageService.ts index 19b8972..9c8735f 100644 --- a/src/services/canvas/canvasPageService.ts +++ b/src/services/canvas/canvasPageService.ts @@ -4,7 +4,7 @@ import { canvasApi, paginatedRequest } from "./canvasServiceUtils"; import { markdownToHTMLSafe } from "../htmlMarkdownUtils"; import { axiosClient } from "../axiosUtils"; import { rateLimitAwareDelete } from "./canvasWebRequestor"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; export const canvasPageService = { async getAll(courseId: number): Promise { diff --git a/src/services/canvas/canvasQuizService.ts b/src/services/canvas/canvasQuizService.ts index 8f33e81..82c16c8 100644 --- a/src/services/canvas/canvasQuizService.ts +++ b/src/services/canvas/canvasQuizService.ts @@ -5,10 +5,10 @@ import { markdownToHTMLSafe } from "../htmlMarkdownUtils"; import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; import { canvasAssignmentService } from "./canvasAssignmentService"; import { CanvasQuizQuestion } from "@/models/canvas/quizzes/canvasQuizQuestionModel"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; import { escapeMatchingText } from "../utils/questionHtmlUtils"; import { LocalQuiz } from "@/features/local/quizzes/models/localQuiz"; import { LocalQuizQuestion, QuestionType } from "@/features/local/quizzes/models/localQuizQuestion"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; export const getAnswers = ( question: LocalQuizQuestion, diff --git a/src/services/fileStorage/fileStorageService.ts b/src/services/fileStorage/fileStorageService.ts index b347856..641ef26 100644 --- a/src/services/fileStorage/fileStorageService.ts +++ b/src/services/fileStorage/fileStorageService.ts @@ -1,12 +1,12 @@ import { promises as fs } from "fs"; import path from "path"; import { basePath, directoryOrFileExists } from "./utils/fileSystemUtils"; -import { assignmentsFileStorageService } from "./assignmentsFileStorageService"; -import { quizFileStorageService } from "./quizFileStorageService"; +import { quizFileStorageService } from "../../features/local/quizzes/quizFileStorageService"; import { pageFileStorageService } from "../../features/local/pages/pageFileStorageService"; -import { moduleFileStorageService } from "./moduleFileStorageService"; -import { settingsFileStorageService } from "./settingsFileStorageService"; +import { moduleFileStorageService } from "../../features/local/modules/moduleFileStorageService"; +import { settingsFileStorageService } from "../../features/local/course/settingsFileStorageService"; import { getCoursePathByName } from "./globalSettingsFileStorageService"; +import { assignmentsFileStorageService } from "@/features/local/assignments/assignmentsFileStorageService"; export const fileStorageService = { settings: settingsFileStorageService, diff --git a/src/services/fileStorage/utils/lectureUtils.ts b/src/services/fileStorage/utils/lectureUtils.ts index ee81984..4fa42c2 100644 --- a/src/services/fileStorage/utils/lectureUtils.ts +++ b/src/services/fileStorage/utils/lectureUtils.ts @@ -1,6 +1,6 @@ import { getWeekNumber } from "@/app/course/[courseName]/calendar/calendarMonthUtils"; import { extractLabelValue } from "@/features/local/assignments/models/utils/markdownUtils"; -import { Lecture } from "@/models/local/lecture"; +import { Lecture } from "@/features/local/lectures/lectureModel"; import { getDateFromStringOrThrow } from "@/models/local/utils/timeUtils"; export function parseLecture(fileContent: string): Lecture { diff --git a/src/services/htmlMarkdownUtils.ts b/src/services/htmlMarkdownUtils.ts index 55f43ed..00f98d8 100644 --- a/src/services/htmlMarkdownUtils.ts +++ b/src/services/htmlMarkdownUtils.ts @@ -1,8 +1,8 @@ "use client"; import { marked } from "marked"; import DOMPurify from "isomorphic-dompurify"; -import { LocalCourseSettings } from "@/models/local/localCourseSettings"; import markedKatex from "marked-katex-extension"; +import { LocalCourseSettings } from "@/features/local/course/localCourseSettings"; const mermaidExtension = { name: "mermaid", diff --git a/src/services/serverFunctions/router/app.ts b/src/services/serverFunctions/router/app.ts index 81dcaf1..23a5983 100644 --- a/src/services/serverFunctions/router/app.ts +++ b/src/services/serverFunctions/router/app.ts @@ -4,11 +4,11 @@ import { assignmentRouter } from "../../../features/local/assignments/assignment import { canvasFileRouter } from "./canvasFileRouter"; import { directoriesRouter } from "./directoriesRouter"; import { globalSettingsRouter } from "./globalSettingsRouter"; -import { lectureRouter } from "./lectureRouter"; -import { moduleRouter } from "./moduleRouter"; +import { lectureRouter } from "../../../features/local/lectures/lectureRouter"; import { pageRouter } from "../../../features/local/pages/pageRouter"; -import { quizRouter } from "./quizRouter"; +import { quizRouter } from "../../../features/local/quizzes/quizRouter"; import { settingsRouter } from "./settingsRouter"; +import { moduleRouter } from "@/features/local/modules/moduleRouter"; export const trpcAppRouter = router({ assignment: assignmentRouter, diff --git a/src/services/serverFunctions/router/settingsRouter.ts b/src/services/serverFunctions/router/settingsRouter.ts index b04ee56..0dc04d1 100644 --- a/src/services/serverFunctions/router/settingsRouter.ts +++ b/src/services/serverFunctions/router/settingsRouter.ts @@ -2,11 +2,6 @@ import publicProcedure from "../procedures/public"; import { z } from "zod"; import { router } from "../trpcSetup"; import { fileStorageService } from "@/services/fileStorage/fileStorageService"; -import { zodLocalCourseSettings } from "@/models/local/localCourseSettings"; -import { - getLectures, - updateLecture, -} from "@/services/fileStorage/lectureFileStorageService"; import { prepAssignmentForNewSemester, prepLectureForNewSemester, @@ -17,6 +12,8 @@ import { getGlobalSettings, updateGlobalSettings, } from "@/services/fileStorage/globalSettingsFileStorageService"; +import { getLectures, updateLecture } from "@/features/local/lectures/lectureFileStorageService"; +import { zodLocalCourseSettings } from "@/features/local/course/localCourseSettings"; export const settingsRouter = router({ allCoursesSettings: publicProcedure.query(async () => { diff --git a/src/services/tests/fileStorage.test.ts b/src/services/tests/fileStorage.test.ts index 7e3da50..c28fcf3 100644 --- a/src/services/tests/fileStorage.test.ts +++ b/src/services/tests/fileStorage.test.ts @@ -1,10 +1,7 @@ import { describe, it, expect, beforeEach } from "vitest"; import { promises as fs } from "fs"; -import { - DayOfWeek, - LocalCourseSettings, -} from "@/models/local/localCourseSettings"; import { fileStorageService } from "../fileStorage/fileStorageService"; +import { LocalCourseSettings, DayOfWeek } from "@/features/local/course/localCourseSettings"; describe("FileStorageTests", () => { beforeEach(async () => { diff --git a/src/services/tests/lectureStorage.test.ts b/src/services/tests/lectureStorage.test.ts index 18963dd..058dd3b 100644 --- a/src/services/tests/lectureStorage.test.ts +++ b/src/services/tests/lectureStorage.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from "vitest"; import { lectureToString } from "../fileStorage/utils/lectureUtils"; import { parseLecture } from "../fileStorage/utils/lectureUtils"; -import { Lecture } from "@/models/local/lecture"; +import { Lecture } from "@/features/local/lectures/lectureModel"; describe("can parse and stringify lectures", () => { it("can parse lecture", () => {