import { EngineManager } from '@janhq/core' import { useAtomValue, useSetAtom } from 'jotai' import ModalTroubleShooting, { modalTroubleShootingAtom, } from '@/containers/ModalTroubleShoot' import { MainViewState } from '@/constants/screens' import { loadModelErrorAtom } from '@/hooks/useActiveModel' import { useSettings } from '@/hooks/useSettings' import { mainViewStateAtom } from '@/helpers/atoms/App.atom' import { selectedSettingAtom } from '@/helpers/atoms/Setting.atom' import { activeThreadAtom } from '@/helpers/atoms/Thread.atom' const LoadModelError = () => { const setModalTroubleShooting = useSetAtom(modalTroubleShootingAtom) const loadModelError = useAtomValue(loadModelErrorAtom) const setMainState = useSetAtom(mainViewStateAtom) const setSelectedSettingScreen = useSetAtom(selectedSettingAtom) const activeThread = useAtomValue(activeThreadAtom) const { settings } = useSettings() const PORT_NOT_AVAILABLE = 'PORT_NOT_AVAILABLE' const ErrorMessage = () => { if (loadModelError === PORT_NOT_AVAILABLE) { return (
Port 3928 is currently unavailable. Check for conflicting apps, or access setModalTroubleShooting(true)} > troubleshooting assistance
) } else if ( typeof loadModelError?.includes === 'function' && loadModelError.includes('EXTENSION_IS_NOT_INSTALLED') ) { return (Model is currently unavailable. Please switch to a different model or install the{' '} { setMainState(MainViewState.Settings) if (activeThread?.assistants[0]?.model.engine) { const engine = EngineManager.instance().get( activeThread.assistants[0].model.engine ) engine?.name && setSelectedSettingScreen(engine.name) } }} > {loadModelError.split('::')[1] ?? ''} {' '} to continue using it.
) } else if ( settings && settings.run_mode === 'gpu' && !settings.vulkan && (!settings.nvidia_driver?.exist || !settings.cuda?.exist) ) { return ( <> {!settings?.cuda.exist ? (The CUDA toolkit may be unavailable. Please use the{' '} { setMainState(MainViewState.Settings) if (activeThread?.assistants[0]?.model.engine) { const engine = EngineManager.instance().get( activeThread.assistants[0].model.engine ) engine?.name && setSelectedSettingScreen(engine.name) } }} > Install Additional Dependencies {' '} setting to proceed with the download / installation process.
) : (Access setModalTroubleShooting(true)} > troubleshooting assistance now.