refactor(App): streamline generate tool state management
This commit is contained in:
14
view/App.tsx
14
view/App.tsx
@@ -29,21 +29,23 @@ export function App({ app }: AppProps) {
|
||||
const viewportActivityIsland = useViewportActivityIsland(viewport);
|
||||
const imageImport = useImageImport(app.store);
|
||||
const [layersOpen, setLayersOpen] = useState(false);
|
||||
const [generateOpen, setGenerateOpen] = useState(false);
|
||||
const previousGenerateTool = useRef<ToolId>("select");
|
||||
const transformTarget = transformSession?.target ?? selectedTransformTarget(document, selection);
|
||||
const activeArtboard = document.artboards.find((artboard) => artboard.id === selection.artboardId) ?? document.artboards[0];
|
||||
const generateOpen = tools.activeTool === "generate";
|
||||
|
||||
useEffect(() => {
|
||||
if (tools.activeTool !== "generate") previousGenerateTool.current = tools.activeTool;
|
||||
}, [tools.activeTool]);
|
||||
|
||||
const openGenerate = useCallback(() => {
|
||||
const activeTool = app.store.getState().editor.tools.activeTool;
|
||||
if (activeTool !== "generate") previousGenerateTool.current = activeTool;
|
||||
app.store.dispatch(commandIds.toolSetActive, { tool: "generate" });
|
||||
setLayersOpen(false);
|
||||
setGenerateOpen(true);
|
||||
}, [app.store]);
|
||||
|
||||
const closeGenerate = useCallback(() => {
|
||||
setGenerateOpen(false);
|
||||
if (app.store.getState().editor.tools.activeTool === "generate") {
|
||||
app.store.dispatch(commandIds.toolSetActive, { tool: previousGenerateTool.current });
|
||||
}
|
||||
@@ -80,12 +82,6 @@ export function App({ app }: AppProps) {
|
||||
const key = event.key.toLowerCase();
|
||||
const keybindEvent = keybindEventFromKeyboardEvent(event);
|
||||
|
||||
if (key === "g") {
|
||||
toggleGenerate();
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
const toolConsumed = handleToolKey({ event: keybindEvent, dispatch: app.store.dispatch });
|
||||
if (toolConsumed) {
|
||||
event.preventDefault();
|
||||
|
||||
Reference in New Issue
Block a user