fix(ui): circular import issue

This commit is contained in:
psychedelicious
2025-05-22 14:18:02 +10:00
parent 02e4a3aa82
commit c4d1e78f59
13 changed files with 38 additions and 36 deletions

View File

@@ -26,7 +26,7 @@ import { CanvasToolbar } from 'features/controlLayers/components/Toolbar/CanvasT
import { Transform } from 'features/controlLayers/components/Transform/Transform';
import { CanvasManagerProviderGate } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
import { selectDynamicGrid, selectShowHUD } from 'features/controlLayers/store/canvasSettingsSlice';
import { selectIsSessionStarted } from 'features/controlLayers/store/selectors';
import { selectIsCanvasEmpty, selectIsSessionStarted } from 'features/controlLayers/store/selectors';
import { memo, useCallback } from 'react';
import { PiDotsThreeOutlineVerticalFill } from 'react-icons/pi';
@@ -51,8 +51,9 @@ MenuContent.displayName = 'MenuContent';
export const CanvasMainPanelContent = memo(() => {
const isSessionStarted = useAppSelector(selectIsSessionStarted);
const isCanvasEmpty = useAppSelector(selectIsCanvasEmpty);
if (!isSessionStarted) {
if (!isSessionStarted && isCanvasEmpty) {
return <CanvasNoSession />;
}

View File

@@ -18,7 +18,7 @@ import { upperFirst } from 'lodash-es';
import { memo, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { PiWarningBold } from 'react-icons/pi';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import { selectMainModelConfig } from 'features/controlLayers/store/paramsSlice';
import type { Equals } from 'tsafe';
import { assert } from 'tsafe';

View File

@@ -37,9 +37,9 @@ import { zModelIdentifierField } from 'features/nodes/types/common';
import { useCallback } from 'react';
import {
modelConfigsAdapterSelectors,
selectMainModelConfig,
selectModelConfigsQuery,
} from 'services/api/endpoints/models';
import { selectMainModelConfig } from '../store/paramsSlice';
import type {
ControlLoRAModelConfig,
ControlNetModelConfig,

View File

@@ -33,7 +33,7 @@ import { toast } from 'features/toast/toast';
import { useCallback, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import { serializeError } from 'serialize-error';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import { selectMainModelConfig } from '../store/paramsSlice';
import type { ImageDTO } from 'services/api/types';
import type { JsonObject } from 'type-fest';

View File

@@ -21,6 +21,8 @@ import type {
ParameterVAEModel,
} from 'features/parameters/types/parameterSchemas';
import { clamp } from 'lodash-es';
import { modelConfigsAdapterSelectors, selectModelConfigsQuery } from 'services/api/endpoints/models';
import { isNonRefinerMainModelConfig } from 'services/api/types';
import { newSessionRequested } from './actions';
@@ -336,3 +338,24 @@ export const selectRefinerNegativeAestheticScore = createParamsSelector(
export const selectRefinerScheduler = createParamsSelector((params) => params.refinerScheduler);
export const selectRefinerStart = createParamsSelector((params) => params.refinerStart);
export const selectRefinerSteps = createParamsSelector((params) => params.refinerSteps);
export const selectMainModelConfig = createSelector(
selectModelConfigsQuery,
selectParamsSlice,
(modelConfigs, { model }) => {
if (!modelConfigs.data) {
return null;
}
if (!model) {
return null;
}
const modelConfig = modelConfigsAdapterSelectors.selectById(modelConfigs.data, model.key);
if (!modelConfig) {
return null;
}
if (!isNonRefinerMainModelConfig(modelConfig)) {
return null;
}
return modelConfig;
}
);

View File

@@ -15,7 +15,7 @@ import {
} from 'features/nodes/util/graph/graphBuilderUtils';
import { type GraphBuilderReturn, UnsupportedGenerationModeError } from 'features/nodes/util/graph/types';
import { t } from 'i18next';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import { selectMainModelConfig } from 'features/controlLayers/store/paramsSlice';
import type { Equals } from 'tsafe';
import { assert } from 'tsafe';

View File

@@ -28,7 +28,7 @@ import {
UnsupportedGenerationModeError,
} from 'features/nodes/util/graph/types';
import { t } from 'i18next';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import { selectMainModelConfig } from 'features/controlLayers/store/paramsSlice';
import type { Invocation } from 'services/api/types';
import type { Equals } from 'tsafe';
import { assert } from 'tsafe';

View File

@@ -14,7 +14,7 @@ import {
} from 'features/nodes/util/graph/graphBuilderUtils';
import { type GraphBuilderReturn, UnsupportedGenerationModeError } from 'features/nodes/util/graph/types';
import { t } from 'i18next';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import { selectMainModelConfig } from 'features/controlLayers/store/paramsSlice';
import type { Equals } from 'tsafe';
import { assert } from 'tsafe';

View File

@@ -24,7 +24,7 @@ import {
selectPresetModifiedPrompts,
} from 'features/nodes/util/graph/graphBuilderUtils';
import type { GraphBuilderReturn, ImageOutputNodes } from 'features/nodes/util/graph/types';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import { selectMainModelConfig } from 'features/controlLayers/store/paramsSlice';
import type { Invocation } from 'services/api/types';
import type { Equals } from 'tsafe';
import { assert } from 'tsafe';

View File

@@ -19,7 +19,7 @@ import {
selectPresetModifiedPrompts,
} from 'features/nodes/util/graph/graphBuilderUtils';
import type { GraphBuilderReturn, ImageOutputNodes } from 'features/nodes/util/graph/types';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import { selectMainModelConfig } from 'features/controlLayers/store/paramsSlice';
import type { Invocation } from 'services/api/types';
import type { Equals } from 'tsafe';
import { assert } from 'tsafe';

View File

@@ -24,7 +24,7 @@ import {
selectPresetModifiedPrompts,
} from 'features/nodes/util/graph/graphBuilderUtils';
import type { GraphBuilderReturn, ImageOutputNodes } from 'features/nodes/util/graph/types';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import { selectMainModelConfig } from 'features/controlLayers/store/paramsSlice';
import type { Invocation } from 'services/api/types';
import type { Equals } from 'tsafe';
import { assert } from 'tsafe';

View File

@@ -8,7 +8,7 @@ import { useAppSelector } from 'app/store/storeHooks';
import type { AppConfig } from 'app/types/invokeai';
import { useAssertSingleton } from 'common/hooks/useAssertSingleton';
import { useCanvasManagerSafe } from 'features/controlLayers/contexts/CanvasManagerProviderGate';
import { selectParamsSlice } from 'features/controlLayers/store/paramsSlice';
import { selectMainModelConfig,selectParamsSlice } from 'features/controlLayers/store/paramsSlice';
import { selectCanvasSlice } from 'features/controlLayers/store/selectors';
import type { CanvasState, ParamsState } from 'features/controlLayers/store/types';
import {
@@ -42,7 +42,6 @@ import i18n from 'i18next';
import { debounce, groupBy, upperFirst } from 'lodash-es';
import { atom, computed } from 'nanostores';
import { useEffect } from 'react';
import { selectMainModelConfig } from 'services/api/endpoints/models';
import type { MainModelConfig } from 'services/api/types';
import { $isConnected } from 'services/events/stores';

View File

@@ -1,7 +1,6 @@
import type { EntityState } from '@reduxjs/toolkit';
import { createEntityAdapter, createSelector } from '@reduxjs/toolkit';
import { createEntityAdapter } from '@reduxjs/toolkit';
import { getSelectorsOptions } from 'app/store/createMemoizedSelector';
import { selectParamsSlice } from 'features/controlLayers/store/paramsSlice';
import queryString from 'query-string';
import type { operations, paths } from 'services/api/schema';
import type {
@@ -11,7 +10,6 @@ import type {
SetHFTokenArg,
SetHFTokenResponse,
} from 'services/api/types';
import { isNonRefinerMainModelConfig } from 'services/api/types';
import type { Param0 } from 'tsafe';
import type { ApiTagDescription } from '..';
@@ -326,23 +324,4 @@ export const {
} = modelsApi;
export const selectModelConfigsQuery = modelsApi.endpoints.getModelConfigs.select();
export const selectMainModelConfig = createSelector(
selectModelConfigsQuery,
selectParamsSlice,
(modelConfigs, { model }) => {
if (!modelConfigs.data) {
return null;
}
if (!model) {
return null;
}
const modelConfig = modelConfigsAdapterSelectors.selectById(modelConfigs.data, model.key);
if (!modelConfig) {
return null;
}
if (!isNonRefinerMainModelConfig(modelConfig)) {
return null;
}
return modelConfig;
}
);