28 lines
765 B
JavaScript
28 lines
765 B
JavaScript
import { set, keys, del, close } from '../_thirdparty/idb-keyval/idb-keyval'
|
|
import lifecycle from 'page-lifecycle/dist/lifecycle.mjs'
|
|
|
|
const PREFIX = 'known-instance-'
|
|
|
|
export async function getKnownInstances () {
|
|
return (await keys())
|
|
.filter(_ => _.startsWith(PREFIX))
|
|
.map(_ => _.substring(PREFIX.length))
|
|
}
|
|
|
|
export async function addKnownInstance (instanceName) {
|
|
return set(PREFIX + instanceName, true)
|
|
}
|
|
|
|
export async function deleteKnownInstance (instanceName) {
|
|
return del(PREFIX + instanceName)
|
|
}
|
|
|
|
if (process.browser) {
|
|
lifecycle.addEventListener('statechange', async event => {
|
|
if (event.newState === 'frozen') { // page is frozen, close IDB connections
|
|
await close()
|
|
console.log('closed knownInstances DB')
|
|
}
|
|
})
|
|
}
|