import { EngineManager, ErrorCode, MessageStatus, ThreadMessage, } from '@janhq/core' import { useAtomValue, useSetAtom } from 'jotai' import AutoLink from '@/containers/AutoLink' import ModalTroubleShooting, { modalTroubleShootingAtom, } from '@/containers/ModalTroubleShoot' import { MainViewState } from '@/constants/screens' import { isLocalEngine } from '@/utils/modelEngine' import { mainViewStateAtom } from '@/helpers/atoms/App.atom' import { activeAssistantAtom } from '@/helpers/atoms/Assistant.atom' import { selectedSettingAtom } from '@/helpers/atoms/Setting.atom' const ErrorMessage = ({ message }: { message: ThreadMessage }) => { const setModalTroubleShooting = useSetAtom(modalTroubleShootingAtom) const setMainState = useSetAtom(mainViewStateAtom) const setSelectedSettingScreen = useSetAtom(selectedSettingAtom) const activeAssistant = useAtomValue(activeAssistantAtom) const defaultDesc = () => { return ( <>

{`Something's wrong.`} Access  setModalTroubleShooting(true)} > troubleshooting assistance  now.

) } const getEngine = () => { const engineName = activeAssistant?.model?.engine return engineName ? EngineManager.instance().get(engineName) : null } const getErrorTitle = () => { const engine = getEngine() switch (message.metadata?.error_code) { case ErrorCode.InvalidApiKey: case ErrorCode.AuthenticationError: return ( <> Invalid API key. Please check your API key from{' '} {' '} and try again. {defaultDesc()} ) default: return (

{message.content[0]?.text?.value === 'Failed to fetch' && engine && !isLocalEngine(String(engine?.name)) ? ( No internet connection.
Switch to an on-device model or check connection.
) : ( <> {message?.content[0]?.text?.value && ( )} {defaultDesc()} )}

) } } return (
{!!message.metadata?.error && (
{getErrorTitle()}
)}
) } export default ErrorMessage