import { useEffect, useState } from 'react' import { Model } from '@janhq/core' import { Button, Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from '@janhq/uikit' import { atom, useAtomValue, useSetAtom } from 'jotai' import { MonitorIcon } from 'lucide-react' import { twMerge } from 'tailwind-merge' import { MainViewState } from '@/constants/screens' import { useActiveModel } from '@/hooks/useActiveModel' import { getDownloadedModels } from '@/hooks/useGetDownloadedModels' import { useMainViewState } from '@/hooks/useMainViewState' import { toGigabytes } from '@/utils/converter' import { activeThreadAtom } from '@/helpers/atoms/Conversation.atom' export const selectedModelAtom = atom(undefined) export default function DropdownListSidebar() { const [downloadedModels, setDownloadedModels] = useState([]) const setSelectedModel = useSetAtom(selectedModelAtom) const activeThread = useAtomValue(activeThreadAtom) const [selected, setSelected] = useState() const { setMainViewState } = useMainViewState() const { activeModel, stateModel } = useActiveModel() useEffect(() => { getDownloadedModels().then((downloadedModels) => { setDownloadedModels(downloadedModels) if (downloadedModels.length > 0) { setSelected( downloadedModels.filter( (x) => x.id === activeThread?.assistants[0].model.id || x.id === activeModel?.id )[0] || downloadedModels[0] ) setSelectedModel( downloadedModels.filter( (x) => x.id === activeThread?.assistants[0].model.id || x.id === activeModel?.id )[0] || downloadedModels[0] ) } }) // eslint-disable-next-line react-hooks/exhaustive-deps }, [activeThread, activeModel]) if (stateModel.loading) return null return ( ) }