/* eslint-disable @typescript-eslint/no-explicit-any */ import { createFileRoute, useSearch } from '@tanstack/react-router' import ChatInput from '@/containers/ChatInput' import HeaderPage from '@/containers/HeaderPage' import { useTranslation } from '@/i18n/react-i18next-compat' import { useTools } from '@/hooks/useTools' import { cn } from '@/lib/utils' import { useModelProvider } from '@/hooks/useModelProvider' import SetupScreen from '@/containers/SetupScreen' import { route } from '@/constants/routes' type SearchParams = { 'model'?: { id: string provider: string } 'temporary-chat'?: boolean } import DropdownAssistant from '@/containers/DropdownAssistant' import { useEffect } from 'react' import { useThreads } from '@/hooks/useThreads' import { useMobileScreen } from '@/hooks/useMediaQuery' import { PlatformFeatures } from '@/lib/platform/const' import { PlatformFeature } from '@/lib/platform/types' import { TEMPORARY_CHAT_QUERY_ID } from '@/constants/chat' export const Route = createFileRoute(route.home as any)({ component: Index, validateSearch: (search: Record): SearchParams => { const result: SearchParams = { model: search.model as SearchParams['model'], } // Only include temporary-chat if it's explicitly true if ( search[TEMPORARY_CHAT_QUERY_ID] === 'true' || search[TEMPORARY_CHAT_QUERY_ID] === true ) { result['temporary-chat'] = true } return result }, }) function Index() { const { t } = useTranslation() const { providers } = useModelProvider() const search = useSearch({ from: route.home as any }) const selectedModel = search.model const isTemporaryChat = search['temporary-chat'] const { setCurrentThreadId } = useThreads() const isMobile = useMobileScreen() useTools() // Conditional to check if there are any valid providers // required min 1 api_key or 1 model in llama.cpp or jan provider const hasValidProviders = providers.some( (provider) => provider.api_key?.length || (provider.provider === 'llamacpp' && provider.models.length) || (provider.provider === 'jan' && provider.models.length) ) useEffect(() => { setCurrentThreadId(undefined) }, [setCurrentThreadId]) if (!hasValidProviders) { return } return (
{PlatformFeatures[PlatformFeature.ASSISTANTS] && }

{isTemporaryChat ? t('chat:temporaryChat') : t('chat:welcome')}

{isTemporaryChat ? t('chat:temporaryChatDescription') : t('chat:description')}

) }