mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-26 15:48:32 -06:00
moving to server actions
This commit is contained in:
@@ -12,6 +12,11 @@ import {
|
||||
useSuspenseQueries,
|
||||
useSuspenseQuery,
|
||||
} from "@tanstack/react-query";
|
||||
import {
|
||||
getAllItemsFromServer,
|
||||
getItemFromServer,
|
||||
} from "./courseItemServerActions";
|
||||
import { useRouter } from "next/navigation";
|
||||
|
||||
export const getAllItemsQueryConfig = <T extends CourseItemType>(
|
||||
courseName: string,
|
||||
@@ -29,6 +34,11 @@ export const getAllItemsQueryConfig = <T extends CourseItemType>(
|
||||
typeToFolder[type];
|
||||
const response = await axiosClient.get(url);
|
||||
return response.data;
|
||||
// return await getAllItemsFromServer({
|
||||
// courseName,
|
||||
// moduleName,
|
||||
// type,
|
||||
// });
|
||||
},
|
||||
});
|
||||
|
||||
@@ -52,6 +62,12 @@ export const getItemQueryConfig = <T extends CourseItemType>(
|
||||
encodeURIComponent(name);
|
||||
const response = await axiosClient.get<CourseItemReturnType<T>>(url);
|
||||
return response.data;
|
||||
// return await getItemFromServer({
|
||||
// moduleName,
|
||||
// courseName,
|
||||
// itemName: name,
|
||||
// type,
|
||||
// });
|
||||
},
|
||||
};
|
||||
};
|
||||
@@ -223,6 +239,7 @@ export const useCreateItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
|
||||
export const useDeleteItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
const { courseName } = useCourseContext();
|
||||
const router = useRouter();
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: async ({
|
||||
@@ -246,7 +263,7 @@ export const useDeleteItemMutation = <T extends CourseItemType>(type: T) => {
|
||||
onSuccess: async (_, { moduleName, itemName }) => {
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: localCourseKeys.allItemsOfType(courseName, moduleName, type),
|
||||
refetchType: "all",
|
||||
// refetchType: "all",
|
||||
});
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: localCourseKeys.itemOfType(
|
||||
|
||||
70
nextjs/src/hooks/localCourse/courseItemServerActions.ts
Normal file
70
nextjs/src/hooks/localCourse/courseItemServerActions.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
"use server";
|
||||
|
||||
import { ItemInDay } from "@/app/course/[courseName]/calendar/day/ItemInDay";
|
||||
import {
|
||||
CourseItemReturnType,
|
||||
CourseItemType,
|
||||
} from "@/models/local/courseItemTypes";
|
||||
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>[];
|
||||
}
|
||||
const pages = await fileStorageService.pages.getPages(courseName, moduleName);
|
||||
return pages 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>;
|
||||
}
|
||||
@@ -1,14 +1,16 @@
|
||||
import { axiosClient } from "@/services/axiosUtils";
|
||||
import { useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { useQuery, useSuspenseQuery } from "@tanstack/react-query";
|
||||
import { getEmptyDirectories } from "./storageDirectoryServerActions";
|
||||
|
||||
export const directoryKeys = {
|
||||
emptyFolders: ["empty folders"] as const,
|
||||
};
|
||||
|
||||
export const useEmptyDirectoriesQuery = () =>
|
||||
useSuspenseQuery({
|
||||
useQuery({
|
||||
queryKey: directoryKeys.emptyFolders,
|
||||
queryFn: getEmptyDirectories
|
||||
queryFn: async () => await getEmptyDirectories(),
|
||||
// queryFn: getEmptyDirectories,
|
||||
// async () => {
|
||||
// const url = "/api/directories/empty";
|
||||
// const { data } = await axiosClient.get<string[]>(url);
|
||||
|
||||
Reference in New Issue
Block a user