46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
import { useMemo } from 'react'
|
|
|
|
import { InferenceEngine, EngineConfig } from '@janhq/core'
|
|
import { useAtomValue } from 'jotai'
|
|
|
|
import { isLocalEngine } from '@/utils/modelEngine'
|
|
|
|
import { installedEnginesAtom } from '@/helpers/atoms/Engines.atom'
|
|
import { downloadedModelsAtom } from '@/helpers/atoms/Model.atom'
|
|
import { threadsAtom } from '@/helpers/atoms/Thread.atom'
|
|
|
|
export function useStarterScreen() {
|
|
const downloadedModels = useAtomValue(downloadedModelsAtom)
|
|
const threads = useAtomValue(threadsAtom)
|
|
|
|
const engines = useAtomValue(installedEnginesAtom)
|
|
|
|
const remoteEngines =
|
|
engines &&
|
|
Object.entries(engines)
|
|
.filter(([key]) => !isLocalEngine(engines, key as InferenceEngine))
|
|
.flatMap(([_, engineArray]) => engineArray as EngineConfig)
|
|
|
|
const isDownloadALocalModel = useMemo(
|
|
() =>
|
|
downloadedModels.some((x) => engines && isLocalEngine(engines, x.engine)),
|
|
[engines, downloadedModels]
|
|
)
|
|
|
|
const isAnyRemoteModelConfigured = useMemo(
|
|
() => (remoteEngines ?? []).some((x) => x.api_key && x.api_key.length > 0),
|
|
[remoteEngines]
|
|
)
|
|
|
|
const isShowStarterScreen = useMemo(
|
|
() =>
|
|
!isAnyRemoteModelConfigured && !isDownloadALocalModel && !threads.length,
|
|
[isAnyRemoteModelConfigured, isDownloadALocalModel, threads]
|
|
)
|
|
|
|
return {
|
|
isShowStarterScreen,
|
|
}
|
|
}
|