From f712d68e28879970e5f7819274d9be52fa3150a3 Mon Sep 17 00:00:00 2001 From: swve Date: Sat, 17 May 2025 00:05:42 +0200 Subject: [PATCH] feat: update revalidation settings for course metadata to improve caching efficiency --- .../course/[courseid]/activity/[activityuuid]/edit/page.tsx | 4 ++-- .../course/[courseuuid]/activity/[activityid]/activity.tsx | 6 +++++- .../course/[courseuuid]/activity/[activityid]/page.tsx | 2 +- .../orgs/[orgslug]/(withmenu)/course/[courseuuid]/page.tsx | 4 ++-- .../Objects/Courses/CourseActions/CourseActionsMobile.tsx | 2 ++ 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/web/app/editor/course/[courseid]/activity/[activityuuid]/edit/page.tsx b/apps/web/app/editor/course/[courseid]/activity/[activityuuid]/edit/page.tsx index 85030599..6ac8785e 100644 --- a/apps/web/app/editor/course/[courseid]/activity/[activityuuid]/edit/page.tsx +++ b/apps/web/app/editor/course/[courseid]/activity/[activityuuid]/edit/page.tsx @@ -24,7 +24,7 @@ export async function generateMetadata(props: MetadataProps): Promise // Get Org context information const course_meta = await getCourseMetadata( params.courseid, - { revalidate: 0, tags: ['courses'] }, + { revalidate: 30, tags: ['courses'] }, access_token ? access_token : null ) @@ -41,7 +41,7 @@ const EditActivity = async (params: any) => { const courseid = (await params.params).courseid const courseInfo = await getCourseMetadata( courseid, - { revalidate: 0, tags: ['courses'] }, + { revalidate: 30, tags: ['courses'] }, access_token ? access_token : null ) const activity = await getActivityWithAuthHeader( 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 eb52b567..4e37823c 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 @@ -30,6 +30,7 @@ import ActivityBreadcrumbs from '@components/Pages/Activity/ActivityBreadcrumbs' import MiniInfoTooltip from '@components/Objects/MiniInfoTooltip' import GeneralWrapperStyled from '@components/Objects/StyledElements/Wrappers/GeneralWrapper' import ActivityIndicators from '@components/Pages/Courses/ActivityIndicators' +import { revalidateTags } from '@services/utils/ts/requests' // Lazy load heavy components const Canva = lazy(() => import('@components/Objects/Activities/DynamicCanva/DynamicCanva')) @@ -736,6 +737,9 @@ export function MarkStatus(props: { try { const willCompleteAll = areAllActivitiesCompleted(); setIsLoading(true); + // refresh the page after marking the activity as complete + await revalidateTags(['courses'], props.orgslug); + router.refresh(); await markActivityAsComplete( props.orgslug, props.course.course_uuid, @@ -768,7 +772,7 @@ export function MarkStatus(props: { props.activity.activity_uuid, session.data?.tokens?.access_token ); - + await revalidateTags(['courses'], props.orgslug); await mutate(`${getAPIUrl()}courses/${props.course.course_uuid}/meta`); router.refresh(); } catch (error) { diff --git a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/activity/[activityid]/page.tsx b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/activity/[activityid]/page.tsx index 48bac3cf..51e1541f 100644 --- a/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/activity/[activityid]/page.tsx +++ b/apps/web/app/orgs/[orgslug]/(withmenu)/course/[courseuuid]/activity/[activityid]/page.tsx @@ -21,7 +21,7 @@ type Session = { async function fetchCourseMetadata(courseuuid: string, access_token: string | null | undefined) { return await getCourseMetadata( courseuuid, - { revalidate: 0, tags: ['courses'] }, + { revalidate: 30, tags: ['courses'] }, access_token || null ) } 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 df4fbccd..e5d06129 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: 30, tags: ['courses'] }, access_token ? access_token : null ) @@ -72,7 +72,7 @@ const CoursePage = async (params: any) => { // Fetch course metadata once const course_meta = await getCourseMetadata( params.params.courseuuid, - { revalidate: 0, tags: ['courses'] }, + { revalidate: 30, tags: ['courses'] }, access_token ? access_token : null ) diff --git a/apps/web/components/Objects/Courses/CourseActions/CourseActionsMobile.tsx b/apps/web/components/Objects/Courses/CourseActions/CourseActionsMobile.tsx index c559f377..defb5045 100644 --- a/apps/web/components/Objects/Courses/CourseActions/CourseActionsMobile.tsx +++ b/apps/web/components/Objects/Courses/CourseActions/CourseActionsMobile.tsx @@ -197,6 +197,7 @@ const CourseActionsMobile = ({ courseuuid, orgslug, course }: CourseActionsMobil if (firstActivity) { // Redirect to the first activity + await revalidateTags(['activities'], orgslug) router.push( getUriWithOrg(orgslug, '') + `/course/${courseuuid}/activity/${firstActivity.activity_uuid.replace('activity_', '')}` @@ -209,6 +210,7 @@ const CourseActionsMobile = ({ courseuuid, orgslug, course }: CourseActionsMobil console.error('Failed to perform course action:', error) } finally { setIsActionLoading(false) + await revalidateTags(['courses'], orgslug) } }