moving to server actions

This commit is contained in:
2024-10-29 12:12:01 -06:00
parent e17ad6f783
commit f74e53fe10
8 changed files with 110 additions and 13 deletions

View File

@@ -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(

View 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>;
}

View File

@@ -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);