fix idb getall in edge (#535)

* fix idb getall in edge

fixes #532

* try to fix

* this should work

* fixup
This commit is contained in:
Nolan Lawson 2018-09-05 19:52:51 -07:00 committed by GitHub
parent 334a6e1e74
commit fd43dc6e5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 16 deletions

View File

@ -22,15 +22,12 @@ const DB_VERSION_INITIAL = 9
const DB_VERSION_SEARCH_ACCOUNTS = 10
const DB_VERSION_CURRENT = 10
export function getDatabase (instanceName) {
if (!instanceName) {
throw new Error('instanceName is undefined in getDatabase()')
}
if (databaseCache[instanceName]) {
return Promise.resolve(databaseCache[instanceName])
if (process.browser) {
require('indexeddb-getall-shim') // needed for Edge
}
databaseCache[instanceName] = new Promise((resolve, reject) => {
function createDatabase (instanceName) {
return new Promise((resolve, reject) => {
let req = indexedDB.open(instanceName, DB_VERSION_CURRENT)
openReqs[instanceName] = req
req.onerror = reject
@ -87,9 +84,17 @@ export function getDatabase (instanceName) {
}
}
req.onsuccess = () => resolve(req.result)
}).then(res => {
return addKnownInstance(instanceName).then(() => res)
})
}
export async function getDatabase (instanceName) {
if (!instanceName) {
throw new Error('instanceName is undefined in getDatabase()')
}
if (!databaseCache[instanceName]) {
databaseCache[instanceName] = await createDatabase(instanceName)
await addKnownInstance(instanceName)
}
return databaseCache[instanceName]
}

View File

@ -10,10 +10,6 @@ export const importRequestIdleCallback = () => import(
/* webpackChunkName: 'requestidlecallback' */ 'requestidlecallback'
)
export const importIndexedDBGetAllShim = () => import(
/* webpackChunkName: 'indexeddb-getall-shim' */ 'indexeddb-getall-shim'
)
export const importWebAnimationPolyfill = () => import(
/* webpackChunkName: 'web-animations-js' */ 'web-animations-js'
)

View File

@ -1,7 +1,6 @@
import {
importIntersectionObserver,
importRequestIdleCallback,
importIndexedDBGetAllShim,
importWebAnimationPolyfill
} from './asyncModules'
@ -9,7 +8,6 @@ export function loadPolyfills () {
return Promise.all([
typeof IntersectionObserver === 'undefined' && importIntersectionObserver(),
typeof requestIdleCallback === 'undefined' && importRequestIdleCallback(),
!IDBObjectStore.prototype.getAll && importIndexedDBGetAllShim(),
!Element.prototype.animate && importWebAnimationPolyfill()
])
}