1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-07-13 18:16:19 +02:00

port remoteItem code to itemService and some refactor

This commit is contained in:
Kushagra Gour
2018-01-07 19:52:24 +05:30
parent 0d84ded781
commit b5c12d305e
4 changed files with 84 additions and 24 deletions

View File

@ -8,36 +8,51 @@
},
async getAllItems() {
var db = await window.db.getDb();
var d = deferred();
var remoteDb = await window.db.getDb();
return db
remoteDb
.doc(`users/${window.user.uid}`)
.get()
.then(doc => {
return doc.data().items;
})
.then(async itemIds => {
.then(itemIdsObj => {
var itemIds = Object.getOwnPropertyNames(itemIdsObj || {});
console.log('itemids', itemIds);
if (!itemIds.length) {
d.resolve([]);
}
var items = [];
for (var id in itemIds) {
var item = await this.getItem(id);
items.push(item);
for (let i = 0; i < itemIds.length; i++) {
const id = itemIds[i];
utils.log('Starting to fetch item ', id);
this.getItem(id).then(item => {
items.push(item);
// Check if we have all items now.
if (itemIds.length === items.length) {
d.resolve(items);
}
});
}
return items;
});
return d.promise;
},
async setUser() {
var db = await window.db.getDb();
return db.doc(`users/${window.user.uid}`).set({
const remoteDb = await window.db.getDb();
return remoteDb.doc(`users/${window.user.uid}`).set({
items: {}
});
},
async setItem(id, item) {
var db = await window.db.getDb();
var remoteDb = await window.db.getDb();
console.log(`Starting to save item ${id}`);
return db
return remoteDb
.collection('items')
.doc(id)
.set(item, {
@ -49,9 +64,27 @@
.catch(error => console.log(error));
},
async removeItem(id) {
if (window.IS_EXTENSION) {
var d = deferred();
db.local.remove(id, d.resolve);
return d.promise;
}
const remoteDb = await window.db.getDb();
console.log(`Starting to save item ${id}`);
return remoteDb
.collection('items')
.doc(id)
.delete()
.then(arg => {
console.log('Document removed', arg);
})
.catch(error => console.log(error));
},
async setItemForUser(itemId) {
var db = await window.db.getDb();
return db
var remoteDb = await window.db.getDb();
return remoteDb
.collection('users')
.doc(window.user.uid)
.update({
@ -61,6 +94,33 @@
console.log(`Item ${itemId} set for user`, arg);
})
.catch(error => console.log(error));
},
async unsetItemForUser(itemId) {
if (window.IS_EXTENSION) {
return window.db.local.get(
{
items: {}
},
function(result) {
delete result.items[itemId];
db.local.set({
items: result.items
});
}
);
}
const remoteDb = await window.db.getDb();
return remoteDb
.collection('users')
.doc(window.user.uid)
.update({
[`items.${itemId}`]: firebase.firestore.FieldValue.delete()
})
.then(arg => {
console.log(`Item ${itemId} unset for user`, arg);
})
.catch(error => console.log(error));
}
};
})();