diff --git a/packages/alea-frontend/hooks/useStudentCount.ts b/packages/alea-frontend/hooks/useStudentCount.ts index 38ffdadb..ccf3efd1 100644 --- a/packages/alea-frontend/hooks/useStudentCount.ts +++ b/packages/alea-frontend/hooks/useStudentCount.ts @@ -1,7 +1,7 @@ import { getStudentCountInCourse } from '@alea/spec'; import { useEffect, useState } from 'react'; -export function useStudentCount(courseId?: string, instanceId?: string) { +export function useStudentCount(courseId?: string, instanceId?: string, reFetch?: boolean) { const [studentCount, setStudentCount] = useState(null); useEffect(() => { @@ -18,7 +18,7 @@ export function useStudentCount(courseId?: string, instanceId?: string) { console.error('Error fetching student count:', err); setStudentCount(null); }); - }, [courseId]); + }, [courseId, instanceId, reFetch]); return studentCount; } diff --git a/packages/alea-frontend/pages/[institutionId]/[courseId]/[instance]/index.tsx b/packages/alea-frontend/pages/[institutionId]/[courseId]/[instance]/index.tsx index f6cba674..15dd7054 100644 --- a/packages/alea-frontend/pages/[institutionId]/[courseId]/[instance]/index.tsx +++ b/packages/alea-frontend/pages/[institutionId]/[courseId]/[instance]/index.tsx @@ -28,6 +28,7 @@ import { ResourceName, pathToCheatSheet, } from '@alea/utils'; +import { getSemesterInfo } from '@alea/spec'; import { SafeFTMLDocument } from '@alea/stex-react-renderer'; import ArticleIcon from '@mui/icons-material/Article'; import AssignmentTurnedInIcon from '@mui/icons-material/AssignmentTurnedIn'; @@ -501,7 +502,6 @@ const CourseHomePage: NextPage = () => { const [searchQuery, setSearchQuery] = useState(''); const [seriesId, setSeriesId] = useState(''); - const studentCount = useStudentCount(courseId, currentTerm); const queryClient = useQueryClient(); useEffect(() => { if (!courseId || !currentTerm) return; @@ -533,7 +533,7 @@ const CourseHomePage: NextPage = () => { }, }); const enrolled = !isFetching && isEnrolled === true; - + const studentCount = useStudentCount(courseId, currentTerm, enrolled); const { data: hasInstructorAccess, isFetching: isInstructorFetching } = useQuery({ queryKey: ['is-instructor', courseId, currentTerm], enabled: Boolean(courseId && currentTerm), @@ -557,6 +557,18 @@ const CourseHomePage: NextPage = () => { enabled: Boolean(courseId && currentTerm), queryFn: () => getCourseInfoMetadata(courseId!, currentTerm!), }); + + const { data: semesterInfo } = useQuery({ + queryKey: ['semester-info', institutionId, currentTerm], + enabled: Boolean(institutionId && currentTerm), + queryFn: () => getSemesterInfo(institutionId!, currentTerm!), + }); + + const isSemesterOver = + semesterInfo && semesterInfo.length > 0 + ? new Date() > new Date(semesterInfo[0].semesterEnd) + : false; + if (isValidating) return null; if (validationError) { return ( @@ -749,7 +761,7 @@ const CourseHomePage: NextPage = () => { )} - {enrolled === false && ( + {enrolled === false && !isSemesterOver && ( { )} - {enrolled && ( + {enrolled && !isSemesterOver && ( {studentCount !== null && ( { ); }; -export default CourseHomePage; \ No newline at end of file +export default CourseHomePage;