diff --git a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/activity/[activityid]/activity.tsx b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/activity/[activityid]/activity.tsx
index f0728c3f..f3327327 100644
--- a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/activity/[activityid]/activity.tsx
+++ b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/activity/[activityid]/activity.tsx
@@ -499,6 +499,7 @@ function ActivityChapterDropdown(props: {
setIsOpen(false)}
>
}
+type Session = {
+ tokens?: {
+ access_token?: string
+ }
+}
+
+// Add this function at the top level to avoid duplicate fetches
+async function fetchCourseMetadata(courseuuid: string, access_token: string | null | undefined) {
+ return await getCourseMetadata(
+ courseuuid,
+ { revalidate: 1800, tags: ['courses'] },
+ access_token || null
+ )
+}
+
export async function generateMetadata(props: MetadataProps): Promise
{
const params = await props.params;
- const session = await getServerSession(nextAuthOptions)
- const access_token = session?.tokens?.access_token
+ const session = await getServerSession(nextAuthOptions as any) as Session
+ const access_token = session?.tokens?.access_token || null
// Get Org context information
const org = await getOrganizationContextInfo(params.orgslug, {
revalidate: 1800,
tags: ['organizations'],
})
- const course_meta = await getCourseMetadata(
- params.courseuuid,
- { revalidate: 0, tags: ['courses'] },
- access_token ? access_token : null
- )
+ const course_meta = await fetchCourseMetadata(params.courseuuid, access_token)
const activity = await getActivityWithAuthHeader(
params.activityid,
- { revalidate: 0, tags: ['activities'] },
- access_token ? access_token : null
+ { revalidate: 1800, tags: ['activities'] },
+ access_token || null
)
// SEO
@@ -57,32 +68,29 @@ export async function generateMetadata(props: MetadataProps): Promise
}
const ActivityPage = async (params: any) => {
- const session = await getServerSession(nextAuthOptions)
- const access_token = session?.tokens?.access_token
+ const session = await getServerSession(nextAuthOptions as any) as Session
+ const access_token = session?.tokens?.access_token || null
const activityid = (await params.params).activityid
const courseuuid = (await params.params).courseuuid
const orgslug = (await params.params).orgslug
- const course_meta = await getCourseMetadata(
- courseuuid,
- { revalidate: 0, tags: ['courses'] },
- access_token ? access_token : null
- )
- const activity = await getActivityWithAuthHeader(
- activityid,
- { revalidate: 0, tags: ['activities'] },
- access_token ? access_token : null
- )
+ const [course_meta, activity] = await Promise.all([
+ fetchCourseMetadata(courseuuid, access_token),
+ getActivityWithAuthHeader(
+ activityid,
+ { revalidate: 1800, tags: ['activities'] },
+ access_token || null
+ )
+ ])
+
return (
- <>
-
- >
+
)
}
diff --git a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/course.tsx b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/course.tsx
index 6bcba6dd..c3ebb3a0 100644
--- a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/course.tsx
+++ b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/course.tsx
@@ -223,6 +223,7 @@ const CourseClient = (props: any) => {
)}`
}
rel="noopener noreferrer"
+ prefetch={false}
>
{activity.name}
@@ -240,6 +241,7 @@ const CourseClient = (props: any) => {
)}`
}
rel="noopener noreferrer"
+ prefetch={false}
>
Page
@@ -260,6 +262,7 @@ const CourseClient = (props: any) => {
)}`
}
rel="noopener noreferrer"
+ prefetch={false}
>
Video
@@ -281,6 +284,7 @@ const CourseClient = (props: any) => {
)}`
}
rel="noopener noreferrer"
+ prefetch={false}
>
Document
@@ -302,6 +306,7 @@ const CourseClient = (props: any) => {
)}`
}
rel="noopener noreferrer"
+ prefetch={false}
>
Assignment
diff --git a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx
index 1bd761be..d0c721a4 100644
--- a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx
+++ b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx
@@ -24,7 +24,7 @@ export async function generateMetadata(props: MetadataProps): Promise
})
const course_meta = await getCourseMetadata(
params.courseuuid,
- { revalidate: 0, tags: ['courses'] },
+ { revalidate: 1800, tags: ['courses'] },
access_token ? access_token : null
)
@@ -66,24 +66,23 @@ export async function generateMetadata(props: MetadataProps): Promise
}
const CoursePage = async (params: any) => {
- const courseuuid = (await params.params).courseuuid
- const orgslug = (await params.params).orgslug
const session = await getServerSession(nextAuthOptions)
const access_token = session?.tokens?.access_token
+
+ // Fetch course metadata once
const course_meta = await getCourseMetadata(
- courseuuid,
- { revalidate: 0, tags: ['courses'] },
+ params.params.courseuuid,
+ { revalidate: 1800, tags: ['courses'] },
access_token ? access_token : null
)
return (
-
-
-
+
)
}
diff --git a/apps/web/components/Dashboard/Pages/Course/EditCourseStructure/DraggableElements/ActivityElement.tsx b/apps/web/components/Dashboard/Pages/Course/EditCourseStructure/DraggableElements/ActivityElement.tsx
index c7a1d34f..a4b9e584 100644
--- a/apps/web/components/Dashboard/Pages/Course/EditCourseStructure/DraggableElements/ActivityElement.tsx
+++ b/apps/web/components/Dashboard/Pages/Course/EditCourseStructure/DraggableElements/ActivityElement.tsx
@@ -191,7 +191,6 @@ function ActivityElement(props: ActivitiyElementProps) {
''
)}`
}
- prefetch
className="p-1 px-2 sm:px-3 bg-linear-to-bl text-cyan-800 from-sky-400/50 to-cyan-200/80 border border-cyan-600/10 shadow-md rounded-md font-bold text-xs flex items-center space-x-1 transition-colors duration-200 hover:from-sky-500/50 hover:to-cyan-300/80"
rel="noopener noreferrer"
>
@@ -296,7 +295,6 @@ const ActivityElementOptions = ({ activity, isMobile }: { activity: any; isMobil
''
)}/edit`
}
- prefetch
className={`hover:cursor-pointer p-1 ${isMobile ? 'px-2' : 'px-3'} bg-sky-700 rounded-md items-center`}
target='_blank'
>
@@ -313,7 +311,6 @@ const ActivityElementOptions = ({ activity, isMobile }: { activity: any; isMobil
getUriWithOrg(org.slug, '') +
`/dash/assignments/${assignmentUUID}`
}
- prefetch
className={`hover:cursor-pointer p-1 ${isMobile ? 'px-2' : 'px-3'} bg-teal-700 rounded-md items-center`}
>
diff --git a/apps/web/components/Pages/Courses/ActivityIndicators.tsx b/apps/web/components/Pages/Courses/ActivityIndicators.tsx
index 59f32a48..8fb212a3 100644
--- a/apps/web/components/Pages/Courses/ActivityIndicators.tsx
+++ b/apps/web/components/Pages/Courses/ActivityIndicators.tsx
@@ -65,7 +65,7 @@ function ActivityIndicators(props: Props) {
key={activity.activity_uuid}
>