import React, { Dispatch, SetStateAction, useState } from 'react'; import { LearnerAccessProps } from './Types/types'; import { UploadIcon, RepeatIcon } from './Assets/Icons'; import { useUserCertificatesQuery, useCreateCertificateFromUploadMutation, useUserCertificateFieldsQuery, LoadingDots, UserCertificatesQuery, hydrateContent } from '@thoughtindustries/content'; import useLearnerAccess from './Context/use-context'; import { t } from 'i18next'; import LearnerAccessGridView from './Views/GridView'; import { usePageContext } from '../../renderer/usePageContext'; import clsx from 'clsx'; import { useTranslation } from 'react-i18next'; import { Content } from '@thoughtindustries/content/src/graphql/global-types'; type RequiredUserCertifacesQuery = Required; type UserCertificate = RequiredUserCertifacesQuery['UserCertificates'][0]; interface CertificateProps { item: UserCertificate; } const Certificate = ({ item }: CertificateProps) => { const { i18n } = useTranslation(); const contentItem = item.contentItem as Content; const hydratedContentItem = hydrateContent(i18n, contentItem); return ; }; interface CertificateUploaderProps { setShowForm: Dispatch>; } const CertificateUploader = ({ setShowForm }: CertificateUploaderProps) => { return (
); }; type CertificateUploadFormProps = CertificateUploaderProps; const CertificateUploadForm = ({ setShowForm }: CertificateUploadFormProps) => { const [showFileImage, setShowFileImage] = useState(false); const [imageFromUpload, setImageFromUpload] = useState(''); const { data: certificateUploadFields } = useUserCertificateFieldsQuery({ variables: {} }); const uploadFields = certificateUploadFields?.UserCertificateFields?.map(certificateField => ({ certificateFieldId: certificateField.id, ...certificateField })); const [createCertificateFromUploadMutation] = useCreateCertificateFromUploadMutation({ variables: { asset: imageFromUpload, certificateUploadFields: uploadFields } }); const handleFileChange = (e: any) => { const files = e.target.files[0]; const reader = new FileReader(); setShowFileImage(true); if (files) reader.readAsDataURL(files); const url = reader?.result?.toString(); reader.onload = () => { setImageFromUpload(url || ''); }; }; return (

{!showFileImage && {t('external-certificate.instructions')}}

{!showFileImage ? ( { handleFileChange(e); }} /> ) : ( <> External Certificate )}
(e.target.type = 'text')} onFocus={e => (e.target.type = 'date')} />
(e.target.type = 'text')} onFocus={e => (e.target.type = 'date')} />
); }; const LoadCertificates = ({ query, displayExpiredCertificateInformation }: LearnerAccessProps): JSX.Element => { const [showForm, setShowForm] = useState(false); const { data, loading, error } = useUserCertificatesQuery({ variables: { query: query, includeExpiredCertificates: displayExpiredCertificateInformation }, fetchPolicy: 'network-only' }); const { companyEnableExternalCertificateUploads } = useLearnerAccess(); if (loading) return ; if (error) return <>{error.message}; if (showForm) return ; return ( <>
{data?.UserCertificates?.map(item => ( ))}
{!!companyEnableExternalCertificateUploads && ( )} ); }; export default LoadCertificates;