* refactor: model plugin to follow new specs Signed-off-by: James <james@jan.ai> * chore: rebase main chore: rebase main --------- Signed-off-by: James <james@jan.ai> Co-authored-by: James <james@jan.ai> Co-authored-by: Louis <louis@jan.ai>
32 lines
847 B
TypeScript
32 lines
847 B
TypeScript
import { useEffect } from 'react'
|
|
|
|
import { PluginType } from '@janhq/core'
|
|
import { ModelPlugin } from '@janhq/core/lib/plugins'
|
|
import { Model } from '@janhq/core/lib/types'
|
|
|
|
import { atom, useAtom } from 'jotai'
|
|
|
|
import { pluginManager } from '@/plugin/PluginManager'
|
|
|
|
const downloadedModelsAtom = atom<Model[]>([])
|
|
|
|
export function useGetDownloadedModels() {
|
|
const [downloadedModels, setDownloadedModels] = useAtom(downloadedModelsAtom)
|
|
|
|
useEffect(() => {
|
|
getDownloadedModels().then((downloadedModels) => {
|
|
setDownloadedModels(downloadedModels)
|
|
})
|
|
}, [setDownloadedModels])
|
|
|
|
return { downloadedModels, setDownloadedModels }
|
|
}
|
|
|
|
export async function getDownloadedModels(): Promise<Model[]> {
|
|
const models = await pluginManager
|
|
.get<ModelPlugin>(PluginType.Model)
|
|
?.getDownloadedModels()
|
|
|
|
return models ?? []
|
|
}
|