mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 15:18:32 -06:00
refactoring canvas files
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<{
|
||||
|
||||
@@ -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) =>
|
||||
@@ -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) =>
|
||||
@@ -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,
|
||||
@@ -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,
|
||||
@@ -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,
|
||||
@@ -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) => [
|
||||
@@ -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) =>
|
||||
@@ -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<CanvasAssignmentGroup[]> {
|
||||
@@ -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<CanvasAssignment[]> {
|
||||
@@ -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({
|
||||
@@ -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<CanvasModule>(url, body);
|
||||
return response.data.id;
|
||||
},
|
||||
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
import { axiosClient } from "../axiosUtils";
|
||||
import { axiosClient } from "@/services/axiosUtils";
|
||||
import { canvasApi } from "./canvasServiceUtils";
|
||||
|
||||
export interface CanvasCourseTab {
|
||||
@@ -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<CanvasPage[]> {
|
||||
@@ -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,
|
||||
@@ -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<CanvasCourseStudentModel[]>({url});
|
||||
const data = await paginatedRequest<CanvasCourseStudentModel[]>({ url });
|
||||
|
||||
if (!data)
|
||||
throw new Error(
|
||||
@@ -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";
|
||||
@@ -1,5 +1,5 @@
|
||||
import { axiosClient } from "@/services/axiosUtils";
|
||||
import { AxiosResponse } from "axios";
|
||||
import { axiosClient } from "../axiosUtils";
|
||||
|
||||
const rateLimitRetryCount = 6;
|
||||
const rateLimitSleepInterval = 1000;
|
||||
@@ -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", () => {
|
||||
|
||||
@@ -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/";
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user