Skip to content

Commit 26a9b31

Browse files
Mary Hipphipsterusername
authored andcommitted
convert LoRA picker to use new model picker component
1 parent d48140b commit 26a9b31

File tree

1 file changed

+22
-25
lines changed

1 file changed

+22
-25
lines changed
Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import type { ChakraProps } from '@invoke-ai/ui-library';
2-
import { Combobox, FormControl, FormLabel } from '@invoke-ai/ui-library';
1+
import { FormControl, FormLabel } from '@invoke-ai/ui-library';
32
import { createSelector } from '@reduxjs/toolkit';
43
import { useAppDispatch, useAppSelector } from 'app/store/storeHooks';
54
import { InformationalPopover } from 'common/components/InformationalPopover/InformationalPopover';
65
import { useRelatedGroupedModelCombobox } from 'common/hooks/useRelatedGroupedModelCombobox';
76
import { loraAdded, selectLoRAsSlice } from 'features/controlLayers/store/lorasSlice';
87
import { selectBase } from 'features/controlLayers/store/paramsSlice';
8+
import { ModelPicker } from 'features/parameters/components/ModelPicker';
99
import { memo, useCallback, useMemo } from 'react';
1010
import { useTranslation } from 'react-i18next';
1111
import { useLoRAModels } from 'services/api/hooks/modelsByType';
@@ -20,14 +20,17 @@ const LoRASelect = () => {
2020
const addedLoRAs = useAppSelector(selectLoRAs);
2121
const currentBaseModel = useAppSelector(selectBase);
2222

23-
const getIsDisabled = (model: LoRAModelConfig): boolean => {
24-
const isCompatible = currentBaseModel === model.base;
25-
const isAdded = Boolean(addedLoRAs.find((lora) => lora.model.key === model.key));
26-
const hasMainModel = Boolean(currentBaseModel);
27-
return !hasMainModel || !isCompatible || isAdded;
28-
};
23+
const getIsDisabled = useCallback(
24+
(model: LoRAModelConfig): boolean => {
25+
const isCompatible = currentBaseModel === model.base;
26+
const isAdded = Boolean(addedLoRAs.find((lora) => lora.model.key === model.key));
27+
const hasMainModel = Boolean(currentBaseModel);
28+
return !hasMainModel || !isCompatible || isAdded;
29+
},
30+
[addedLoRAs, currentBaseModel]
31+
);
2932

30-
const _onChange = useCallback(
33+
const onChange = useCallback(
3134
(model: LoRAModelConfig | null) => {
3235
if (!model) {
3336
return;
@@ -37,10 +40,10 @@ const LoRASelect = () => {
3740
[dispatch]
3841
);
3942

40-
const { options, onChange } = useRelatedGroupedModelCombobox({
43+
const { options } = useRelatedGroupedModelCombobox({
4144
modelConfigs,
4245
getIsDisabled,
43-
onChange: _onChange,
46+
onChange,
4447
});
4548

4649
const placeholder = useMemo(() => {
@@ -55,28 +58,22 @@ const LoRASelect = () => {
5558
return t('models.addLora');
5659
}, [isLoading, options.length, t]);
5760

58-
const noOptionsMessage = useCallback(() => t('models.noMatchingLoRAs'), [t]);
59-
6061
return (
61-
<FormControl isDisabled={!options.length} gap={2}>
62+
<FormControl gap={2}>
6263
<InformationalPopover feature="lora">
6364
<FormLabel>{t('models.concepts')} </FormLabel>
6465
</InformationalPopover>
65-
<Combobox
66-
placeholder={placeholder}
67-
value={null}
68-
options={options}
69-
noOptionsMessage={noOptionsMessage}
66+
<ModelPicker
67+
modelConfigs={modelConfigs}
7068
onChange={onChange}
71-
data-testid="add-lora"
72-
sx={selectStyles}
69+
grouped
70+
selectedModelConfig={undefined}
71+
allowEmpty
72+
placeholder={placeholder}
73+
getIsOptionDisabled={getIsDisabled}
7374
/>
7475
</FormControl>
7576
);
7677
};
7778

7879
export default memo(LoRASelect);
79-
80-
const selectStyles: ChakraProps['sx'] = {
81-
w: 'full',
82-
};

0 commit comments

Comments
 (0)