Skip to content

Commit d7e0ec5

Browse files
feat(ui): make model install tab controlled
This lets us navigate directly to eg the Starter Models tab
1 parent 1072b74 commit d7e0ec5

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

invokeai/frontend/web/src/features/modelManagerV2/hooks/useStarterModelsToast.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Button, Text, useToast } from '@invoke-ai/ui-library';
22
import { useAppDispatch } from 'app/store/storeHooks';
3+
import { $installModelsTab } from 'features/modelManagerV2/subpanels/InstallModels';
34
import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus';
45
import { setActiveTab } from 'features/ui/store/uiSlice';
56
import { useCallback, useEffect, useState } from 'react';
@@ -44,6 +45,7 @@ const ToastDescription = () => {
4445

4546
const onClick = useCallback(() => {
4647
dispatch(setActiveTab('models'));
48+
$installModelsTab.set(3)
4749
toast.close(TOAST_ID);
4850
}, [dispatch, toast]);
4951

invokeai/frontend/web/src/features/modelManagerV2/subpanels/InstallModels.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
import { Box, Flex, Heading, Tab, TabList, TabPanel, TabPanels, Tabs } from '@invoke-ai/ui-library';
2+
import { useStore } from '@nanostores/react';
23
import { StarterModelsForm } from 'features/modelManagerV2/subpanels/AddModelPanel/StarterModels/StarterModelsForm';
3-
import { useMemo } from 'react';
4+
import { atom } from 'nanostores';
5+
import { useCallback } from 'react';
46
import { useTranslation } from 'react-i18next';
5-
import { useMainModels } from 'services/api/hooks/modelsByType';
67

78
import { HuggingFaceForm } from './AddModelPanel/HuggingFaceFolder/HuggingFaceForm';
89
import { InstallModelForm } from './AddModelPanel/InstallModelForm';
910
import { ModelInstallQueue } from './AddModelPanel/ModelInstallQueue/ModelInstallQueue';
1011
import { ScanModelsForm } from './AddModelPanel/ScanFolder/ScanFolderForm';
1112

13+
export const $installModelsTab = atom(0);
14+
1215
export const InstallModels = () => {
1316
const { t } = useTranslation();
14-
const [mainModels, { data }] = useMainModels();
15-
const defaultIndex = useMemo(() => {
16-
if (data && mainModels.length) {
17-
return 0;
18-
}
19-
return 3;
20-
}, [data, mainModels.length]);
17+
const index = useStore($installModelsTab);
18+
const onChange = useCallback((index: number) => {
19+
$installModelsTab.set(index);
20+
}, []);
2121

2222
return (
2323
<Flex layerStyle="first" borderRadius="base" w="full" h="full" flexDir="column" gap={4}>
2424
<Heading fontSize="xl">{t('modelManager.addModel')}</Heading>
25-
<Tabs variant="collapse" height="50%" display="flex" flexDir="column" defaultIndex={defaultIndex}>
25+
<Tabs variant="collapse" height="50%" display="flex" flexDir="column" index={index} onChange={onChange}>
2626
<TabList>
2727
<Tab>{t('modelManager.urlOrLocalPath')}</Tab>
2828
<Tab>{t('modelManager.huggingFace')}</Tab>

0 commit comments

Comments
 (0)