refactor(ui): use dedicated allowPublishWorkflows instead of disabledFeatures

This commit is contained in:
psychedelicious
2025-04-03 06:34:39 +10:00
parent e4678201cb
commit ddddaef7ca
5 changed files with 15 additions and 12 deletions

View File

@@ -38,7 +38,7 @@ import { selectHasBatchOrGeneratorNodes } from 'features/nodes/store/selectors';
import { selectIsWorkflowSaved } from 'features/nodes/store/workflowSlice';
import { useEnqueueWorkflows } from 'features/queue/hooks/useEnqueueWorkflows';
import { $isReadyToEnqueue } from 'features/queue/store/readiness';
import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus';
import { selectAllowPublishWorkflows } from 'features/system/store/configSlice';
import { toast } from 'features/toast/toast';
import type { PropsWithChildren } from 'react';
import { memo, useCallback, useMemo } from 'react';
@@ -307,7 +307,7 @@ NodeOutputFieldPreview.displayName = 'NodeOutputFieldPreview';
export const StartPublishFlowButton = memo(() => {
const { t } = useTranslation();
const publishWorkflowIsEnabled = useFeatureStatus('publishWorkflow');
const allowPublishWorkflows = useAppSelector(selectAllowPublishWorkflows);
const isReadyToEnqueue = useStore($isReadyToEnqueue);
const isWorkflowSaved = useAppSelector(selectIsWorkflowSaved);
const hasBatchOrGeneratorNodes = useAppSelector(selectHasBatchOrGeneratorNodes);
@@ -331,7 +331,7 @@ export const StartPublishFlowButton = memo(() => {
leftIcon={<PiLightningFill />}
variant="ghost"
size="sm"
isDisabled={!publishWorkflowIsEnabled || !isWorkflowSaved || hasBatchOrGeneratorNodes}
isDisabled={!allowPublishWorkflows || !isWorkflowSaved || hasBatchOrGeneratorNodes}
>
{t('workflows.builder.publish')}
</Button>

View File

@@ -26,7 +26,7 @@ import {
workflowLibraryTagToggled,
workflowLibraryViewChanged,
} from 'features/nodes/store/workflowLibrarySlice';
import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus';
import { selectAllowPublishWorkflows } from 'features/system/store/configSlice';
import { NewWorkflowButton } from 'features/workflowLibrary/components/NewWorkflowButton';
import { UploadWorkflowButton } from 'features/workflowLibrary/components/UploadWorkflowButton';
import { OverlayScrollbarsComponent } from 'overlayscrollbars-react';
@@ -40,7 +40,7 @@ export const WorkflowLibrarySideNav = () => {
const { t } = useTranslation();
const categoryOptions = useStore($workflowLibraryCategoriesOptions);
const view = useAppSelector(selectWorkflowLibraryView);
const publishWorkflow = useFeatureStatus('publishWorkflow');
const allowPublishWorkflows = useAppSelector(selectAllowPublishWorkflows);
return (
<Flex h="full" minH={0} overflow="hidden" flexDir="column" w={64} gap={0}>
@@ -60,7 +60,7 @@ export const WorkflowLibrarySideNav = () => {
</Flex>
</Collapse>
)}
{publishWorkflow && (
{allowPublishWorkflows && (
<WorkflowLibraryViewButton view="published">{t('workflows.publishedWorkflows')}</WorkflowLibraryViewButton>
)}
</Flex>

View File

@@ -1,7 +1,8 @@
import { Spacer, Tab, TabList, TabPanel, TabPanels, Tabs } from '@invoke-ai/ui-library';
import { useAppSelector } from 'app/store/storeHooks';
import { WorkflowBuilder } from 'features/nodes/components/sidePanel/builder/WorkflowBuilder';
import { StartPublishFlowButton } from 'features/nodes/components/sidePanel/workflow/PublishWorkflowPanelContent';
import { useFeatureStatus } from 'features/system/hooks/useFeatureStatus';
import { selectAllowPublishWorkflows } from 'features/system/store/configSlice';
import { memo } from 'react';
import { useTranslation } from 'react-i18next';
@@ -10,7 +11,7 @@ import WorkflowJSONTab from './WorkflowJSONTab';
const WorkflowFieldsLinearViewPanel = () => {
const { t } = useTranslation();
const publishWorkflowIsEnabled = useFeatureStatus('publishWorkflow');
const allowPublishWorkflows = useAppSelector(selectAllowPublishWorkflows);
return (
<Tabs variant="enclosed" display="flex" w="full" h="full" flexDir="column">
<TabList>
@@ -18,7 +19,7 @@ const WorkflowFieldsLinearViewPanel = () => {
<Tab>{t('common.details')}</Tab>
<Tab>JSON</Tab>
<Spacer />
{publishWorkflowIsEnabled && <StartPublishFlowButton />}
{allowPublishWorkflows && <StartPublishFlowButton />}
</TabList>
<TabPanels h="full" pt={2}>

View File

@@ -21,8 +21,9 @@ const initialConfigState: AppConfig = {
allowPrivateBoards: false,
allowPrivateStylePresets: false,
allowClientSideUpload: false,
allowPublishWorkflows: false,
disabledTabs: [],
disabledFeatures: ['lightbox', 'faceRestore', 'batches', 'publishWorkflow'],
disabledFeatures: ['lightbox', 'faceRestore', 'batches'],
disabledSDFeatures: ['variation', 'symmetry', 'hires', 'perlinNoise', 'noiseThreshold'],
nodesAllowlist: undefined,
nodesDenylist: undefined,
@@ -220,4 +221,5 @@ export const selectMetadataFetchDebounce = createConfigSelector((config) => conf
export const selectIsModelsTabDisabled = createConfigSelector((config) => config.disabledTabs.includes('models'));
export const selectIsClientSideUploadEnabled = createConfigSelector((config) => config.allowClientSideUpload);
export const selectAllowPublishWorkflows = createConfigSelector((config) => config.allowPublishWorkflows);
export const selectIsLocal = createSelector(selectConfigSlice, (config) => config.isLocal);