From 010d637e0e9b871fe3718d28184b50ad3516d8e1 Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Sun, 26 Apr 2020 12:57:36 +1000 Subject: [PATCH] Refactored map settings --- src/components/map/MapSettings.js | 33 ++++++++++++++++++ src/modals/SelectMapModal.js | 58 +++++-------------------------- 2 files changed, 42 insertions(+), 49 deletions(-) create mode 100644 src/components/map/MapSettings.js diff --git a/src/components/map/MapSettings.js b/src/components/map/MapSettings.js new file mode 100644 index 0000000..a6d0c76 --- /dev/null +++ b/src/components/map/MapSettings.js @@ -0,0 +1,33 @@ +import React from "react"; +import { Flex, Box, Label, Input } from "theme-ui"; + +function MapSettings({ map, onSettingsChange }) { + return ( + + + + onSettingsChange("gridX", parseInt(e.target.value))} + disabled={map === null || map.type === "default"} + min={1} + /> + + + + onSettingsChange("gridY", parseInt(e.target.value))} + disabled={map === null || map.type === "default"} + min={1} + /> + + + ); +} + +export default MapSettings; diff --git a/src/modals/SelectMapModal.js b/src/modals/SelectMapModal.js index 522e04f..ad8ee21 100644 --- a/src/modals/SelectMapModal.js +++ b/src/modals/SelectMapModal.js @@ -6,6 +6,7 @@ import db from "../database"; import Modal from "../components/Modal"; import MapTiles from "../components/map/MapTiles"; +import MapSettings from "../components/map/MapSettings"; import AuthContext from "../contexts/AuthContext"; @@ -83,8 +84,6 @@ function SelectMapModal({ loadMaps(); }, [userId]); - const [gridX, setGridX] = useState(defaultMapSize); - const [gridY, setGridY] = useState(defaultMapSize); const fileInputRef = useRef(); function handleImageUpload(file) { @@ -150,8 +149,6 @@ function SelectMapModal({ await db.table("states").add({ ...defaultMapState, mapId: map.id }); setMaps((prevMaps) => [map, ...prevMaps]); setSelectedMap(map); - setGridX(map.gridX); - setGridY(map.gridY); } async function handleMapRemove(id) { @@ -170,8 +167,6 @@ function SelectMapModal({ function handleMapSelect(map) { setSelectedMap(map); - setGridX(map.gridX); - setGridY(map.gridY); } async function handleMapReset(id) { @@ -193,32 +188,17 @@ function SelectMapModal({ onDone(); } - async function handleGridXChange(e) { - const newX = e.target.value; - await db.table("maps").update(selectedMap.id, { gridX: newX }); - setGridX(newX); + async function handleMapSettingsChange(key, value) { + await db.table("maps").update(selectedMap.id, { [key]: value }); setMaps((prevMaps) => { const newMaps = [...prevMaps]; const i = newMaps.findIndex((map) => map.id === selectedMap.id); if (i > -1) { - newMaps[i].gridX = newX; - } - return newMaps; - }); - } - - async function handleGridYChange(e) { - const newY = e.target.value; - await db.table("maps").update(selectedMap.id, { gridY: newY }); - setGridY(newY); - setMaps((prevMaps) => { - const newMaps = [...prevMaps]; - const i = newMaps.findIndex((map) => map.id === selectedMap.id); - if (i > -1) { - newMaps[i].gridY = newY; + newMaps[i][key] = value; } return newMaps; }); + setSelectedMap((prevMap) => ({ ...prevMap, [key]: value })); } /** @@ -274,30 +254,10 @@ function SelectMapModal({ onMapReset={handleMapReset} onSubmit={handleSubmit} /> - - - - - - - - - - +