refactor: DRY out and simplify setting active tool from toolbar (#7079)

This commit is contained in:
David Luzar 2023-10-04 00:16:54 +02:00 committed by GitHub
parent 12420592ef
commit 1f4f5e11ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 116 additions and 165 deletions

View file

@ -2552,10 +2552,11 @@ class App extends React.Component<AppProps, AppState> {
});
};
togglePenMode = () => {
togglePenMode = (force?: boolean) => {
this.setState((prevState) => {
return {
penMode: !prevState.penMode,
penMode: force ?? !prevState.penMode,
penDetected: true,
};
});
};
@ -3108,7 +3109,7 @@ class App extends React.Component<AppProps, AppState> {
}
});
private setActiveTool = (
setActiveTool = (
tool:
| {
type:
@ -3135,23 +3136,30 @@ class App extends React.Component<AppProps, AppState> {
if (nextActiveTool.type === "image") {
this.onImageAction();
}
if (nextActiveTool.type !== "selection") {
this.setState((prevState) => ({
activeTool: nextActiveTool,
selectedElementIds: makeNextSelectedElementIds({}, this.state),
selectedGroupIds: {},
editingGroupId: null,
snapLines: [],
originSnapOffset: null,
}));
} else {
this.setState({
activeTool: nextActiveTool,
snapLines: [],
this.setState((prevState) => {
const commonResets = {
snapLines: prevState.snapLines.length ? [] : prevState.snapLines,
originSnapOffset: null,
activeEmbeddable: null,
});
}
} as const;
if (nextActiveTool.type !== "selection") {
return {
...prevState,
activeTool: nextActiveTool,
selectedElementIds: makeNextSelectedElementIds({}, prevState),
selectedGroupIds: makeNextSelectedElementIds({}, prevState),
editingGroupId: null,
multiElement: null,
...commonResets,
};
}
return {
...prevState,
activeTool: nextActiveTool,
...commonResets,
};
});
};
private setCursor = (cursor: string) => {