Change back to move tool if selected tool becomes disabled

This commit is contained in:
Mitchell McCaffrey 2021-08-12 12:05:21 +10:00
parent 1ab6ad4f13
commit ab9f2fbb58

View File

@ -1,4 +1,4 @@
import { useState, Fragment } from "react"; import { useState, Fragment, useEffect, useMemo } from "react";
import { IconButton, Flex, Box } from "theme-ui"; import { IconButton, Flex, Box } from "theme-ui";
import RadioIconButton from "../RadioIconButton"; import RadioIconButton from "../RadioIconButton";
@ -78,44 +78,56 @@ function MapContols({
const userId = useUserId(); const userId = useUserId();
const disabledControls = useMemo(() => {
const isOwner = map && map.owner === userId; const isOwner = map && map.owner === userId;
const allowMapDrawing = isOwner || mapState?.editFlags.includes("drawing"); const allowMapDrawing = isOwner || mapState?.editFlags.includes("drawing");
const allowFogDrawing = isOwner || mapState?.editFlags.includes("fog"); const allowFogDrawing = isOwner || mapState?.editFlags.includes("fog");
const allowNoteEditing = isOwner || mapState?.editFlags.includes("notes"); const allowNoteEditing = isOwner || mapState?.editFlags.includes("notes");
const disabledControls: MapToolId[] = []; const disabled: MapToolId[] = [];
if (!allowMapDrawing) { if (!map || !allowMapChange) {
disabledControls.push("drawing"); disabled.push("map");
} }
if (!map) { if (!map) {
disabledControls.push("move"); disabled.push("move");
disabledControls.push("measure"); disabled.push("measure");
disabledControls.push("pointer"); disabled.push("pointer");
disabledControls.push("select"); disabled.push("select");
} }
if (!allowFogDrawing) { if (!map || !allowMapDrawing) {
disabledControls.push("fog"); disabled.push("drawing");
} }
if (!allowMapChange) { if (!map || !allowFogDrawing) {
disabledControls.push("map"); disabled.push("fog");
} }
if (!allowNoteEditing) { if (!map || !allowNoteEditing) {
disabledControls.push("note"); disabled.push("note");
} }
if (!map || mapActions.actionIndex < 0) { if (!map || mapActions.actionIndex < 0) {
disabledControls.push("undo"); disabled.push("undo");
} }
if (!map || mapActions.actionIndex === mapActions.actions.length - 1) { if (!map || mapActions.actionIndex === mapActions.actions.length - 1) {
disabledControls.push("redo"); disabled.push("redo");
} }
return disabled;
}, [map, mapState, mapActions, allowMapChange, userId]);
const disabledSettings: Partial<Record<keyof Settings, string[]>> = { // Change back to move tool if selected tool becomes disabled
useEffect(() => {
if (disabledControls.includes(selectedToolId)) {
onSelectedToolChange("move");
}
}, [selectedToolId, disabledControls, onSelectedToolChange]);
const disabledSettings = useMemo(() => {
const disabled: Partial<Record<keyof Settings, string[]>> = {
drawing: [], drawing: [],
}; };
if (mapState && isEmpty(mapState.drawings)) { if (mapState && isEmpty(mapState.drawings)) {
disabledSettings.drawing?.push("erase"); disabled.drawing?.push("erase");
} }
return disabled;
}, [mapState]);
const toolsById: Record<string, MapTool> = { const toolsById: Record<string, MapTool> = {
move: { move: {