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 { selectNodesSlice } from 'features/nodes/store/nodesSlice';
|
||||
import { selectWorkflowSlice } from 'features/nodes/store/workflowSlice';
|
||||
import type { WorkflowV2 } from 'features/nodes/types/workflow';
|
||||
import type { BuildWorkflowArg } 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));
|
||||
}, 300);
|
||||
|
||||
const selectWorkflowSlices = createSelector(
|
||||
selectNodesSlice,
|
||||
selectWorkflowSlice,
|
||||
(nodes, workflow) => ({ nodes: nodes.nodes, edges: nodes.edges, workflow })
|
||||
);
|
||||
|
||||
export const useWorkflowWatcher = () => {
|
||||
const buildWorkflowArg = useAppSelector(({ nodes, workflow }) => ({
|
||||
nodes: nodes.nodes,
|
||||
edges: nodes.edges,
|
||||
workflow,
|
||||
}));
|
||||
const buildWorkflowArg = useAppSelector(selectWorkflowSlices);
|
||||
|
||||
useEffect(() => {
|
||||
debouncedBuildWorkflow(buildWorkflowArg);
|
||||
|
Loading…
Reference in New Issue
Block a user