mirror of
https://github.com/invoke-ai/InvokeAI.git
synced 2026-04-23 03:00:31 -04:00
fix(ui): return early in error-selecting hooks
Prevent an error when a node is deleted and the hook is being called
This commit is contained in:
@@ -2,7 +2,7 @@ import { useStore } from '@nanostores/react';
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { useDebouncedAppSelector } from 'app/store/use-debounced-app-selector';
|
||||
import { $templates } from 'features/nodes/store/nodesSlice';
|
||||
import { selectFieldInputInstance, selectInvocationNode, selectNodesSlice } from 'features/nodes/store/selectors';
|
||||
import { selectFieldInputInstance, selectInvocationNodeSafe, selectNodesSlice } from 'features/nodes/store/selectors';
|
||||
import { getFieldErrors } from 'features/nodes/store/util/fieldValidators';
|
||||
import { useMemo } from 'react';
|
||||
import { assert } from 'tsafe';
|
||||
@@ -20,7 +20,11 @@ export const useInputFieldErrors = (nodeId: string, fieldName: string) => {
|
||||
const selectFieldErrors = useMemo(
|
||||
() =>
|
||||
createSelector(selectNodesSlice, (nodes) => {
|
||||
const node = selectInvocationNode(nodes, nodeId);
|
||||
const node = selectInvocationNodeSafe(nodes, nodeId);
|
||||
if (!node) {
|
||||
// If the node is not found, return an empty array - might happen during node deletion
|
||||
return [];
|
||||
}
|
||||
const field = selectFieldInputInstance(nodes, nodeId, fieldName);
|
||||
|
||||
const nodeTemplate = templates[node.data.type];
|
||||
|
||||
@@ -2,7 +2,7 @@ import { useStore } from '@nanostores/react';
|
||||
import { createSelector } from '@reduxjs/toolkit';
|
||||
import { useDebouncedAppSelector } from 'app/store/use-debounced-app-selector';
|
||||
import { $templates } from 'features/nodes/store/nodesSlice';
|
||||
import { selectFieldInputInstance, selectInvocationNode, selectNodesSlice } from 'features/nodes/store/selectors';
|
||||
import { selectFieldInputInstance, selectInvocationNodeSafe, selectNodesSlice } from 'features/nodes/store/selectors';
|
||||
import { getFieldErrors } from 'features/nodes/store/util/fieldValidators';
|
||||
import { useMemo } from 'react';
|
||||
import { assert } from 'tsafe';
|
||||
@@ -22,7 +22,11 @@ export const useInputFieldIsInvalid = (nodeId: string, fieldName: string) => {
|
||||
const selectIsInvalid = useMemo(
|
||||
() =>
|
||||
createSelector(selectNodesSlice, (nodes) => {
|
||||
const node = selectInvocationNode(nodes, nodeId);
|
||||
const node = selectInvocationNodeSafe(nodes, nodeId);
|
||||
if (!node) {
|
||||
// If the node is not found, return false - might happen during node deletion
|
||||
return false;
|
||||
}
|
||||
const field = selectFieldInputInstance(nodes, nodeId, fieldName);
|
||||
|
||||
const nodeTemplate = templates[node.data.type];
|
||||
|
||||
Reference in New Issue
Block a user