diff --git a/nextjs/src/app/api/courses/[courseName]/settings/route.ts b/nextjs/src/app/api/courses/[courseName]/settings/route.ts
index a153ddb..f581164 100644
--- a/nextjs/src/app/api/courses/[courseName]/settings/route.ts
+++ b/nextjs/src/app/api/courses/[courseName]/settings/route.ts
@@ -12,6 +12,7 @@ export const GET = async (
const settings = await fileStorageService.getCourseSettings(courseName);
return Response.json(settings);
});
+
export const PUT = async (
request: Request,
{ params: { courseName } }: { params: { courseName: string } }
diff --git a/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSelector.tsx b/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSelector.tsx
new file mode 100644
index 0000000..4ede6b1
--- /dev/null
+++ b/nextjs/src/app/course/[courseName]/settings/DaysOfWeekSelector.tsx
@@ -0,0 +1,44 @@
+"use client";
+import { Spinner } from "@/components/Spinner";
+import {
+ useLocalCourseSettingsQuery,
+ useUpdateLocalCourseSettingsMutation,
+} from "@/hooks/localCourse/localCoursesHooks";
+import { DayOfWeek } from "@/models/local/localCourse";
+import React from "react";
+
+export default function DaysOfWeekSelector() {
+ const { data: settings } = useLocalCourseSettingsQuery();
+ const updateSettings = useUpdateLocalCourseSettingsMutation();
+
+ return (
+ <>
+
+ {Object.values(DayOfWeek).map((day) => {
+ const hasDay = settings.daysOfWeek.includes(day);
+ return (
+
+ );
+ })}
+
+ {updateSettings.isPending && }
+ >
+ );
+}
diff --git a/nextjs/src/app/course/[courseName]/settings/page.tsx b/nextjs/src/app/course/[courseName]/settings/page.tsx
index db73499..3ca0371 100644
--- a/nextjs/src/app/course/[courseName]/settings/page.tsx
+++ b/nextjs/src/app/course/[courseName]/settings/page.tsx
@@ -3,11 +3,13 @@ import { useCourseContext } from "../context/courseContext";
import StartAndEndDate from "./StartAndEndDate";
import SettingsHeader from "./SettingsHeader";
import DefaultDueTime from "./DefaultDueTime";
+import DaysOfWeekSelector from "./DaysOfWeekSelector";
export default function page() {
return (
+
diff --git a/nextjs/src/hooks/localCourse/localCoursesHooks.ts b/nextjs/src/hooks/localCourse/localCoursesHooks.ts
index 87e7049..dc883e2 100644
--- a/nextjs/src/hooks/localCourse/localCoursesHooks.ts
+++ b/nextjs/src/hooks/localCourse/localCoursesHooks.ts
@@ -57,6 +57,10 @@ export const useUpdateLocalCourseSettingsMutation = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (updatedSettings: LocalCourseSettings) => {
+ queryClient.setQueryData(
+ localCourseKeys.settings(courseName),
+ updatedSettings
+ );
const url = `/api/courses/${courseName}/settings`;
await axiosClient.put(url, updatedSettings);
},
diff --git a/nextjs/src/services/fileStorage/fileStorageService.ts b/nextjs/src/services/fileStorage/fileStorageService.ts
index 9ad5f7e..6680cdb 100644
--- a/nextjs/src/services/fileStorage/fileStorageService.ts
+++ b/nextjs/src/services/fileStorage/fileStorageService.ts
@@ -1,7 +1,6 @@
import { promises as fs } from "fs";
import path from "path";
import {
- LocalCourse,
LocalCourseSettings,
localCourseYamlUtils,
} from "@/models/local/localCourse";
@@ -28,18 +27,6 @@ const basePath = process.env.STORAGE_DIRECTORY ?? "./storage";
console.log("base path", basePath);
export const fileStorageService = {
- // async saveCourseAsync(
- // course: LocalCourse,
- // previouslyStoredCourse?: LocalCourse
- // ) {
- // await courseMarkdownSaver.save(course, previouslyStoredCourse);
- // },
-
- // async loadSavedCourses(): Promise {
- // console.log("loading pages from file system");
- // return (await courseMarkdownLoader.loadSavedCourses()) || [];
- // },
-
async getCourseNames() {
console.log("loading course ids");
const courseDirectories = await fs.readdir(basePath, {