jan/web/hooks/useEngineInit.ts
Louis 98abff0da3
fix: remote engine should not allow reinit (#3284)
* chore: local engines should not allow reinit

* fix: remote engines should not have install action
2024-08-07 12:45:47 +07:00

40 lines
1.2 KiB
TypeScript

import { Engine } from '@cortexso/cortex.js/resources'
import { EngineStatus } from '@janhq/core'
import { useMutation, useQueryClient } from '@tanstack/react-query'
import useCortex from './useCortex'
import { engineQueryKey } from './useEngineQuery'
const useEngineInit = () => {
const { initializeEngine } = useCortex()
const queryClient = useQueryClient()
return useMutation({
mutationFn: initializeEngine,
onSuccess: async (data, engineName) => {
console.debug(`Engine ${engineName} initialized`, data)
// optimistically set the engine status to 'ready'
const queryCacheData = await queryClient.getQueryData(engineQueryKey)
if (!queryCacheData) {
return queryClient.invalidateQueries({ queryKey: engineQueryKey })
}
const engineStatuses = queryCacheData as Engine[]
engineStatuses.forEach((engine) => {
if (engine.name === engineName) {
engine.status = EngineStatus.Ready
}
})
console.debug(`Updated engine status: ${engineStatuses}`)
await queryClient.setQueryData(engineQueryKey, engineStatuses)
},
onError(error, variables) {
console.error(`Engine ${variables} failed to initialize`, error)
},
})
}
export default useEngineInit