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 fcdc1948..eb52b567 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 @@ -1,27 +1,19 @@ 'use client' import Link from 'next/link' import { getAPIUrl, getUriWithOrg } from '@services/config/config' -import Canva from '@components/Objects/Activities/DynamicCanva/DynamicCanva' -import VideoActivity from '@components/Objects/Activities/Video/Video' import { BookOpenCheck, Check, CheckCircle, ChevronDown, ChevronLeft, ChevronRight, FileText, Folder, List, Menu, MoreVertical, UserRoundPen, Video, Layers, ListFilter, ListTree, X, Edit2, EllipsisVertical, Maximize2, Minimize2 } from 'lucide-react' import { markActivityAsComplete, unmarkActivityAsComplete } from '@services/courses/activity' -import DocumentPdfActivity from '@components/Objects/Activities/DocumentPdf/DocumentPdf' -import ActivityIndicators from '@components/Pages/Courses/ActivityIndicators' -import GeneralWrapperStyled from '@components/Objects/StyledElements/Wrappers/GeneralWrapper' import { usePathname, useRouter } from 'next/navigation' import AuthenticatedClientElement from '@components/Security/AuthenticatedClientElement' import { getCourseThumbnailMediaDirectory } from '@services/media/media' import { useOrg } from '@components/Contexts/OrgContext' import { CourseProvider } from '@components/Contexts/CourseContext' -import AIActivityAsk from '@components/Objects/Activities/AI/AIActivityAsk' -import AIChatBotProvider from '@components/Contexts/AI/AIChatBotContext' import { useLHSession } from '@components/Contexts/LHSessionContext' -import React, { useEffect, useRef } from 'react' +import React, { useEffect, useRef, useMemo, lazy, Suspense } from 'react' import { getAssignmentFromActivityUUID, getFinalGrade, submitAssignmentForGrading } from '@services/courses/assignments' -import AssignmentStudentActivity from '@components/Objects/Activities/Assignment/AssignmentStudentActivity' import { AssignmentProvider } from '@components/Contexts/Assignments/AssignmentContext' import { AssignmentsTaskProvider } from '@components/Contexts/Assignments/AssignmentsTaskContext' -import AssignmentSubmissionProvider, { useAssignmentSubmission } from '@components/Contexts/Assignments/AssignmentSubmissionContext' +import AssignmentSubmissionProvider, { useAssignmentSubmission } from '@components/Contexts/Assignments/AssignmentSubmissionContext' import toast from 'react-hot-toast' import { mutate } from 'swr' import ConfirmationModal from '@components/Objects/StyledElements/ConfirmationModal/ConfirmationModal' @@ -36,7 +28,26 @@ import CourseEndView from '@components/Pages/Activity/CourseEndView' import { motion, AnimatePresence } from 'framer-motion' 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' +// Lazy load heavy components +const Canva = lazy(() => import('@components/Objects/Activities/DynamicCanva/DynamicCanva')) +const VideoActivity = lazy(() => import('@components/Objects/Activities/Video/Video')) +const DocumentPdfActivity = lazy(() => import('@components/Objects/Activities/DocumentPdf/DocumentPdf')) +const AssignmentStudentActivity = lazy(() => import('@components/Objects/Activities/Assignment/AssignmentStudentActivity')) +const AIActivityAsk = lazy(() => import('@components/Objects/Activities/AI/AIActivityAsk')) +const AIChatBotProvider = lazy(() => import('@components/Contexts/AI/AIChatBotContext')) + +// Loading fallback component +const LoadingFallback = () => ( +
Course
-Course
-Course
+- Chapter : {getChapterNameByActivityId(course, activity.id)} -
-Course
++ Chapter : {getChapterNameByActivityId(course, activity.id)} +
+Course
+Course
-