From 926f05f3010d3202aa1acb40f43cf8a9f83dd8b5 Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Fri, 27 Nov 2020 21:00:08 +1100 Subject: [PATCH] Added persistent storage permissions when uploading maps or tokens --- src/modals/SelectMapModal.js | 5 +++++ src/modals/SelectTokensModal.js | 5 +++++ src/modals/SettingsModal.js | 15 ++++++++++++++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/modals/SelectMapModal.js b/src/modals/SelectMapModal.js index d9930f6..27195c2 100644 --- a/src/modals/SelectMapModal.js +++ b/src/modals/SelectMapModal.js @@ -91,6 +91,11 @@ function SelectMapModal({ const [imageLoading, setImageLoading] = useState(false); async function handleImagesUpload(files) { + if (navigator.storage) { + // Attempt to enable persistant storage + await navigator.storage.persist(); + } + for (let file of files) { await handleImageUpload(file); } diff --git a/src/modals/SelectTokensModal.js b/src/modals/SelectTokensModal.js index 89ee6ee..99c8864 100644 --- a/src/modals/SelectTokensModal.js +++ b/src/modals/SelectTokensModal.js @@ -70,6 +70,11 @@ function SelectTokensModal({ isOpen, onRequestClose }) { } async function handleImagesUpload(files) { + if (navigator.storage) { + // Attempt to enable persistant storage + await navigator.storage.persist(); + } + for (let file of files) { await handleImageUpload(file); } diff --git a/src/modals/SettingsModal.js b/src/modals/SettingsModal.js index b9b2f95..10af204 100644 --- a/src/modals/SettingsModal.js +++ b/src/modals/SettingsModal.js @@ -28,8 +28,21 @@ function SettingsModal({ isOpen, onRequestClose }) { const [storageEstimate, setStorageEstimate] = useState(); useEffect(() => { + async function estimateStorage() { + // Persisted data on firefox doesn't count towards the usage quota so ignore it + const persisted = await navigator.storage.persisted(); + const isFirefox = + navigator.userAgent.toLowerCase().indexOf("firefox") > -1; + if (persisted && isFirefox) { + return; + } + + const estimate = await navigator.storage.estimate(); + setStorageEstimate(estimate); + } + if (isOpen && navigator.storage) { - navigator.storage.estimate().then(setStorageEstimate); + estimateStorage(); } }, [isOpen]);