jan/web/hooks/useDownloadModel.ts
NamH 1bf4c1b621
feat: pre-populate Jan's /models folder (#796)
Signed-off-by: James <james@jan.ai>
Co-authored-by: James <james@jan.ai>
2023-12-01 18:03:51 +07:00

42 lines
997 B
TypeScript

import { Model, ExtensionType, ModelExtension } from '@janhq/core'
import { useAtom, useAtomValue } from 'jotai'
import { useDownloadState } from './useDownloadState'
import { extensionManager } from '@/extension/ExtensionManager'
import { downloadingModelsAtom } from '@/helpers/atoms/Model.atom'
export default function useDownloadModel() {
const { setDownloadState } = useDownloadState()
const [downloadingModels, setDownloadingModels] = useAtom(
downloadingModelsAtom
)
const downloadModel = async (model: Model) => {
// set an initial download state
setDownloadState({
modelId: model.id,
time: {
elapsed: 0,
remaining: 0,
},
speed: 0,
percent: 0,
size: {
total: 0,
transferred: 0,
},
})
setDownloadingModels([...downloadingModels, model])
await extensionManager
.get<ModelExtension>(ExtensionType.Model)
?.downloadModel(model)
}
return {
downloadModel,
}
}