refactor(easy-peasy): return single values from useStoreState

This commit is contained in:
moklick
2020-05-25 17:12:11 +02:00
parent 17614bda6b
commit 56cfc8d731
10 changed files with 93 additions and 130 deletions
+11 -12
View File
@@ -2,8 +2,8 @@ import { useEffect } from 'react';
import { useStoreState, useStoreActions } from '../store/hooks';
import useKeyPress from './useKeyPress';
import { isEdge, getConnectedEdges } from '../utils/graph';
import { Elements, Node } from '../types';
import { isNode, getConnectedEdges } from '../utils/graph';
import { Elements } from '../types';
interface HookParams {
deleteKeyCode: number;
@@ -11,22 +11,21 @@ interface HookParams {
}
export default ({ deleteKeyCode, onElementsRemove }: HookParams): void => {
const state = useStoreState((s) => ({
selectedElements: s.selectedElements,
edges: s.edges,
}));
const selectedElements = useStoreState((s) => s.selectedElements);
const edges = useStoreState((s) => s.edges);
const setNodesSelection = useStoreActions((a) => a.setNodesSelection);
const deleteKeyPressed = useKeyPress(deleteKeyCode);
useEffect(() => {
if (onElementsRemove && deleteKeyPressed && state.selectedElements) {
let elementsToRemove = state.selectedElements;
if (onElementsRemove && deleteKeyPressed && selectedElements) {
let elementsToRemove = selectedElements;
// we also want to remove the edges if only one node is selected
if (state.selectedElements.length === 1 && !isEdge(state.selectedElements[0])) {
const node = (state.selectedElements[0] as unknown) as Node;
const connectedEdges = getConnectedEdges([node], state.edges);
elementsToRemove = [...state.selectedElements, ...connectedEdges];
if (selectedElements.length === 1 && isNode(selectedElements[0])) {
const node = selectedElements[0];
const connectedEdges = getConnectedEdges([node], edges);
elementsToRemove = [...selectedElements, ...connectedEdges];
}
onElementsRemove(elementsToRemove);