diff --git a/src/index.html b/src/index.html index 5e0e0e6..df19927 100644 --- a/src/index.html +++ b/src/index.html @@ -73,6 +73,9 @@ Open + + +
diff --git a/src/itemService.js b/src/itemService.js index 6b90d01..6e4e132 100644 --- a/src/itemService.js +++ b/src/itemService.js @@ -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)); } }; })(); diff --git a/src/script.js b/src/script.js index a8a2c21..905b3f7 100644 --- a/src/script.js +++ b/src/script.js @@ -483,6 +483,7 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal var items = []; if (!window.IS_EXTENSION) { items = await itemService.getAllItems(); + if (shouldSaveGlobally) { items.forEach(item => { savedItems[item.id] = item; @@ -524,6 +525,8 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal } function setCurrentItem(item) { currentItem = item; + utils.log('Current Item set', item); + // Reset auto-saving flag isAutoSavingEnabled = false; // Reset unsaved count, in UI also. @@ -588,26 +591,17 @@ globalConsoleContainerEl, externalLibrarySearchInput, keyboardShortcutsModal itemTile.remove(); // Remove from items list - db.local.get( - { - items: {} - }, - function(result) { - delete result.items[itemId]; - db.local.set({ - items: result.items - }); - } - ); + itemService.unsetItemForUser(itemId); // Remove individual item too. - db.local.remove(itemId, function() { + itemService.removeItem(itemId).then(() => { alertsService.add('Item removed.'); // This item is open in the editor. Lets open a new one. if (currentItem.id === itemId) { createNewItem(); } }); + // Remove from cached list delete savedItems[itemId]; diff --git a/src/style.css b/src/style.css index bfdf889..94f89ab 100644 --- a/src/style.css +++ b/src/style.css @@ -348,6 +348,9 @@ body > #demo-frame { .main-header__btn-wrap > a:hover { border-color: rgba(146, 151, 179, 0.5); } +.main-header__avatar-img { + border-radius: 50%; +} .logo { display: inline-block; height: 25px;