1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-10-10 19:14:33 +02:00

add poc for firestore

This commit is contained in:
Kushagra Gour
2018-01-06 03:48:28 +05:30
parent 7fa2e745b2
commit 0d84ded781
7 changed files with 220 additions and 54 deletions

View File

@@ -1,15 +1,51 @@
(() => {
const FAUX_DELAY = 1;
var db;
var dbPromise;
async function getDb() {
if (dbPromise) {
return dbPromise;
}
dbPromise = new Promise((resolve, reject) => {
if (db) {
return resolve(db);
}
firebase
.firestore()
.enablePersistence()
.then(function() {
// Initialize Cloud Firestore through firebase
db = firebase.firestore();
console.log('firebase db ready', db);
resolve(db);
})
.catch(function(err) {
reject(err.code);
if (err.code === 'failed-precondition') {
// Multiple tabs open, persistence can only be enabled
// in one tab at a a time.
// ...
} else if (err.code === 'unimplemented') {
// The current browser does not support all of the
// features required to enable persistence
// ...
}
});
});
return dbPromise;
}
var local = {
get: (obj, cb) => {
const retVal = {};
if (typeof obj === 'string') {
const retVal = {};
retVal[obj] = JSON.parse(window.localStorage.getItem(obj));
setTimeout(() => cb(retVal), FAUX_DELAY);
} else {
const retVal = {};
Object.keys(obj).forEach(key => {
let val = window.localStorage.getItem(key);
const val = window.localStorage.getItem(key);
retVal[key] =
val === undefined || val === null ? obj[key] : JSON.parse(val);
});
@@ -21,11 +57,14 @@
window.localStorage.setItem(key, JSON.stringify(obj[key]));
});
setTimeout(() => {
if (cb) cb();
if (cb) {
cb();
}
}, FAUX_DELAY);
}
};
window.db = {
getDb,
local: chrome && chrome.storage ? chrome.storage.local : local,
sync: chrome && chrome.storage ? chrome.storage.sync : local
};