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]);