From 6014fe5344cd22ff783af18db2b567e2cd7ef819 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Fri, 11 Oct 2019 19:08:54 -0400 Subject: Add support for persistent storage --- ext/bg/js/settings.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'ext/bg/js') diff --git a/ext/bg/js/settings.js b/ext/bg/js/settings.js index 84b54ba9..7ad628ba 100644 --- a/ext/bg/js/settings.js +++ b/ext/bg/js/settings.js @@ -724,14 +724,13 @@ async function storageEstimate() { storageEstimate.mostRecent = null; async function storageInfoInitialize() { + storagePersistInitialize(); const browser = await getBrowser(); const container = document.querySelector('#storage-info'); container.setAttribute('data-browser', browser); await storageShowInfo(); - container.classList.remove('storage-hidden'); - document.querySelector('#storage-refresh').addEventListener('click', () => storageShowInfo(), false); } @@ -770,6 +769,35 @@ function storageSpinnerShow(show) { } } +async function storagePersistInitialize() { + if (!(navigator.storage && navigator.storage.persist)) { + // Not supported + return; + } + + const info = document.querySelector('#storage-persist-info'); + const button = document.querySelector('#storage-persist-button'); + const checkbox = document.querySelector('#storage-persist-button-checkbox'); + + info.classList.remove('storage-hidden'); + button.classList.remove('storage-hidden'); + + let persisted = await navigator.storage.persisted(); + if (persisted) { + checkbox.checked = true; + } + + button.addEventListener('click', async () => { + if (persisted) { + return; + } + if (await navigator.storage.persist()) { + persisted = true; + checkbox.checked = true; + } + }, false); +} + /* * Information -- cgit v1.2.3