import { useCallback, useMemo } from 'react' import Image from 'next/image' import { EngineStatus, RemoteEngine, RemoteEngines } from '@janhq/core' import { Button } from '@janhq/joi' import { useSetAtom } from 'jotai' import { Settings } from 'lucide-react' import useEngineQuery from '@/hooks/useEngineQuery' import { ModelHubCategory } from '@/hooks/useModelHub' import { getDescriptionByCategory, getTitleByCategory, } from '@/utils/model-engine' import { setUpRemoteModelStageAtom } from '@/helpers/atoms/SetupRemoteModel.atom' type Props = { category: ModelHubCategory imageUrl?: string apiKeyUrl?: string } const GroupInfo: React.FC = ({ category, imageUrl, apiKeyUrl }) => { const title = getTitleByCategory(category) const description = getDescriptionByCategory(category) const remoteEngine = RemoteEngines.find((engine) => engine === category) return (
{imageUrl && ( Group Logo )} {title} {remoteEngine && ( )}
{description}
) } type SetUpProps = { engine: RemoteEngine imageUrl?: string apiKeyUrl?: string } const SetUpComponent: React.FC = ({ imageUrl, engine, apiKeyUrl, }) => { const { data: engineData } = useEngineQuery() const setUpRemoteModelStage = useSetAtom(setUpRemoteModelStageAtom) const isHasApiKey = useMemo( () => engineData == null ? false : engineData.find((e) => e.name === engine)?.status === EngineStatus.Ready, [engineData, engine] ) const onSetUpClick = useCallback(() => { setUpRemoteModelStage('SETUP_API_KEY', engine, { logo: imageUrl, api_key_url: apiKeyUrl, }) }, [setUpRemoteModelStage, engine, imageUrl, apiKeyUrl]) return (
{isHasApiKey ? ( ) : ( )}
) } export default GroupInfo