mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
fix(ui): use memoized selector for workflow watcher
Minor perf improvement.
This commit is contained in:
parent
0809e832d4
commit
d6e2cb7cef
@ -1,4 +1,7 @@
|
|||||||
|
import { createSelector } from '@reduxjs/toolkit';
|
||||||
import { useAppSelector } from 'app/store/storeHooks';
|
import { useAppSelector } from 'app/store/storeHooks';
|
||||||
|
import { selectNodesSlice } from 'features/nodes/store/nodesSlice';
|
||||||
|
import { selectWorkflowSlice } from 'features/nodes/store/workflowSlice';
|
||||||
import type { WorkflowV2 } from 'features/nodes/types/workflow';
|
import type { WorkflowV2 } from 'features/nodes/types/workflow';
|
||||||
import type { BuildWorkflowArg } from 'features/nodes/util/workflow/buildWorkflow';
|
import type { BuildWorkflowArg } from 'features/nodes/util/workflow/buildWorkflow';
|
||||||
import { buildWorkflowFast } from 'features/nodes/util/workflow/buildWorkflow';
|
import { buildWorkflowFast } from 'features/nodes/util/workflow/buildWorkflow';
|
||||||
@ -12,12 +15,14 @@ const debouncedBuildWorkflow = debounce((arg: BuildWorkflowArg) => {
|
|||||||
$builtWorkflow.set(buildWorkflowFast(arg));
|
$builtWorkflow.set(buildWorkflowFast(arg));
|
||||||
}, 300);
|
}, 300);
|
||||||
|
|
||||||
|
const selectWorkflowSlices = createSelector(
|
||||||
|
selectNodesSlice,
|
||||||
|
selectWorkflowSlice,
|
||||||
|
(nodes, workflow) => ({ nodes: nodes.nodes, edges: nodes.edges, workflow })
|
||||||
|
);
|
||||||
|
|
||||||
export const useWorkflowWatcher = () => {
|
export const useWorkflowWatcher = () => {
|
||||||
const buildWorkflowArg = useAppSelector(({ nodes, workflow }) => ({
|
const buildWorkflowArg = useAppSelector(selectWorkflowSlices);
|
||||||
nodes: nodes.nodes,
|
|
||||||
edges: nodes.edges,
|
|
||||||
workflow,
|
|
||||||
}));
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
debouncedBuildWorkflow(buildWorkflowArg);
|
debouncedBuildWorkflow(buildWorkflowArg);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user