From f371a62a04a98e86d999ac5d098f76a525e36561 Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Sun, 26 Apr 2020 19:22:30 +1000 Subject: [PATCH] Fix memory async error with map tile double click and default map selection bug --- src/components/map/MapTile.js | 5 +++-- src/modals/SelectMapModal.js | 12 +++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/components/map/MapTile.js b/src/components/map/MapTile.js index a672ad4..9b656ce 100644 --- a/src/components/map/MapTile.js +++ b/src/components/map/MapTile.js @@ -101,11 +101,12 @@ function MapTile({ bg="muted" onClick={() => { setIsTileMenuOpen(false); - onMapSelect(map); + if (!isSelected) { + onMapSelect(map); + } }} onDoubleClick={(e) => { if (!isMapTileMenuOpen) { - onMapSelect(map); onSubmit(e); } }} diff --git a/src/modals/SelectMapModal.js b/src/modals/SelectMapModal.js index ea4a382..df2aca9 100644 --- a/src/modals/SelectMapModal.js +++ b/src/modals/SelectMapModal.js @@ -87,8 +87,12 @@ function SelectMapModal({ if (selectedMap) { const map = await db.table("maps").get(selectedMap.id); const state = await db.table("states").get(selectedMap.id); - setSelectedMap(map); - setSelectedMapState(state); + if (map) { + setSelectedMap(map); + } + if (state) { + setSelectedMapState(state); + } } } @@ -184,13 +188,15 @@ function SelectMapModal({ } async function handleMapSelect(map) { - setSelectedMapState(await db.table("states").get(map.id)); + const state = await db.table("states").get(map.id); + setSelectedMapState(state); setSelectedMap(map); } async function handleMapReset(id) { const state = { ...defaultMapState, mapId: id }; await db.table("states").put(state); + setSelectedMapState(state); // Reset the state of the current map if needed if (currentMap && currentMap.id === selectedMap.id) { onMapStateChange(state);