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.

) : (
Problem with Nvidia drivers. Please follow the{' '} Nvidia Drivers guideline {' '} to access installation instructions and ensure proper functioning of the application.
)} ) } else { return (
Apologies, {`Something's wrong.`}. 

Access  setModalTroubleShooting(true)} > troubleshooting assistance  now.

) } } return (

) } export default LoadModelError