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, threadStatesAtom } from '@/helpers/atoms/Thread.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 )[0] || downloadedModels[0] ) setSelectedModel( downloadedModels.filter( (x) => x.id === activeThread?.assistants[0].model.id )[0] || downloadedModels[0] ) } }) console.log(selected) // eslint-disable-next-line react-hooks/exhaustive-deps }, [activeThread, activeModel, stateModel.loading]) const threadStates = useAtomValue(threadStatesAtom) if (!activeThread) { return null } const finishInit = threadStates[activeThread.id].isFinishInit ?? true const onValueSelected = (value: string) => { setSelected(downloadedModels.filter((x) => x.id === value)[0]) setSelectedModel(downloadedModels.filter((x) => x.id === value)[0]) } return ( ) }