refactor(App): streamline generate tool state management

This commit is contained in:
syntaxbullet
2026-07-05 09:38:59 +02:00
parent f5c610dac5
commit 04a7275143

View File

@@ -29,21 +29,23 @@ export function App({ app }: AppProps) {
const viewportActivityIsland = useViewportActivityIsland(viewport); const viewportActivityIsland = useViewportActivityIsland(viewport);
const imageImport = useImageImport(app.store); const imageImport = useImageImport(app.store);
const [layersOpen, setLayersOpen] = useState(false); const [layersOpen, setLayersOpen] = useState(false);
const [generateOpen, setGenerateOpen] = useState(false);
const previousGenerateTool = useRef<ToolId>("select"); const previousGenerateTool = useRef<ToolId>("select");
const transformTarget = transformSession?.target ?? selectedTransformTarget(document, selection); const transformTarget = transformSession?.target ?? selectedTransformTarget(document, selection);
const activeArtboard = document.artboards.find((artboard) => artboard.id === selection.artboardId) ?? document.artboards[0]; 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 openGenerate = useCallback(() => {
const activeTool = app.store.getState().editor.tools.activeTool; const activeTool = app.store.getState().editor.tools.activeTool;
if (activeTool !== "generate") previousGenerateTool.current = activeTool; if (activeTool !== "generate") previousGenerateTool.current = activeTool;
app.store.dispatch(commandIds.toolSetActive, { tool: "generate" }); app.store.dispatch(commandIds.toolSetActive, { tool: "generate" });
setLayersOpen(false); setLayersOpen(false);
setGenerateOpen(true);
}, [app.store]); }, [app.store]);
const closeGenerate = useCallback(() => { const closeGenerate = useCallback(() => {
setGenerateOpen(false);
if (app.store.getState().editor.tools.activeTool === "generate") { if (app.store.getState().editor.tools.activeTool === "generate") {
app.store.dispatch(commandIds.toolSetActive, { tool: previousGenerateTool.current }); app.store.dispatch(commandIds.toolSetActive, { tool: previousGenerateTool.current });
} }
@@ -80,12 +82,6 @@ export function App({ app }: AppProps) {
const key = event.key.toLowerCase(); const key = event.key.toLowerCase();
const keybindEvent = keybindEventFromKeyboardEvent(event); const keybindEvent = keybindEventFromKeyboardEvent(event);
if (key === "g") {
toggleGenerate();
event.preventDefault();
return;
}
const toolConsumed = handleToolKey({ event: keybindEvent, dispatch: app.store.dispatch }); const toolConsumed = handleToolKey({ event: keybindEvent, dispatch: app.store.dispatch });
if (toolConsumed) { if (toolConsumed) {
event.preventDefault(); event.preventDefault();