mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 15:48:32 -06:00
linting more trpc
This commit is contained in:
@@ -1,13 +1,5 @@
|
||||
"use client";
|
||||
import { trpc } from "@/services/trpc/utils";
|
||||
import {
|
||||
getAllItemsQueryConfig,
|
||||
getItemQueryConfig,
|
||||
useDeleteItemMutation,
|
||||
useItemQuery,
|
||||
useItemsQueries,
|
||||
useUpdateItemMutation,
|
||||
} from "./courseItemHooks";
|
||||
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
|
||||
|
||||
// export const getAllAssignmentsQueryConfig = (
|
||||
@@ -36,31 +28,31 @@ export const useAssignmentQuery = (
|
||||
export const useAssignmentsQuery = (moduleName: string) => {
|
||||
const { courseName } = useCourseContext();
|
||||
console.log("rendering all assignments query");
|
||||
return trpc.assignment.getAllAssignments.useQuery({
|
||||
return trpc.assignment.getAllAssignments.useSuspenseQuery({
|
||||
moduleName,
|
||||
courseName,
|
||||
});
|
||||
};
|
||||
// useItemsQueries(moduleName, "Assignment");
|
||||
|
||||
export const useUpdateAssignmentMutation = () =>
|
||||
useUpdateItemMutation("Assignment");
|
||||
export const useUpdateAssignmentMutation = () => {
|
||||
return trpc.assignment.updateAssignment.useMutation();
|
||||
};
|
||||
|
||||
export const useCreateAssignmentMutation = ({
|
||||
courseName,
|
||||
moduleName,
|
||||
}: {
|
||||
courseName: string;
|
||||
moduleName: string;
|
||||
}) => {
|
||||
export const useCreateAssignmentMutation = () => {
|
||||
const utils = trpc.useUtils();
|
||||
return trpc.assignment.createAssignment.useMutation({
|
||||
onSuccess: () => {
|
||||
onSuccess: (_, { courseName, moduleName }) => {
|
||||
utils.assignment.getAllAssignments.invalidate({ courseName, moduleName });
|
||||
},
|
||||
});
|
||||
};
|
||||
// useCreateItemMutation("Assignment");
|
||||
|
||||
export const useDeleteAssignmentMutation = () =>
|
||||
useDeleteItemMutation("Assignment");
|
||||
export const useDeleteAssignmentMutation = () => {
|
||||
const utils = trpc.useUtils();
|
||||
return trpc.assignment.deleteAssignment.useMutation({
|
||||
onSuccess: (_, { courseName, moduleName }) => {
|
||||
utils.assignment.getAllAssignments.invalidate({ courseName, moduleName });
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,233 +1,233 @@
|
||||
import { localCourseKeys } from "./localCourseKeys";
|
||||
import {
|
||||
CourseItemReturnType,
|
||||
CourseItemType,
|
||||
} from "@/models/local/courseItemTypes";
|
||||
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
|
||||
import {
|
||||
useMutation,
|
||||
useQueryClient,
|
||||
useSuspenseQueries,
|
||||
useSuspenseQuery,
|
||||
} from "@tanstack/react-query";
|
||||
import {
|
||||
createItemOnServer,
|
||||
deleteItemOnServer,
|
||||
getAllItemsFromServer,
|
||||
getItemFromServer,
|
||||
updateItemOnServer,
|
||||
} from "./courseItemServerActions";
|
||||
// import { localCourseKeys } from "./localCourseKeys";
|
||||
// import {
|
||||
// CourseItemReturnType,
|
||||
// CourseItemType,
|
||||
// } from "@/models/local/courseItemTypes";
|
||||
// import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
|
||||
// import {
|
||||
// useMutation,
|
||||
// useQueryClient,
|
||||
// useSuspenseQueries,
|
||||
// useSuspenseQuery,
|
||||
// } from "@tanstack/react-query";
|
||||
// // import {
|
||||
// // createItemOnServer,
|
||||
// // deleteItemOnServer,
|
||||
// // getAllItemsFromServer,
|
||||
// // getItemFromServer,
|
||||
// // updateItemOnServer,
|
||||
// // } from "./courseItemServerActions";
|
||||
|
||||
export const getAllItemsQueryConfig = <T extends CourseItemType>(
|
||||
courseName: string,
|
||||
moduleName: string,
|
||||
type: T
|
||||
) => ({
|
||||
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
queryFn: async (): Promise<CourseItemReturnType<T>[]> => {
|
||||
return await getAllItemsFromServer({
|
||||
courseName,
|
||||
moduleName,
|
||||
type,
|
||||
});
|
||||
},
|
||||
});
|
||||
// export const getAllItemsQueryConfig = <T extends CourseItemType>(
|
||||
// courseName: string,
|
||||
// moduleName: string,
|
||||
// type: T
|
||||
// ) => ({
|
||||
// queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
// queryFn: async (): Promise<CourseItemReturnType<T>[]> => {
|
||||
// return await getAllItemsFromServer({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// type,
|
||||
// });
|
||||
// },
|
||||
// });
|
||||
|
||||
export const getItemQueryConfig = <T extends CourseItemType>(
|
||||
courseName: string,
|
||||
moduleName: string,
|
||||
name: string,
|
||||
type: T
|
||||
) => {
|
||||
return {
|
||||
queryKey: localCourseKeys.itemOfType(courseName, moduleName, name, type),
|
||||
queryFn: async () => {
|
||||
return await getItemFromServer({
|
||||
moduleName,
|
||||
courseName,
|
||||
itemName: name,
|
||||
type,
|
||||
});
|
||||
},
|
||||
};
|
||||
};
|
||||
// export const getItemQueryConfig = <T extends CourseItemType>(
|
||||
// courseName: string,
|
||||
// moduleName: string,
|
||||
// name: string,
|
||||
// type: T
|
||||
// ) => {
|
||||
// return {
|
||||
// queryKey: localCourseKeys.itemOfType(courseName, moduleName, name, type),
|
||||
// queryFn: async () => {
|
||||
// return await getItemFromServer({
|
||||
// moduleName,
|
||||
// courseName,
|
||||
// itemName: name,
|
||||
// type,
|
||||
// });
|
||||
// },
|
||||
// };
|
||||
// };
|
||||
|
||||
export const useItemQuery = <T extends CourseItemType>(
|
||||
moduleName: string,
|
||||
name: string,
|
||||
type: T
|
||||
) => {
|
||||
const { courseName } = useCourseContext();
|
||||
return useSuspenseQuery(
|
||||
getItemQueryConfig(courseName, moduleName, name, type)
|
||||
);
|
||||
};
|
||||
// export const useItemQuery = <T extends CourseItemType>(
|
||||
// moduleName: string,
|
||||
// name: string,
|
||||
// type: T
|
||||
// ) => {
|
||||
// const { courseName } = useCourseContext();
|
||||
// return useSuspenseQuery(
|
||||
// getItemQueryConfig(courseName, moduleName, name, type)
|
||||
// );
|
||||
// };
|
||||
|
||||
const useAllItemsQuery = <T extends CourseItemType>(
|
||||
moduleName: string,
|
||||
type: T
|
||||
) => {
|
||||
const { courseName } = useCourseContext();
|
||||
return useSuspenseQuery(getAllItemsQueryConfig(courseName, moduleName, type));
|
||||
};
|
||||
// const useAllItemsQuery = <T extends CourseItemType>(
|
||||
// moduleName: string,
|
||||
// type: T
|
||||
// ) => {
|
||||
// const { courseName } = useCourseContext();
|
||||
// return useSuspenseQuery(getAllItemsQueryConfig(courseName, moduleName, type));
|
||||
// };
|
||||
|
||||
export const useItemsQueries = <T extends CourseItemType>(
|
||||
moduleName: string,
|
||||
type: T
|
||||
) => {
|
||||
const { data: allItems } = useAllItemsQuery(moduleName, type);
|
||||
const { courseName } = useCourseContext();
|
||||
return useSuspenseQueries({
|
||||
queries: allItems.map((item) => ({
|
||||
...getItemQueryConfig(courseName, moduleName, item.name, type),
|
||||
})),
|
||||
combine: (results) => ({
|
||||
data: results.map((r) => r.data),
|
||||
pending: results.some((r) => r.isPending),
|
||||
}),
|
||||
});
|
||||
};
|
||||
// export const useItemsQueries = <T extends CourseItemType>(
|
||||
// moduleName: string,
|
||||
// type: T
|
||||
// ) => {
|
||||
// const { data: allItems } = useAllItemsQuery(moduleName, type);
|
||||
// const { courseName } = useCourseContext();
|
||||
// return useSuspenseQueries({
|
||||
// queries: allItems.map((item) => ({
|
||||
// ...getItemQueryConfig(courseName, moduleName, item.name, type),
|
||||
// })),
|
||||
// combine: (results) => ({
|
||||
// data: results.map((r) => r.data),
|
||||
// pending: results.some((r) => r.isPending),
|
||||
// }),
|
||||
// });
|
||||
// };
|
||||
|
||||
export const useUpdateItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
const { courseName } = useCourseContext();
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: async ({
|
||||
item,
|
||||
moduleName,
|
||||
previousModuleName,
|
||||
previousItemName,
|
||||
itemName,
|
||||
}: {
|
||||
item: CourseItemReturnType<T>;
|
||||
moduleName: string;
|
||||
previousModuleName: string;
|
||||
previousItemName: string;
|
||||
itemName: string;
|
||||
}) => {
|
||||
if (previousItemName !== item.name || previousModuleName !== moduleName) {
|
||||
queryClient.removeQueries({
|
||||
queryKey: localCourseKeys.itemOfType(
|
||||
courseName,
|
||||
previousModuleName,
|
||||
previousItemName,
|
||||
type
|
||||
),
|
||||
});
|
||||
queryClient.removeQueries({
|
||||
queryKey: localCourseKeys.allItemsOfType(
|
||||
courseName,
|
||||
previousModuleName,
|
||||
type
|
||||
),
|
||||
});
|
||||
}
|
||||
// export const useUpdateItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
// const { courseName } = useCourseContext();
|
||||
// const queryClient = useQueryClient();
|
||||
// return useMutation({
|
||||
// mutationFn: async ({
|
||||
// item,
|
||||
// moduleName,
|
||||
// previousModuleName,
|
||||
// previousItemName,
|
||||
// itemName,
|
||||
// }: {
|
||||
// item: CourseItemReturnType<T>;
|
||||
// moduleName: string;
|
||||
// previousModuleName: string;
|
||||
// previousItemName: string;
|
||||
// itemName: string;
|
||||
// }) => {
|
||||
// if (previousItemName !== item.name || previousModuleName !== moduleName) {
|
||||
// queryClient.removeQueries({
|
||||
// queryKey: localCourseKeys.itemOfType(
|
||||
// courseName,
|
||||
// previousModuleName,
|
||||
// previousItemName,
|
||||
// type
|
||||
// ),
|
||||
// });
|
||||
// queryClient.removeQueries({
|
||||
// queryKey: localCourseKeys.allItemsOfType(
|
||||
// courseName,
|
||||
// previousModuleName,
|
||||
// type
|
||||
// ),
|
||||
// });
|
||||
// }
|
||||
|
||||
queryClient.setQueryData(
|
||||
localCourseKeys.itemOfType(courseName, moduleName, itemName, type),
|
||||
item
|
||||
);
|
||||
await updateItemOnServer({
|
||||
courseName,
|
||||
moduleName,
|
||||
item,
|
||||
type,
|
||||
previousItemName,
|
||||
previousModuleName,
|
||||
itemName,
|
||||
});
|
||||
},
|
||||
onSuccess: async (_, { moduleName, itemName }) => {
|
||||
await queryClient.invalidateQueries({
|
||||
queryKey: localCourseKeys.itemOfType(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName,
|
||||
type
|
||||
),
|
||||
refetchType: "all",
|
||||
});
|
||||
await queryClient.invalidateQueries({
|
||||
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
refetchType: "all",
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
||||
// queryClient.setQueryData(
|
||||
// localCourseKeys.itemOfType(courseName, moduleName, itemName, type),
|
||||
// item
|
||||
// );
|
||||
// await updateItemOnServer({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// item,
|
||||
// type,
|
||||
// previousItemName,
|
||||
// previousModuleName,
|
||||
// itemName,
|
||||
// });
|
||||
// },
|
||||
// onSuccess: async (_, { moduleName, itemName }) => {
|
||||
// await queryClient.invalidateQueries({
|
||||
// queryKey: localCourseKeys.itemOfType(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// type
|
||||
// ),
|
||||
// refetchType: "all",
|
||||
// });
|
||||
// await queryClient.invalidateQueries({
|
||||
// queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
// refetchType: "all",
|
||||
// });
|
||||
// },
|
||||
// });
|
||||
// };
|
||||
|
||||
export const useCreateItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
const { courseName } = useCourseContext();
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: async ({
|
||||
item,
|
||||
moduleName,
|
||||
itemName,
|
||||
}: {
|
||||
item: CourseItemReturnType<T>;
|
||||
moduleName: string;
|
||||
itemName: string;
|
||||
}) => {
|
||||
queryClient.setQueryData(
|
||||
localCourseKeys.itemOfType(courseName, moduleName, itemName, type),
|
||||
item
|
||||
);
|
||||
await createItemOnServer({
|
||||
courseName,
|
||||
moduleName,
|
||||
item,
|
||||
type,
|
||||
itemName,
|
||||
});
|
||||
},
|
||||
onSuccess: async (_, { moduleName, itemName }) => {
|
||||
await queryClient.invalidateQueries({
|
||||
queryKey: localCourseKeys.itemOfType(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName,
|
||||
type
|
||||
),
|
||||
});
|
||||
await queryClient.invalidateQueries({
|
||||
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
||||
// export const useCreateItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
// const { courseName } = useCourseContext();
|
||||
// const queryClient = useQueryClient();
|
||||
// return useMutation({
|
||||
// mutationFn: async ({
|
||||
// item,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// }: {
|
||||
// item: CourseItemReturnType<T>;
|
||||
// moduleName: string;
|
||||
// itemName: string;
|
||||
// }) => {
|
||||
// queryClient.setQueryData(
|
||||
// localCourseKeys.itemOfType(courseName, moduleName, itemName, type),
|
||||
// item
|
||||
// );
|
||||
// await createItemOnServer({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// item,
|
||||
// type,
|
||||
// itemName,
|
||||
// });
|
||||
// },
|
||||
// onSuccess: async (_, { moduleName, itemName }) => {
|
||||
// await queryClient.invalidateQueries({
|
||||
// queryKey: localCourseKeys.itemOfType(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// type
|
||||
// ),
|
||||
// });
|
||||
// await queryClient.invalidateQueries({
|
||||
// queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
// });
|
||||
// },
|
||||
// });
|
||||
// };
|
||||
|
||||
export const useDeleteItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
const { courseName } = useCourseContext();
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: async ({
|
||||
moduleName,
|
||||
itemName,
|
||||
}: {
|
||||
moduleName: string;
|
||||
itemName: string;
|
||||
}) => {
|
||||
await deleteItemOnServer({
|
||||
courseName,
|
||||
itemName,
|
||||
moduleName,
|
||||
type,
|
||||
});
|
||||
},
|
||||
onSuccess: async (_, { moduleName, itemName }) => {
|
||||
await queryClient.invalidateQueries({
|
||||
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
// refetchType: "all",
|
||||
});
|
||||
await queryClient.invalidateQueries({
|
||||
queryKey: localCourseKeys.itemOfType(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName,
|
||||
type
|
||||
),
|
||||
refetchType: "none",
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
||||
// export const useDeleteItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
// const { courseName } = useCourseContext();
|
||||
// const queryClient = useQueryClient();
|
||||
// return useMutation({
|
||||
// mutationFn: async ({
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// }: {
|
||||
// moduleName: string;
|
||||
// itemName: string;
|
||||
// }) => {
|
||||
// await deleteItemOnServer({
|
||||
// courseName,
|
||||
// itemName,
|
||||
// moduleName,
|
||||
// type,
|
||||
// });
|
||||
// },
|
||||
// onSuccess: async (_, { moduleName, itemName }) => {
|
||||
// await queryClient.invalidateQueries({
|
||||
// queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
// // refetchType: "all",
|
||||
// });
|
||||
// await queryClient.invalidateQueries({
|
||||
// queryKey: localCourseKeys.itemOfType(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// type
|
||||
// ),
|
||||
// refetchType: "none",
|
||||
// });
|
||||
// },
|
||||
// });
|
||||
// };
|
||||
|
||||
@@ -1,237 +1,237 @@
|
||||
"use server";
|
||||
// "use server";
|
||||
|
||||
import { ItemInDay } from "@/app/course/[courseName]/calendar/day/ItemInDay";
|
||||
import { LocalAssignment } from "@/models/local/assignment/localAssignment";
|
||||
import {
|
||||
CourseItemReturnType,
|
||||
CourseItemType,
|
||||
} from "@/models/local/courseItemTypes";
|
||||
import { LocalCoursePage } from "@/models/local/page/localCoursePage";
|
||||
import { LocalQuiz } from "@/models/local/quiz/localQuiz";
|
||||
import { fileStorageService } from "@/services/fileStorage/fileStorageService";
|
||||
// import { ItemInDay } from "@/app/course/[courseName]/calendar/day/ItemInDay";
|
||||
// import { LocalAssignment } from "@/models/local/assignment/localAssignment";
|
||||
// import {
|
||||
// CourseItemReturnType,
|
||||
// CourseItemType,
|
||||
// } from "@/models/local/courseItemTypes";
|
||||
// import { LocalCoursePage } from "@/models/local/page/localCoursePage";
|
||||
// import { LocalQuiz } from "@/models/local/quiz/localQuiz";
|
||||
// import { fileStorageService } from "@/services/fileStorage/fileStorageService";
|
||||
|
||||
export async function getAllItemsFromServer<T extends CourseItemType>({
|
||||
courseName,
|
||||
moduleName,
|
||||
type,
|
||||
}: {
|
||||
courseName: string;
|
||||
moduleName: string;
|
||||
type: T;
|
||||
}): Promise<CourseItemReturnType<T>[]> {
|
||||
if (type === "Assignment") {
|
||||
const assignments = await fileStorageService.assignments.getAssignments(
|
||||
courseName,
|
||||
moduleName
|
||||
);
|
||||
return assignments as CourseItemReturnType<T>[];
|
||||
}
|
||||
if (type === "Quiz") {
|
||||
const quizzes = await fileStorageService.quizzes.getQuizzes(
|
||||
courseName,
|
||||
moduleName
|
||||
);
|
||||
return quizzes as CourseItemReturnType<T>[];
|
||||
}
|
||||
if (type === "Page") {
|
||||
const pages = await fileStorageService.pages.getPages(
|
||||
courseName,
|
||||
moduleName
|
||||
);
|
||||
return pages as CourseItemReturnType<T>[];
|
||||
}
|
||||
// export async function getAllItemsFromServer<T extends CourseItemType>({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// type,
|
||||
// }: {
|
||||
// courseName: string;
|
||||
// moduleName: string;
|
||||
// type: T;
|
||||
// }): Promise<CourseItemReturnType<T>[]> {
|
||||
// if (type === "Assignment") {
|
||||
// const assignments = await fileStorageService.assignments.getAssignments(
|
||||
// courseName,
|
||||
// moduleName
|
||||
// );
|
||||
// return assignments as CourseItemReturnType<T>[];
|
||||
// }
|
||||
// if (type === "Quiz") {
|
||||
// const quizzes = await fileStorageService.quizzes.getQuizzes(
|
||||
// courseName,
|
||||
// moduleName
|
||||
// );
|
||||
// return quizzes as CourseItemReturnType<T>[];
|
||||
// }
|
||||
// if (type === "Page") {
|
||||
// const pages = await fileStorageService.pages.getPages(
|
||||
// courseName,
|
||||
// moduleName
|
||||
// );
|
||||
// return pages as CourseItemReturnType<T>[];
|
||||
// }
|
||||
|
||||
throw Error(`cannot get item from server, invalid type: ${type}`)
|
||||
}
|
||||
// throw Error(`cannot get item from server, invalid type: ${type}`)
|
||||
// }
|
||||
|
||||
export async function getItemFromServer<T extends CourseItemType>({
|
||||
courseName,
|
||||
moduleName,
|
||||
type,
|
||||
itemName,
|
||||
}: {
|
||||
courseName: string;
|
||||
moduleName: string;
|
||||
type: T;
|
||||
itemName: string;
|
||||
}): Promise<CourseItemReturnType<T>> {
|
||||
if (type === "Assignment") {
|
||||
const assignment = await fileStorageService.assignments.getAssignment(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName
|
||||
);
|
||||
return assignment as CourseItemReturnType<T>;
|
||||
}
|
||||
if (type === "Assignment") {
|
||||
const quiz = await fileStorageService.quizzes.getQuiz(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName
|
||||
);
|
||||
return quiz as CourseItemReturnType<T>;
|
||||
}
|
||||
const page = await fileStorageService.pages.getPage(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName
|
||||
);
|
||||
return page as CourseItemReturnType<T>;
|
||||
}
|
||||
// export async function getItemFromServer<T extends CourseItemType>({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// type,
|
||||
// itemName,
|
||||
// }: {
|
||||
// courseName: string;
|
||||
// moduleName: string;
|
||||
// type: T;
|
||||
// itemName: string;
|
||||
// }): Promise<CourseItemReturnType<T>> {
|
||||
// if (type === "Assignment") {
|
||||
// const assignment = await fileStorageService.assignments.getAssignment(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName
|
||||
// );
|
||||
// return assignment as CourseItemReturnType<T>;
|
||||
// }
|
||||
// if (type === "Assignment") {
|
||||
// const quiz = await fileStorageService.quizzes.getQuiz(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName
|
||||
// );
|
||||
// return quiz as CourseItemReturnType<T>;
|
||||
// }
|
||||
// const page = await fileStorageService.pages.getPage(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName
|
||||
// );
|
||||
// return page as CourseItemReturnType<T>;
|
||||
// }
|
||||
|
||||
export async function createItemOnServer<T extends CourseItemType>({
|
||||
courseName,
|
||||
moduleName,
|
||||
type,
|
||||
item,
|
||||
itemName,
|
||||
}: {
|
||||
courseName: string;
|
||||
moduleName: string;
|
||||
type: T;
|
||||
item: CourseItemReturnType<T>;
|
||||
itemName: string;
|
||||
}) {
|
||||
if (type === "Assignment") {
|
||||
const assignment = item as LocalAssignment;
|
||||
await fileStorageService.assignments.updateOrCreateAssignment({
|
||||
courseName,
|
||||
moduleName,
|
||||
assignmentName: itemName,
|
||||
assignment,
|
||||
});
|
||||
}
|
||||
if (type === "Quiz") {
|
||||
const quiz = item as LocalQuiz;
|
||||
await fileStorageService.quizzes.updateQuiz(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName,
|
||||
quiz
|
||||
);
|
||||
}
|
||||
if (type === "Page") {
|
||||
const page = item as LocalCoursePage;
|
||||
await fileStorageService.pages.updatePage(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName,
|
||||
page
|
||||
);
|
||||
}
|
||||
}
|
||||
// export async function createItemOnServer<T extends CourseItemType>({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// type,
|
||||
// item,
|
||||
// itemName,
|
||||
// }: {
|
||||
// courseName: string;
|
||||
// moduleName: string;
|
||||
// type: T;
|
||||
// item: CourseItemReturnType<T>;
|
||||
// itemName: string;
|
||||
// }) {
|
||||
// if (type === "Assignment") {
|
||||
// const assignment = item as LocalAssignment;
|
||||
// await fileStorageService.assignments.updateOrCreateAssignment({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// assignmentName: itemName,
|
||||
// assignment,
|
||||
// });
|
||||
// }
|
||||
// if (type === "Quiz") {
|
||||
// const quiz = item as LocalQuiz;
|
||||
// await fileStorageService.quizzes.updateQuiz(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// quiz
|
||||
// );
|
||||
// }
|
||||
// if (type === "Page") {
|
||||
// const page = item as LocalCoursePage;
|
||||
// await fileStorageService.pages.updatePage(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// page
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
||||
export async function updateItemOnServer<T extends CourseItemType>({
|
||||
item,
|
||||
courseName,
|
||||
moduleName,
|
||||
previousModuleName,
|
||||
previousItemName,
|
||||
itemName,
|
||||
type,
|
||||
}: {
|
||||
item: CourseItemReturnType<T>;
|
||||
courseName: string;
|
||||
moduleName: string;
|
||||
previousModuleName: string;
|
||||
previousItemName: string;
|
||||
itemName: string;
|
||||
type: T;
|
||||
}) {
|
||||
if (type === "Assignment") {
|
||||
const assignment = item as LocalAssignment;
|
||||
await fileStorageService.assignments.updateOrCreateAssignment({
|
||||
courseName,
|
||||
moduleName,
|
||||
assignmentName: itemName,
|
||||
assignment,
|
||||
});
|
||||
// export async function updateItemOnServer<T extends CourseItemType>({
|
||||
// item,
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// previousModuleName,
|
||||
// previousItemName,
|
||||
// itemName,
|
||||
// type,
|
||||
// }: {
|
||||
// item: CourseItemReturnType<T>;
|
||||
// courseName: string;
|
||||
// moduleName: string;
|
||||
// previousModuleName: string;
|
||||
// previousItemName: string;
|
||||
// itemName: string;
|
||||
// type: T;
|
||||
// }) {
|
||||
// if (type === "Assignment") {
|
||||
// const assignment = item as LocalAssignment;
|
||||
// await fileStorageService.assignments.updateOrCreateAssignment({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// assignmentName: itemName,
|
||||
// assignment,
|
||||
// });
|
||||
|
||||
if (
|
||||
assignment.name !== previousItemName ||
|
||||
moduleName !== previousModuleName
|
||||
) {
|
||||
fileStorageService.assignments.delete({
|
||||
courseName,
|
||||
moduleName: previousModuleName,
|
||||
assignmentName: previousItemName,
|
||||
});
|
||||
}
|
||||
}
|
||||
if (type === "Quiz") {
|
||||
const quiz = item as LocalQuiz;
|
||||
await fileStorageService.quizzes.updateQuiz(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName,
|
||||
quiz
|
||||
);
|
||||
// if (
|
||||
// assignment.name !== previousItemName ||
|
||||
// moduleName !== previousModuleName
|
||||
// ) {
|
||||
// fileStorageService.assignments.delete({
|
||||
// courseName,
|
||||
// moduleName: previousModuleName,
|
||||
// assignmentName: previousItemName,
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// if (type === "Quiz") {
|
||||
// const quiz = item as LocalQuiz;
|
||||
// await fileStorageService.quizzes.updateQuiz(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// quiz
|
||||
// );
|
||||
|
||||
if (
|
||||
previousModuleName &&
|
||||
previousItemName &&
|
||||
(quiz.name !== previousItemName || moduleName !== previousModuleName)
|
||||
) {
|
||||
fileStorageService.quizzes.delete({
|
||||
courseName,
|
||||
moduleName: previousModuleName,
|
||||
quizName: previousItemName,
|
||||
});
|
||||
}
|
||||
}
|
||||
if (type === "Page") {
|
||||
const page = item as LocalCoursePage;
|
||||
await fileStorageService.pages.updatePage(
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName,
|
||||
page
|
||||
);
|
||||
// if (
|
||||
// previousModuleName &&
|
||||
// previousItemName &&
|
||||
// (quiz.name !== previousItemName || moduleName !== previousModuleName)
|
||||
// ) {
|
||||
// fileStorageService.quizzes.delete({
|
||||
// courseName,
|
||||
// moduleName: previousModuleName,
|
||||
// quizName: previousItemName,
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// if (type === "Page") {
|
||||
// const page = item as LocalCoursePage;
|
||||
// await fileStorageService.pages.updatePage(
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// page
|
||||
// );
|
||||
|
||||
if (
|
||||
previousModuleName &&
|
||||
previousItemName &&
|
||||
(page.name !== previousItemName || moduleName !== previousModuleName)
|
||||
) {
|
||||
fileStorageService.pages.delete({
|
||||
courseName,
|
||||
moduleName: previousModuleName,
|
||||
pageName: previousItemName,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (
|
||||
// previousModuleName &&
|
||||
// previousItemName &&
|
||||
// (page.name !== previousItemName || moduleName !== previousModuleName)
|
||||
// ) {
|
||||
// fileStorageService.pages.delete({
|
||||
// courseName,
|
||||
// moduleName: previousModuleName,
|
||||
// pageName: previousItemName,
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
export async function deleteItemOnServer<T extends CourseItemType>({
|
||||
courseName,
|
||||
moduleName,
|
||||
itemName,
|
||||
type,
|
||||
}: {
|
||||
courseName: string;
|
||||
moduleName: string;
|
||||
itemName: string;
|
||||
type: T;
|
||||
}) {
|
||||
if (type === "Assignment") {
|
||||
await fileStorageService.assignments.delete({
|
||||
courseName,
|
||||
moduleName,
|
||||
assignmentName: itemName,
|
||||
});
|
||||
}
|
||||
if (type === "Quiz") {
|
||||
await fileStorageService.quizzes.delete({
|
||||
courseName,
|
||||
moduleName,
|
||||
quizName: itemName,
|
||||
});
|
||||
}
|
||||
if (type === "Page") {
|
||||
await fileStorageService.pages.delete({
|
||||
courseName,
|
||||
moduleName,
|
||||
pageName: itemName,
|
||||
});
|
||||
}
|
||||
}
|
||||
// export async function deleteItemOnServer<T extends CourseItemType>({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// itemName,
|
||||
// type,
|
||||
// }: {
|
||||
// courseName: string;
|
||||
// moduleName: string;
|
||||
// itemName: string;
|
||||
// type: T;
|
||||
// }) {
|
||||
// if (type === "Assignment") {
|
||||
// await fileStorageService.assignments.delete({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// assignmentName: itemName,
|
||||
// });
|
||||
// }
|
||||
// if (type === "Quiz") {
|
||||
// await fileStorageService.quizzes.delete({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// quizName: itemName,
|
||||
// });
|
||||
// }
|
||||
// if (type === "Page") {
|
||||
// await fileStorageService.pages.delete({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// pageName: itemName,
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
|
||||
@@ -2,11 +2,9 @@ import { useCourseContext } from "@/app/course/[courseName]/context/courseContex
|
||||
import {
|
||||
useMutation,
|
||||
useQueryClient,
|
||||
useSuspenseQueries,
|
||||
useSuspenseQuery,
|
||||
} from "@tanstack/react-query";
|
||||
import { localCourseKeys } from "./localCourseKeys";
|
||||
import { getAllItemsQueryConfig } from "./courseItemHooks";
|
||||
import {
|
||||
createModuleOnServer,
|
||||
getModuleNamesFromServer,
|
||||
|
||||
@@ -1,18 +1,48 @@
|
||||
"use client";
|
||||
import {
|
||||
useCreateItemMutation,
|
||||
useDeleteItemMutation,
|
||||
useItemQuery,
|
||||
useItemsQueries,
|
||||
useUpdateItemMutation,
|
||||
} from "./courseItemHooks";
|
||||
|
||||
export const usePageQuery = (moduleName: string, pageName: string) =>
|
||||
useItemQuery(moduleName, pageName, "Page");
|
||||
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
|
||||
import { trpc } from "@/services/trpc/utils";
|
||||
|
||||
export const usePagesQueries = (moduleName: string) =>
|
||||
useItemsQueries(moduleName, "Page");
|
||||
export const usePageQuery = (moduleName: string, pageName: string) => {
|
||||
const { courseName } = useCourseContext();
|
||||
return trpc.page.getPage.useSuspenseQuery({
|
||||
courseName,
|
||||
moduleName,
|
||||
pageName,
|
||||
});
|
||||
};
|
||||
|
||||
export const useUpdatePageMutation = () => useUpdateItemMutation("Page");
|
||||
export const useCreatePageMutation = () => useCreateItemMutation("Page");
|
||||
export const useDeletePageMutation = () => useDeleteItemMutation("Page");
|
||||
export const usePagesQueries = (moduleName: string) => {
|
||||
const { courseName } = useCourseContext();
|
||||
return trpc.page.getAllPages.useSuspenseQuery({
|
||||
courseName,
|
||||
moduleName,
|
||||
});
|
||||
};
|
||||
|
||||
export const useUpdatePageMutation = () => {
|
||||
const utils = trpc.useUtils();
|
||||
return trpc.page.updatePage.useMutation({
|
||||
onSuccess: (_, { courseName, moduleName, pageName }) => {
|
||||
utils.page.getAllPages.invalidate({ courseName, moduleName });
|
||||
utils.page.getPage.invalidate({ courseName, moduleName, pageName });
|
||||
},
|
||||
});
|
||||
};
|
||||
export const useCreatePageMutation = () => {
|
||||
const utils = trpc.useUtils();
|
||||
return trpc.page.createPage.useMutation({
|
||||
onSuccess: (_, { courseName, moduleName }) => {
|
||||
utils.page.getAllPages.invalidate({ courseName, moduleName });
|
||||
},
|
||||
});
|
||||
};
|
||||
export const useDeletePageMutation = () => {
|
||||
const utils = trpc.useUtils();
|
||||
return trpc.page.deletePage.useMutation({
|
||||
onSuccess: (_, { courseName, moduleName, pageName }) => {
|
||||
utils.page.getAllPages.invalidate({ courseName, moduleName });
|
||||
utils.page.getPage.invalidate({ courseName, moduleName, pageName });
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
48
nextjs/src/hooks/localCourse/quizHooks.ts
Normal file
48
nextjs/src/hooks/localCourse/quizHooks.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
"use client";
|
||||
|
||||
import { useCourseContext } from "@/app/course/[courseName]/context/courseContext";
|
||||
import { trpc } from "@/services/trpc/utils";
|
||||
|
||||
export const useQuizQuery = (moduleName: string, quizName: string) => {
|
||||
const { courseName } = useCourseContext();
|
||||
return trpc.quiz.getQuiz.useSuspenseQuery({
|
||||
courseName,
|
||||
moduleName,
|
||||
quizName,
|
||||
});
|
||||
};
|
||||
|
||||
export const useQuizzesQueries = (moduleName: string) => {
|
||||
const { courseName } = useCourseContext();
|
||||
return trpc.quiz.getAllQuizzes.useSuspenseQuery({
|
||||
courseName,
|
||||
moduleName,
|
||||
});
|
||||
};
|
||||
|
||||
export const useUpdateQuizMutation = () => {
|
||||
const utils = trpc.useUtils();
|
||||
return trpc.quiz.updateQuiz.useMutation({
|
||||
onSuccess: (_, { courseName, moduleName, quizName }) => {
|
||||
utils.quiz.getAllQuizzes.invalidate({ courseName, moduleName });
|
||||
utils.quiz.getQuiz.invalidate({ courseName, moduleName, quizName });
|
||||
},
|
||||
});
|
||||
};
|
||||
export const useCreateQuizMutation = () => {
|
||||
const utils = trpc.useUtils();
|
||||
return trpc.quiz.createQuiz.useMutation({
|
||||
onSuccess: (_, { courseName, moduleName }) => {
|
||||
utils.quiz.getAllQuizzes.invalidate({ courseName, moduleName });
|
||||
},
|
||||
});
|
||||
};
|
||||
export const useDeleteQuizMutation = () => {
|
||||
const utils = trpc.useUtils();
|
||||
return trpc.quiz.deleteQuiz.useMutation({
|
||||
onSuccess: (_, { courseName, moduleName, quizName }) => {
|
||||
utils.quiz.getAllQuizzes.invalidate({ courseName, moduleName });
|
||||
utils.quiz.getQuiz.invalidate({ courseName, moduleName, quizName });
|
||||
},
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user