| | import { EMPTY_ARRAY } from 'app/store/constants'; |
| | import { useCallback } from 'react'; |
| | import { modelConfigsAdapterSelectors, useGetModelConfigsQuery } from 'services/api/endpoints/models'; |
| | import type { StarterModel } from 'services/api/types'; |
| |
|
| | type ModelInstallArg = { |
| | config: Pick<StarterModel, 'name' | 'base' | 'type' | 'description' | 'format'>; |
| | source: string; |
| | }; |
| |
|
| | |
| | |
| | |
| | export const flattenStarterModel = (starterModel: StarterModel): StarterModel[] => { |
| | return [starterModel, ...(starterModel.dependencies || [])]; |
| | }; |
| |
|
| | export const useBuildModelInstallArg = () => { |
| | const { modelList } = useGetModelConfigsQuery(undefined, { |
| | selectFromResult: ({ data }) => ({ modelList: data ? modelConfigsAdapterSelectors.selectAll(data) : EMPTY_ARRAY }), |
| | }); |
| |
|
| | const getIsInstalled = useCallback( |
| | ({ source, name, base, type, is_installed, previous_names }: StarterModel): boolean => |
| | modelList.some( |
| | (mc) => |
| | is_installed || |
| | source === mc.source || |
| | (base === mc.base && (name === mc.name || previous_names?.includes(name)) && type === mc.type) |
| | ), |
| | [modelList] |
| | ); |
| |
|
| | const buildModelInstallArg = useCallback((starterModel: StarterModel): ModelInstallArg => { |
| | const { name, base, type, source, description, format } = starterModel; |
| |
|
| | return { |
| | config: { |
| | name, |
| | base, |
| | type, |
| | description, |
| | format, |
| | }, |
| | source, |
| | }; |
| | }, []); |
| |
|
| | return { getIsInstalled, buildModelInstallArg }; |
| | }; |
| |
|