Clear all storage implemented
This commit is contained in:
parent
af11eb9010
commit
393ee9df24
3 changed files with 77 additions and 13 deletions
|
|
@ -328,6 +328,52 @@ export class NodeStore {
|
|||
this.nodes[ORPHANED_NODE] = new Node({ UUID: ORPHANED_NODE, Name: 'Orphaned nodes', Special: true }, -1)
|
||||
}// }}}
|
||||
|
||||
deleteAll() {// {{{
|
||||
this.db.close()
|
||||
|
||||
const req = indexedDB.deleteDatabase('notes')
|
||||
|
||||
req.onsuccess = async () => {
|
||||
try {
|
||||
console.log('Database deleted successfully')
|
||||
|
||||
// Deleting the storage will log out the user.
|
||||
await this.deleteStorage()
|
||||
await this.deleteCaches()
|
||||
await this.deleteServiceWorkers()
|
||||
|
||||
alert('Database deleted, will now log out.')
|
||||
location.href = '/login'
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
alert(e.message)
|
||||
}
|
||||
}
|
||||
|
||||
req.onerror = (event) => {
|
||||
console.error('Error deleting database:', event.target.errorCode)
|
||||
}
|
||||
|
||||
req.onblocked = () => {
|
||||
console.warn('Deletion blocked. Close all other tabs/connections to this DB.')
|
||||
}
|
||||
}// }}}
|
||||
async deleteStorage() {// {{{
|
||||
// Clearing local- and session-storage in case
|
||||
// something of value to evil people gets stored there.
|
||||
localStorage.clear()
|
||||
sessionStorage.clear()
|
||||
console.log('Local- and session-storage cleared.')
|
||||
}// }}}
|
||||
async deleteCaches() {// {{{
|
||||
const keys = await caches.keys()
|
||||
return Promise.all(keys.map(key => caches.delete(key)))
|
||||
}// }}}
|
||||
async deleteServiceWorkers() {// {{{
|
||||
const registrations = await navigator.serviceWorker.getRegistrations()
|
||||
await Promise.all(registrations.map(r => r.unregister()))
|
||||
}// }}}
|
||||
|
||||
node(uuid, dataIfUndefined, newLevel) {//{{{
|
||||
let n = this.nodes[uuid]
|
||||
if (n === undefined && dataIfUndefined !== undefined)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue