'use client' import { useOrg } from '@components/Contexts/OrgContext' import { getAPIUrl, getUriWithOrg } from '@services/config/config' import { removeCourse } from '@services/courses/activity' import { getCourseThumbnailMediaDirectory } from '@services/media/media' import { revalidateTags } from '@services/utils/ts/requests' import { useLHSession } from '@components/Contexts/LHSessionContext' import { getUserCertificates } from '@services/courses/certifications' import Link from 'next/link' import { useRouter } from 'next/navigation' import { useEffect, useState } from 'react' import { mutate } from 'swr' import { Award, ExternalLink } from 'lucide-react' interface TrailCourseElementProps { course: any run: any orgslug: string } function TrailCourseElement(props: TrailCourseElementProps) { const org = useOrg() as any const session = useLHSession() as any; const access_token = session?.data?.tokens?.access_token; const courseid = props.course.course_uuid.replace('course_', '') const course = props.course const router = useRouter() const course_total_steps = props.run.course_total_steps const course_completed_steps = props.run.steps.length const orgID = org?.id const course_progress = Math.round( (course_completed_steps / course_total_steps) * 100 ) const [courseCertificate, setCourseCertificate] = useState(null) const [isLoadingCertificate, setIsLoadingCertificate] = useState(false) async function quitCourse(course_uuid: string) { // Close activity let activity = await removeCourse(course_uuid, props.orgslug,access_token) // Mutate course await revalidateTags(['courses'], props.orgslug) router.refresh() // Mutate mutate(`${getAPIUrl()}trail/org/${orgID}/trail`) } // Fetch certificate for this course useEffect(() => { const fetchCourseCertificate = async () => { if (!access_token || course_progress < 100) return; setIsLoadingCertificate(true); try { const result = await getUserCertificates( props.course.course_uuid, access_token ); if (result.success && result.data && result.data.length > 0) { setCourseCertificate(result.data[0]); } } catch (error) { console.error('Error fetching course certificate:', error); } finally { setIsLoadingCertificate(false); } }; fetchCourseCertificate(); }, [access_token, course_progress, props.course.course_uuid]); useEffect(() => {}, [props.course, org]) return (

Course

{course.name}

{course_progress}%

{/* Certificate Section */} {course_progress === 100 && (
{isLoadingCertificate ? (
Loading...
) : courseCertificate ? (
Certificate
Verify
) : (
No certificate
)}
)}
) } export default TrailCourseElement