diff --git a/front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/activity/[activityid]/page.tsx b/front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/activity/[activityid]/page.tsx
index b8d2d2b2..020c734d 100644
--- a/front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/activity/[activityid]/page.tsx
+++ b/front/app/_orgs/[orgslug]/(withmenu)/course/[courseid]/activity/[activityid]/page.tsx
@@ -19,7 +19,7 @@ function ActivityPage(params: any) {
const orgslug = params.params.orgslug;
const { data: course, error: error_course } = useSWR(`${getAPIUrl()}courses/meta/course_${courseid}`, swrFetcher);
- const { data: activity, error: error_activity } = useSWR(`${getAPIUrl()}trail/org_slug/${orgslug}/trail`, swrFetcher);
+ const { data: activity, error: error_activity } = useSWR(`${getAPIUrl()}activities/activity_${activityid}`, swrFetcher);
async function markActivityAsCompleteFront() {
@@ -31,7 +31,7 @@ function ActivityPage(params: any) {
return (
<>
{error_course &&
Failed to load
}
- {!course || !activity ? (
+ {!course && !activity ? (
Loading...
) : (
@@ -95,9 +95,8 @@ function ActivityPage(params: any) {
)}
- ) : (
- Loading...
- )}
+ ) : ()}
+ {error_activity && Failed to load {error_activity.message}
}
)}
>
diff --git a/front/services/courses/activities.ts b/front/services/courses/activities.ts
index 02d8726c..fa378281 100644
--- a/front/services/courses/activities.ts
+++ b/front/services/courses/activities.ts
@@ -5,15 +5,10 @@ export async function createActivity(data: any, chapter_id: any, org_id: any) {
data.content = {};
// remove chapter_id from data
delete data.chapterId;
-
- const result: any = await fetch(`${getAPIUrl()}activities/?coursechapter_id=${chapter_id}&org_id=${org_id}`, RequestBody("POST", data))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
-
- console.log("result", result);
-
- return result;
+ const result = await fetch(`${getAPIUrl()}activities/?coursechapter_id=${chapter_id}&org_id=${org_id}`, RequestBody("POST", data));
+ const res = await result.json();
+ return res;
}
export async function createFileActivity(file: File, type: string, data: any, chapter_id: any) {
@@ -29,27 +24,19 @@ export async function createFileActivity(file: File, type: string, data: any, ch
endpoint = `${getAPIUrl()}activities/video`;
}
- const result: any = await fetch(endpoint, RequestBodyForm("POST", formData))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
-
- console.log("result", result);
-
- return result;
+ const result: any = await fetch(endpoint, RequestBodyForm("POST", formData));
+ const res = await result.json();
+ return res;
}
export async function getActivity(activity_id: any) {
- const result: any = await fetch(`${getAPIUrl()}activities/${activity_id}`, RequestBody("GET", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
-
- return result;
+ const result = await fetch(`${getAPIUrl()}activities/${activity_id}`, RequestBody("GET", null));
+ const res = await result.json();
+ return res;
}
export async function updateActivity(data: any, activity_id: any) {
- const result: any = await fetch(`${getAPIUrl()}activities/${activity_id}`, RequestBody("PUT", data))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
-
- return result;
+ const result = await fetch(`${getAPIUrl()}activities/${activity_id}`, RequestBody("PUT", data));
+ const res = await result.json();
+ return res;
}
diff --git a/front/services/courses/activity.ts b/front/services/courses/activity.ts
index cce7f84f..aec4ec45 100644
--- a/front/services/courses/activity.ts
+++ b/front/services/courses/activity.ts
@@ -1,4 +1,4 @@
-import { RequestBody } from "@services/utils/ts/requests";
+import { RequestBody, errorHandling } from "@services/utils/ts/requests";
import { getAPIUrl } from "@services/config/config";
/*
@@ -8,21 +8,18 @@ import { getAPIUrl } from "@services/config/config";
export async function startCourse(course_id: string, org_slug: string) {
const result: any = await fetch(`${getAPIUrl()}trail/org_slug/${org_slug}/add_course/${course_id}`, RequestBody("POST", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
- return result;
+ const res = await errorHandling(result);
+ return res;
}
export async function removeCourse(course_id: string, org_slug: string) {
const result: any = await fetch(`${getAPIUrl()}trail/org_slug/${org_slug}/remove_course/${course_id}`, RequestBody("POST", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
- return result;
+ const res = await errorHandling(result);
+ return res;
}
export async function markActivityAsComplete(org_slug: string, course_id: string, activity_id: string) {
const result: any = await fetch(`${getAPIUrl()}trail/org_slug/${org_slug}/add_activity/course_id/${course_id}/activity_id/${activity_id}`, RequestBody("POST", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
- return result;
+ const res = await errorHandling(result);
+ return res;
}
diff --git a/front/services/courses/collections.ts b/front/services/courses/collections.ts
index 7429f5a6..09ca1610 100644
--- a/front/services/courses/collections.ts
+++ b/front/services/courses/collections.ts
@@ -1,5 +1,5 @@
import { getAPIUrl } from "../config/config";
-import { RequestBody } from "../utils/ts/requests";
+import { RequestBody, errorHandling } from "@services/utils/ts/requests";
/*
This file includes only POST, PUT, DELETE requests
@@ -7,14 +7,14 @@ import { RequestBody } from "../utils/ts/requests";
*/
export async function deleteCollection(collection_id: any) {
- return fetch(`${getAPIUrl()}collections/${collection_id}`, RequestBody("DELETE", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result: any = await fetch(`${getAPIUrl()}collections/${collection_id}`, RequestBody("DELETE", null));
+ const res = await errorHandling(result);
+ return res;
}
// Create a new collection
export async function createCollection(collection: any) {
- return fetch(`${getAPIUrl()}collections/`, RequestBody("POST", collection))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result: any = await fetch(`${getAPIUrl()}collections/`, RequestBody("POST", collection));
+ const res = await errorHandling(result);
+ return res;
}
diff --git a/front/services/courses/courses.ts b/front/services/courses/courses.ts
index a0236419..13486429 100644
--- a/front/services/courses/courses.ts
+++ b/front/services/courses/courses.ts
@@ -1,5 +1,5 @@
import { getAPIUrl } from "@services/config/config";
-import { RequestBody, RequestBodyForm } from "@services/utils/ts/requests";
+import { RequestBody, RequestBodyForm, errorHandling } from "@services/utils/ts/requests";
/*
This file includes only POST, PUT, DELETE requests
@@ -7,23 +7,18 @@ import { RequestBody, RequestBodyForm } from "@services/utils/ts/requests";
*/
export async function getOrgCourses(org_id: number) {
-
-
- return fetch(`${getAPIUrl()}courses/${org_id}/page/1/limit/10`, RequestBody("GET", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result: any = await fetch(`${getAPIUrl()}courses/${org_id}/page/1/limit/10`, RequestBody("GET", null));
+ const res = await errorHandling(result);
+ return res;
}
export async function getCourse(course_id: string) {
- // todo : add course id to url
- return fetch(`${getAPIUrl()}courses/${course_id}`, RequestBody("GET", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result: any = await fetch(`${getAPIUrl()}courses/${course_id}`, RequestBody("GET", null));
+ const res = await errorHandling(result);
+ return res;
}
-
export async function createNewCourse(org_id: string, course_body: any, thumbnail: any) {
-
// Send file thumbnail as form data
const formData = new FormData();
formData.append("thumbnail", thumbnail);
@@ -32,16 +27,13 @@ export async function createNewCourse(org_id: string, course_body: any, thumbnai
formData.append("mini_description", "course_body.mini_description");
formData.append("public", "true");
-
- return fetch(`${getAPIUrl()}courses/?org_id=${org_id}`, RequestBodyForm("POST", formData))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result = await fetch(`${getAPIUrl()}courses/?org_id=${org_id}`, RequestBodyForm("POST", formData));
+ const res = await errorHandling(result);
+ return res;
}
export async function deleteCourseFromBackend(course_id: any) {
-
-
- return fetch(`${getAPIUrl()}courses/${course_id}`, RequestBody("DELETE", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result: any = await fetch(`${getAPIUrl()}courses/${course_id}`, RequestBody("DELETE", null));
+ const res = await errorHandling(result);
+ return res;
}
diff --git a/front/services/organizations/orgs.ts b/front/services/organizations/orgs.ts
index eb648285..2718df70 100644
--- a/front/services/organizations/orgs.ts
+++ b/front/services/organizations/orgs.ts
@@ -1,5 +1,5 @@
import { getAPIUrl } from "@services/config/config";
-import { RequestBody } from "../utils/ts/requests";
+import { RequestBody, errorHandling } from "@services/utils/ts/requests";
/*
This file includes only POST, PUT, DELETE requests
@@ -7,19 +7,19 @@ import { RequestBody } from "../utils/ts/requests";
*/
export async function createNewOrganization(body: any) {
- return fetch(`${getAPIUrl()}orgs/`, RequestBody("POST", body))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result = await fetch(`${getAPIUrl()}orgs/`, RequestBody("POST", body));
+ const res = await errorHandling(result);
+ return res;
}
export async function deleteOrganizationFromBackend(org_id: any) {
- return fetch(`${getAPIUrl()}orgs/${org_id}`, RequestBody("DELETE", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result = await fetch(`${getAPIUrl()}orgs/${org_id}`, RequestBody("DELETE", null));
+ const res = await errorHandling(result);
+ return res;
}
export async function getOrganizationContextInfo(org_slug: any) {
- return fetch(`${getAPIUrl()}orgs/slug/${org_slug}`, RequestBody("GET", null))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
+ const result = await fetch(`${getAPIUrl()}orgs/slug/${org_slug}`, RequestBody("GET", null));
+ const res = await errorHandling(result);
+ return res;
}
diff --git a/front/services/settings/org.ts b/front/services/settings/org.ts
index 4f225fce..1f4a0fd8 100644
--- a/front/services/settings/org.ts
+++ b/front/services/settings/org.ts
@@ -1,15 +1,13 @@
import { getAPIUrl } from "@services/config/config";
-import { RequestBody } from "@services/utils/ts/requests";
+import { RequestBody, errorHandling } from "@services/utils/ts/requests";
/*
This file includes only POST, PUT, DELETE requests
GET requests are called from the frontend using SWR (https://swr.vercel.app/)
*/
-export async function updateOrganization(org_id : string, data: any) {
- const result: any = await fetch(`${getAPIUrl()}orgs/` + org_id, RequestBody("PUT", data))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
-
- return result;
+export async function updateOrganization(org_id: string, data: any) {
+ const result: any = await fetch(`${getAPIUrl()}orgs/` + org_id, RequestBody("PUT", data));
+ const res = await errorHandling(result);
+ return res;
}
diff --git a/front/services/settings/password.ts b/front/services/settings/password.ts
index 9cd57b28..a93483f3 100644
--- a/front/services/settings/password.ts
+++ b/front/services/settings/password.ts
@@ -1,5 +1,5 @@
import { getAPIUrl } from "@services/config/config";
-import { RequestBody } from "@services/utils/ts/requests";
+import { RequestBody, errorHandling } from "@services/utils/ts/requests";
/*
This file includes only POST, PUT, DELETE requests
@@ -8,8 +8,6 @@ import { RequestBody } from "@services/utils/ts/requests";
export async function updatePassword(user_id : string, data: any) {
const result: any = await fetch(`${getAPIUrl()}users/password/user_id/` + user_id, RequestBody("PUT", data))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
-
- return result;
+ const res = await errorHandling(result);
+ return res;
}
diff --git a/front/services/settings/profile.ts b/front/services/settings/profile.ts
index b6322d65..06f0667e 100644
--- a/front/services/settings/profile.ts
+++ b/front/services/settings/profile.ts
@@ -1,5 +1,5 @@
import { getAPIUrl } from "@services/config/config";
-import { RequestBody } from "@services/utils/ts/requests";
+import { RequestBody, errorHandling } from "@services/utils/ts/requests";
/*
This file includes only POST, PUT, DELETE requests
@@ -8,8 +8,6 @@ import { RequestBody } from "@services/utils/ts/requests";
export async function updateProfile(data: any) {
const result: any = await fetch(`${getAPIUrl()}users/user_id/` + data.user_id, RequestBody("PUT", data))
- .then((result) => result.json())
- .catch((error) => console.log("error", error));
-
- return result;
+ const res = await errorHandling(result);
+ return res;
}
diff --git a/front/services/utils/ts/requests.ts b/front/services/utils/ts/requests.ts
index ee372a47..802f92ec 100644
--- a/front/services/utils/ts/requests.ts
+++ b/front/services/utils/ts/requests.ts
@@ -53,6 +53,7 @@ export const swrFetcher = async (url: string, body: any, router?: AppRouterInsta
if (router) {
denyAccessToUser(error, router);
}
+ throw error;
}
};
diff --git a/src/services/courses/courses.py b/src/services/courses/courses.py
index d8dee31a..55b12d67 100644
--- a/src/services/courses/courses.py
+++ b/src/services/courses/courses.py
@@ -288,7 +288,7 @@ async def verify_rights(request: Request, course_id: str, current_user: PublicUs
course = await courses.find_one({"course_id": course_id})
- if current_user.user_id == "anonymous" and course["public"] == True:
+ if current_user.user_id == "anonymous" and course["public"] == True and action == "read":
return True
if not course: