summaryrefslogtreecommitdiff
path: root/www/lib/localforage/src/utils/isIndexedDBValid.js
diff options
context:
space:
mode:
authorPliable Pixels <pliablepixels@gmail.com>2017-09-21 12:49:18 -0400
committerPliable Pixels <pliablepixels@gmail.com>2017-09-21 12:49:18 -0400
commitb28028ac4082842143b0f528d6bc539da6ccb419 (patch)
tree1e26ea969a781ed8e323fca4e3c76345113fc694 /www/lib/localforage/src/utils/isIndexedDBValid.js
parent676270d21beed31d767a06c89522198c77d5d865 (diff)
mega changes, including updates and X
Diffstat (limited to 'www/lib/localforage/src/utils/isIndexedDBValid.js')
-rw-r--r--www/lib/localforage/src/utils/isIndexedDBValid.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/www/lib/localforage/src/utils/isIndexedDBValid.js b/www/lib/localforage/src/utils/isIndexedDBValid.js
new file mode 100644
index 00000000..aa14b6d8
--- /dev/null
+++ b/www/lib/localforage/src/utils/isIndexedDBValid.js
@@ -0,0 +1,37 @@
+import idb from './idb';
+
+function isIndexedDBValid() {
+ try {
+ // Initialize IndexedDB; fall back to vendor-prefixed versions
+ // if needed.
+ if (!idb) {
+ return false;
+ }
+ // We mimic PouchDB here; just UA test for Safari (which, as of
+ // iOS 8/Yosemite, doesn't properly support IndexedDB).
+ // IndexedDB support is broken and different from Blink's.
+ // This is faster than the test case (and it's sync), so we just
+ // do this. *SIGH*
+ // http://bl.ocks.org/nolanlawson/raw/c83e9039edf2278047e9/
+ //
+ // We test for openDatabase because IE Mobile identifies itself
+ // as Safari. Oh the lulz...
+ if (typeof openDatabase !== 'undefined' && typeof navigator !== 'undefined' &&
+ navigator.userAgent &&
+ /Safari/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent)) {
+ return false;
+ }
+
+ return idb &&
+ typeof idb.open === 'function' &&
+ // Some Samsung/HTC Android 4.0-4.3 devices
+ // have older IndexedDB specs; if this isn't available
+ // their IndexedDB is too old for us to use.
+ // (Replaces the onupgradeneeded test.)
+ typeof IDBKeyRange !== 'undefined';
+ } catch (e) {
+ return false;
+ }
+}
+
+export default isIndexedDBValid;