From c6a9455e8f83339d0c452b23b97b83dc53207c2c Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Sun, 28 Jun 2020 15:43:45 +1000 Subject: [PATCH] Added setting change cache to token settings modal --- src/modals/SelectTokensModal.js | 35 +++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/modals/SelectTokensModal.js b/src/modals/SelectTokensModal.js index a7994e6..01c87f1 100644 --- a/src/modals/SelectTokensModal.js +++ b/src/modals/SelectTokensModal.js @@ -11,6 +11,7 @@ import blobToBuffer from "../helpers/blobToBuffer"; import TokenDataContext from "../contexts/TokenDataContext"; import AuthContext from "../contexts/AuthContext"; +import { isEmpty } from "../helpers/shared"; function SelectTokensModal({ isOpen, onRequestClose }) { const { userId } = useContext(AuthContext); @@ -34,6 +35,7 @@ function SelectTokensModal({ isOpen, onRequestClose }) { function handleTokenAdd(token) { addToken(token); + setSelectedTokenId(token.id); } async function handleImagesUpload(files) { @@ -69,8 +71,8 @@ function SelectTokensModal({ isOpen, onRequestClose }) { handleTokenAdd({ file: buffer, name, - type: "file", id: shortid.generate(), + type: "file", created: Date.now(), lastModified: Date.now(), owner: userId, @@ -86,7 +88,8 @@ function SelectTokensModal({ isOpen, onRequestClose }) { }); } - function handleTokenSelect(token) { + async function handleTokenSelect(token) { + await applyTokenChanges(); setSelectedTokenId(token.id); } @@ -100,12 +103,28 @@ function SelectTokensModal({ isOpen, onRequestClose }) { */ const [showMoreSettings, setShowMoreSettings] = useState(false); - async function handleTokenSettingsChange(key, value) { - await updateToken(selectedTokenId, { [key]: value }); + const [tokenSettingChanges, setTokenSettingChanges] = useState({}); + + function handleTokenSettingsChange(key, value) { + setTokenSettingChanges((prevChanges) => ({ ...prevChanges, [key]: value })); } + async function applyTokenChanges() { + if (selectedTokenId && !isEmpty(tokenSettingChanges)) { + await updateToken(selectedTokenId, tokenSettingChanges); + setTokenSettingChanges({}); + } + } + + async function handleRequestClose() { + await applyTokenChanges(); + onRequestClose(); + } + + const selectedTokenWithChanges = { ...selectedToken, ...tokenSettingChanges }; + return ( - + handleImagesUpload(event.target.files)} @@ -126,12 +145,12 @@ function SelectTokensModal({ isOpen, onRequestClose }) { Done