import { Fragment, useEffect, useState, useCallback } from 'react' import { Modal } from '@janhq/joi' import { useAtom } from 'jotai' import HeaderModal from './HeaderModal' import HfListModel from './HfListModel' import ListModel from './ListModel' import ModelInformation from './ModelInformation' import Tab, { ModelTab } from './Tab' import { localModelModalStageAtom } from '@/helpers/atoms/DownloadLocalModel.atom' const DownloadLocalModelModal: React.FC = () => { const [availableModels, setAvailableModels] = useState([]) const [{ stage, modelHandle }, setLocalModelModalStage] = useAtom( localModelModalStageAtom ) const [tab, setTab] = useState('Versions') const [height, setHeight] = useState(0) useEffect(() => { const updateHeight = () => { setHeight(window.innerHeight - window.innerHeight * 0.4) } window.addEventListener('resize', updateHeight) updateHeight() return () => { window.removeEventListener('resize', updateHeight) } }, []) const modelName = modelHandle?.split('/')[1] ?? '' const isFromCortexHub = modelHandle?.includes('cortexso') ?? false const onModelBranchChanged = useCallback( (models: string[]) => { const isFromCortexHub = modelHandle?.includes('cortexso') ?? false if (isFromCortexHub) { setAvailableModels(models) } else { setAvailableModels(modelHandle != null ? [modelHandle] : []) } }, [modelHandle] ) if (!modelHandle) return null return ( setLocalModelModalStage('NONE', undefined)} content={ {}} isLocalModel={true} availableModels={availableModels} /> setTab(input as 'Versions' | 'Information')} /> {tab === 'Versions' && (isFromCortexHub ? ( ) : ( ))} {tab === 'Information' && ( )} } /> ) } export default DownloadLocalModelModal