Last active
December 30, 2015 00:19
-
-
Save mikeknoop/7749020 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# APPLICATION CODE (uses underscore.js) | |
lawnchair = new Lawnchair({}, (->)) | |
# hackery to cope with firefox and lawnchair, indexedDB not doing asnyc validation | |
# so well. If indexedDB isn't available (after doing a .open() check) then remove it | |
# from the available adapters and re-init lawnchair with a new instance. | |
# see: https://github.com/brianleroux/lawnchair/issues/189 | |
indexedDBValid = (callback) => | |
idb = window.indexedDB or window.webkitIndexedDB or window.mozIndexedDB or window.oIndexedDB or window.msIndexedDB | |
# open a db to see if it's accessible. firefox won't let you open a db under certain scenarios | |
# like if your privacy history setting is "never remember history" | |
request = idb.open('test', 3) | |
request.onsucess = => callback(true) | |
request.onerror = => callback(false) | |
indexedDBValid (valid) => | |
if not valid | |
# build a list of adapters with indexed-db removed | |
adapters = _.filter Lawnchair.adapters, ((adpt) => adpt.adapter != 'indexed-db') | |
adapters = _.map adapters, ((adpt) => return adpt.adapter) | |
# re-init with our specific list of adapters | |
lawnchair = new Lawnchair({adapter: adapters}, (->)) | |
# MODIFICATIONS TO INDEXDB.JS | |
# Replace "request.onerror" methond on line 121 with | |
request.onerror = function(ev) { | |
if (request.errorCode === getIDBDatabaseException().VERSION_ERR) { | |
// xxx blow it away | |
self.idb.deleteDatabase(self.name); | |
// try it again (but only once more so we dont infinite loop) | |
if (!options.recursing) { | |
options.recursing = true | |
return self.init(options, callback); | |
} | |
} | |
console.error('Failed to open database'); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment