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 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();
|
||||||
|
|||||||
Reference in New Issue
Block a user