mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-02-12 12:35:01 -05:00
fix(ui): restore deduping logic in node field element selectors
This is required for some publishing functionality
This commit is contained in:
@@ -6,7 +6,7 @@ import { $templates } from 'features/nodes/store/nodesSlice';
|
||||
import {
|
||||
selectNodes,
|
||||
selectNodesSlice,
|
||||
selectWorkflowFormNodeFieldFieldIdentifiers,
|
||||
selectWorkflowFormNodeFieldFieldIdentifiersDeduped,
|
||||
selectWorkflowId,
|
||||
} from 'features/nodes/store/selectors';
|
||||
import type { Templates } from 'features/nodes/store/types';
|
||||
@@ -54,7 +54,7 @@ export const useIsValidationRunInProgress = () => {
|
||||
};
|
||||
|
||||
export const selectFieldIdentifiersWithInvocationTypes = createSelector(
|
||||
selectWorkflowFormNodeFieldFieldIdentifiers,
|
||||
selectWorkflowFormNodeFieldFieldIdentifiersDeduped,
|
||||
selectNodesSlice,
|
||||
(fieldIdentifiers, nodes) => {
|
||||
const result: FieldIdentiferWithLabelAndType[] = [];
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import type { Selector } from '@reduxjs/toolkit';
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import type { RootState } from 'app/store/store';
|
||||
import { uniqBy } from 'es-toolkit/compat';
|
||||
import { getElement } from 'features/nodes/components/sidePanel/builder/form-manipulation';
|
||||
import type { NodesState } from 'features/nodes/store/types';
|
||||
import type { FieldInputInstance } from 'features/nodes/types/field';
|
||||
@@ -93,13 +94,16 @@ export const selectFormInitialValues = createNodesSelector((workflow) => workflo
|
||||
export const selectNodeFieldElements = createNodesSelector((workflow) =>
|
||||
Object.values(workflow.form.elements).filter(isNodeFieldElement)
|
||||
);
|
||||
export const selectWorkflowFormNodeFieldFieldIdentifiers = createSelector(
|
||||
export const selectWorkflowFormNodeFieldFieldIdentifiersDeduped = createSelector(
|
||||
selectNodeFieldElements,
|
||||
(nodeFieldElements) => nodeFieldElements.map((el) => el.data.fieldIdentifier)
|
||||
(nodeFieldElements) =>
|
||||
uniqBy(nodeFieldElements, (el) => `${el.data.fieldIdentifier.nodeId}-${el.data.fieldIdentifier.fieldName}`).map(
|
||||
(el) => el.data.fieldIdentifier
|
||||
)
|
||||
);
|
||||
|
||||
export const buildSelectElement = (id: string) => createNodesSelector((workflow) => workflow.form?.elements[id]);
|
||||
export const buildSelectWorkflowFormNodeExists = (nodeId: string, fieldName: string) =>
|
||||
createSelector(selectWorkflowFormNodeFieldFieldIdentifiers, (identifiers) =>
|
||||
createSelector(selectWorkflowFormNodeFieldFieldIdentifiersDeduped, (identifiers) =>
|
||||
identifiers.some((identifier) => identifier.nodeId === nodeId && identifier.fieldName === fieldName)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user