mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 07:38:33 -06:00
no errors when viewing a different course
This commit is contained in:
@@ -17,8 +17,7 @@ if (!isServer) {
|
||||
} else {
|
||||
const token = process.env.CANVAS_TOKEN;
|
||||
if (!token) {
|
||||
console.error("CANVAS_TOKEN not in environment")
|
||||
// throw new Error("CANVAS_TOKEN not in environment");
|
||||
console.error("CANVAS_TOKEN not in environment");
|
||||
} else {
|
||||
axiosClient.interceptors.request.use((config) => {
|
||||
if (config.url && config.url.startsWith(canvasBaseUrl)) {
|
||||
@@ -32,28 +31,37 @@ if (!isServer) {
|
||||
axiosClient.interceptors.response.use(
|
||||
(response) => response,
|
||||
(error: AxiosError) => {
|
||||
if (error.response) {
|
||||
// console.log("response error", error.response);
|
||||
const responseErrorText =
|
||||
typeof error.response.data === "object"
|
||||
? (error.response.data as any).error
|
||||
: error.response.data;
|
||||
if (!isServer) {
|
||||
toast.error(
|
||||
`Error: ${error.response.status} - ${responseErrorText}, ${decodeURI(
|
||||
error.response.config.url ?? ""
|
||||
)}`
|
||||
);
|
||||
}
|
||||
} else if (error.request) {
|
||||
if (!isServer) {
|
||||
toast.error("Error: No response from server");
|
||||
}
|
||||
} else {
|
||||
if (!isServer) {
|
||||
toast.error(`Error: ${error.message}`);
|
||||
}
|
||||
}
|
||||
const errorMessage = getAxiosErrorMessage(error);
|
||||
if (errorMessage) toast.error(errorMessage);
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
export function getAxiosErrorMessage(error: AxiosError) {
|
||||
if (error.response) {
|
||||
console.log("response error", error.response);
|
||||
const responseErrorText =
|
||||
typeof error.response.data === "object"
|
||||
? (error.response.data as any).error
|
||||
: error.response.data;
|
||||
|
||||
if (
|
||||
!isServer &&
|
||||
error.config?.method?.toUpperCase() !== "GET" &&
|
||||
error.response.status !== 403
|
||||
) {
|
||||
return `Error: ${
|
||||
error.response.status
|
||||
} - ${responseErrorText}, ${decodeURI(error.response.config.url ?? "")}`;
|
||||
}
|
||||
} else if (error.request) {
|
||||
if (!isServer) {
|
||||
return "Error: No response from server";
|
||||
}
|
||||
} else {
|
||||
if (!isServer) {
|
||||
return `Error: ${error.message}`;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ export const canvasModuleService = {
|
||||
async getCourseModules(canvasCourseId: number) {
|
||||
const url = `${canvasApi}/courses/${canvasCourseId}/modules`;
|
||||
const response = await paginatedRequest<CanvasModule[]>({ url });
|
||||
return response
|
||||
return response;
|
||||
},
|
||||
|
||||
async createModule(canvasCourseId: number, moduleName: string) {
|
||||
|
||||
@@ -9,11 +9,21 @@ import { LocalCourseSettings } from "@/models/local/localCourseSettings";
|
||||
export const canvasPageService = {
|
||||
async getAll(courseId: number): Promise<CanvasPage[]> {
|
||||
console.log("requesting pages");
|
||||
try {
|
||||
const url = `${canvasApi}/courses/${courseId}/pages`;
|
||||
const pages = await paginatedRequest<CanvasPage[]>({
|
||||
url,
|
||||
});
|
||||
return pages.flatMap((pageList) => pageList);
|
||||
} catch (error: any) {
|
||||
if (error?.response?.status === 403) {
|
||||
console.log(
|
||||
"Canvas API error: 403 Forbidden for pages. Returning empty array."
|
||||
);
|
||||
return [];
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
async create(
|
||||
|
||||
@@ -13,7 +13,6 @@ import { CanvasQuizQuestion } from "@/models/canvas/quizzes/canvasQuizQuestionMo
|
||||
import { LocalCourseSettings } from "@/models/local/localCourseSettings";
|
||||
import { escapeMatchingText } from "../utils/questionHtmlUtils";
|
||||
|
||||
|
||||
export const getAnswers = (
|
||||
question: LocalQuizQuestion,
|
||||
settings: LocalCourseSettings
|
||||
@@ -138,23 +137,27 @@ const createQuizQuestions = async (
|
||||
|
||||
export const canvasQuizService = {
|
||||
async getAll(canvasCourseId: number): Promise<CanvasQuiz[]> {
|
||||
const url = `${canvasApi}/courses/${canvasCourseId}/quizzes`;
|
||||
const quizzes = await paginatedRequest<CanvasQuiz[]>({ url });
|
||||
return quizzes.map((quiz) => ({
|
||||
...quiz,
|
||||
due_at: quiz.due_at ? new Date(quiz.due_at).toLocaleString() : undefined,
|
||||
lock_at: quiz.lock_at
|
||||
? new Date(quiz.lock_at).toLocaleString()
|
||||
: undefined,
|
||||
}));
|
||||
// const response = await axiosClient.get<CanvasQuiz[]>(url);
|
||||
// return response.data.map((quiz) => ({
|
||||
// ...quiz,
|
||||
// due_at: quiz.due_at ? new Date(quiz.due_at).toLocaleString() : undefined,
|
||||
// lock_at: quiz.lock_at
|
||||
// ? new Date(quiz.lock_at).toLocaleString()
|
||||
// : undefined,
|
||||
// }));
|
||||
try {
|
||||
const url = `${canvasApi}/courses/${canvasCourseId}/quizzes`;
|
||||
const quizzes = await paginatedRequest<CanvasQuiz[]>({ url });
|
||||
return quizzes.map((quiz) => ({
|
||||
...quiz,
|
||||
due_at: quiz.due_at
|
||||
? new Date(quiz.due_at).toLocaleString()
|
||||
: undefined,
|
||||
lock_at: quiz.lock_at
|
||||
? new Date(quiz.lock_at).toLocaleString()
|
||||
: undefined,
|
||||
}));
|
||||
} catch (error: any) {
|
||||
if (error?.response?.status === 403) {
|
||||
console.log(
|
||||
"Canvas API error: 403 Forbidden for quizzes. Returning empty array."
|
||||
);
|
||||
return [];
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
|
||||
async create(
|
||||
|
||||
@@ -39,7 +39,7 @@ export async function paginatedRequest<T extends any[]>(request: {
|
||||
var requestCount = 1;
|
||||
const url = new URL(request.url);
|
||||
url.searchParams.set("per_page", "100");
|
||||
|
||||
|
||||
const { data: firstData, headers: firstHeaders } = await axiosClient.get<T>(
|
||||
url.toString()
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user