Files
InvokeAI/invokeai/frontend/web/src/features/system/components/ModelSelect.tsx
blessedcoolant 28373dbb98 cleanup: Updated model slice names to be more descriptive
Basically updated all slices to be more descriptive in their names. Did so in order to make sure theres good naming scheme available for secondary models.
2023-06-18 17:36:23 +12:00

61 lines
1.5 KiB
TypeScript

import { memo, useCallback, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
import IAIMantineSelect from 'common/components/IAIMantineSelect';
import {
modelSelected,
setCurrentModelType,
} from 'features/parameters/store/generationSlice';
import { modelSelector } from '../store/modelSelectors';
export type ModelLoaderTypes = 'sd1_model_loader' | 'sd2_model_loader';
const MODEL_LOADER_MAP = {
'sd-1': 'sd1_model_loader',
'sd-2': 'sd2_model_loader',
};
const ModelSelect = () => {
const dispatch = useAppDispatch();
const { t } = useTranslation();
const {
selectedModel,
sd1PipelineModelDropDownData,
sd2PipelineModelDropdownData,
} = useAppSelector(modelSelector);
useEffect(() => {
if (selectedModel)
dispatch(
setCurrentModelType(
MODEL_LOADER_MAP[selectedModel?.base_model] as ModelLoaderTypes
)
);
}, [dispatch, selectedModel]);
const handleChangeModel = useCallback(
(v: string | null) => {
if (!v) {
return;
}
dispatch(modelSelected(v));
},
[dispatch]
);
return (
<IAIMantineSelect
tooltip={selectedModel?.description}
label={t('modelManager.model')}
value={selectedModel?.name ?? ''}
placeholder="Pick one"
data={sd1PipelineModelDropDownData.concat(sd2PipelineModelDropdownData)}
onChange={handleChangeModel}
/>
);
};
export default memo(ModelSelect);