16 lines
964 B
JavaScript
16 lines
964 B
JavaScript
/* Clear draft files and metadata across Site tabs when signing out. */
|
|
(() => {
|
|
const signal='dtf-privacy-reset';
|
|
function notify(){window.dispatchEvent(new Event('dtf-private-data-cleared'));}
|
|
window.dtfForgetPrivateData=async()=>{
|
|
notify();
|
|
for(const key of Object.keys(localStorage))if(key.startsWith('dtf-'))localStorage.removeItem(key);
|
|
localStorage.setItem(signal,crypto.randomUUID());
|
|
const db=await new Promise((resolve,reject)=>{const r=indexedDB.open('dtf-local-cart',1);r.onupgradeneeded=()=>r.result.createObjectStore('cart');r.onsuccess=()=>resolve(r.result);r.onerror=()=>reject(r.error);});
|
|
try{await new Promise((resolve,reject)=>{const tx=db.transaction('cart','readwrite');tx.objectStore('cart').clear();tx.oncomplete=resolve;tx.onerror=()=>reject(tx.error);});}finally{db.close();}
|
|
};
|
|
window.addEventListener('storage',event=>{
|
|
if(event.key===signal && event.newValue){notify();location.reload();}
|
|
});
|
|
})();
|