www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 4566ff30f53e2a847fba0767783aef2ea8e65b21
parent fabc2ba6a252c356b7e082cbc47856e607fa42c2
Author: Dan Stillman <dstillman@zotero.org>
Date:   Thu, 31 Mar 2016 06:58:46 -0400

Merge pull request #936 from adomasven/feature/remove-feed-item-sync

Close #934. Remove feed item read state syncing
Diffstat:
Mchrome/content/zotero/xpcom/data/feed.js | 38++++++--------------------------------
Mchrome/content/zotero/xpcom/data/feedItem.js | 16++--------------
Mchrome/content/zotero/xpcom/data/feedItems.js | 15+++------------
Mchrome/content/zotero/xpcom/data/feeds.js | 8+++-----
Mtest/tests/feedItemTest.js | 23-----------------------
Mtest/tests/feedItemsTest.js | 10----------
Mtest/tests/feedTest.js | 37++++++++-----------------------------
7 files changed, 22 insertions(+), 125 deletions(-)

diff --git a/chrome/content/zotero/xpcom/data/feed.js b/chrome/content/zotero/xpcom/data/feed.js @@ -331,33 +331,14 @@ Zotero.Feed.prototype.erase = Zotero.Promise.coroutine(function* (options = {}) yield Zotero.Feed._super.prototype.erase.call(this, options); }); -Zotero.Feed.prototype.getSyncedSettings = function () { - if (!this._syncedSettings) { - let syncedFeeds = Zotero.SyncedSettings.get(Zotero.Libraries.userLibraryID, 'feeds') || {}; - this._syncedSettings = syncedFeeds[this.url]; - } - if (!this._syncedSettings) { - this._syncedSettings = { - url: this.url, - name: this.name, - cleanupAfter: this.cleanupAfter, - refreshInterval: this.refreshInterval, - markedAsRead: {} - }; - } - return this._syncedSettings; -}; - -Zotero.Feed.prototype.setSyncedSettings = Zotero.Promise.coroutine(function* (syncedSettings, store=false) { - this._syncedSettings = syncedSettings; - if (store) { - return this.storeSyncedSettings(); - } -}); - Zotero.Feed.prototype.storeSyncedSettings = Zotero.Promise.coroutine(function* () { let syncedFeeds = Zotero.SyncedSettings.get(Zotero.Libraries.userLibraryID, 'feeds') || {}; - syncedFeeds[this.url] = this.getSyncedSettings(); + syncedFeeds[this.url] = { + url: this.url, + name: this.name, + cleanupAfter: this.cleanupAfter, + refreshInterval: this.refreshInterval + }; return Zotero.SyncedSettings.set(Zotero.Libraries.userLibraryID, 'feeds', syncedFeeds); }); @@ -405,7 +386,6 @@ Zotero.Feed.prototype.clearExpiredItems = Zotero.Promise.coroutine(function* (it Zotero.debug("Error clearing expired feed items"); Zotero.debug(e); } - return this.storeSyncedSettings(); }); Zotero.Feed.prototype._updateFeed = Zotero.Promise.coroutine(function* () { @@ -534,9 +514,3 @@ Zotero.Feed.prototype.updateUnreadCount = Zotero.Promise.coroutine(function* () Zotero.Notifier.trigger('unreadCountUpdated', 'feed', this.id); } }); - -Zotero.Feed.prototype.updateFromJSON = Zotero.Promise.coroutine(function* (json) { - yield this.updateFeed(); - yield Zotero.FeedItems.markAsReadByGUID(Object.keys(json.markedAsRead)); - yield this.updateUnreadCount(); -}); diff --git a/chrome/content/zotero/xpcom/data/feedItem.js b/chrome/content/zotero/xpcom/data/feedItem.js @@ -182,9 +182,6 @@ Zotero.FeedItem.prototype._saveData = Zotero.Promise.coroutine(function* (env) { Zotero.FeedItem.prototype._finalizeErase = Zotero.Promise.coroutine(function* () { // Set for syncing let feed = Zotero.Feeds.get(this.libraryID); - let syncedSettings = feed.getSyncedSettings(); - delete syncedSettings.markedAsRead[this.guid]; - yield feed.setSyncedSettings(syncedSettings); return Zotero.FeedItem._super.prototype._finalizeErase.apply(this, arguments); }); @@ -195,18 +192,9 @@ Zotero.FeedItem.prototype.toggleRead = Zotero.Promise.coroutine(function* (state if (changed) { this.isRead = state; - // Set for syncing - let feed = Zotero.Feeds.get(this.libraryID); - let syncedSettings = feed.getSyncedSettings(); - if (state) { - syncedSettings.markedAsRead[this.guid] = true; - } else { - delete syncedSettings.markedAsRead[this.guid]; - } - yield feed.setSyncedSettings(syncedSettings, true); - yield this.saveTx(); - + + let feed = Zotero.Feeds.get(this.libraryID); yield feed.updateUnreadCount(); } }); diff --git a/chrome/content/zotero/xpcom/data/feedItems.js b/chrome/content/zotero/xpcom/data/feedItems.js @@ -109,7 +109,7 @@ Zotero.FeedItems = new Proxy(function() { }); /** - * Used on restore from sync + * Currently not used */ this.markAsReadByGUID = Zotero.Promise.coroutine(function* (guids) { if (! Array.isArray(guids)) { @@ -151,18 +151,9 @@ Zotero.FeedItems = new Proxy(function() { yield Zotero.DB.executeTransaction(function() { for (let i=0; i<items.length; i++) { items[i].isRead = state; - - // Set for syncing + + yield items[i].save(); let feed = Zotero.Feeds.get(items[i].libraryID); - let syncedSettings = feed.getSyncedSettings(); - if (state) { - syncedSettings.markedAsRead[items[i].guid] = true; - } else { - delete syncedSettings.markedAsRead[items[i].guid]; - } - yield feed.setSyncedSettings(syncedSettings); - - yield items[i].save({skipEditCheck: true}); feedsToUpdate.add(feed); } }); diff --git a/chrome/content/zotero/xpcom/data/feeds.js b/chrome/content/zotero/xpcom/data/feeds.js @@ -93,12 +93,10 @@ Zotero.Feeds = new function() { json = syncedFeeds; } yield Zotero.SyncedSettings.set(Zotero.Libraries.userLibraryID, 'feeds', json); - // let feeds = Zotero.Feeds.getAll(); for (let feed of feeds) { if (json[feed.url]) { - Zotero.debug("Feed " + feed.url + " is being updated from remote JSON"); - yield feed.updateFromJSON(json[feed.url]); + Zotero.debug("Feed " + feed.url + " exists remotely and locally"); delete json[feed.url]; } else { Zotero.debug("Feed " + feed.url + " does not exist in remote JSON. Deleting"); @@ -107,10 +105,10 @@ Zotero.Feeds = new function() { } // Because existing json[feed.url] got deleted, `json` now only contains new feeds for (let url in json) { - Zotero.debug("Feed " + url + " is being created from remote JSON"); + Zotero.debug("Feed " + url + " exists remotely but not locally. Creating"); let feed = new Zotero.Feed(json[url]); yield feed.saveTx(); - yield feed.updateFromJSON(json[url]); + yield feed.updateFeed(); } }); diff --git a/test/tests/feedItemTest.js b/test/tests/feedItemTest.js @@ -180,18 +180,6 @@ describe("Zotero.FeedItem", function () { //yield assert.isRejected(feedItem.EraseTx(), "does not allow erasing twice"); }); - it("should remove synced setting if exists", function* () { - let item = yield createDataObject('feedItem', { libraryID }); - - yield item.toggleRead(); - let syncedSettings = feed.getSyncedSettings(); - assert.ok(syncedSettings.markedAsRead[item.guid]); - - yield item.eraseTx(); - - syncedSettings = feed.getSyncedSettings(); - assert.notOk(syncedSettings.markedAsRead[item.guid]); - }); }); describe("#toggleRead()", function() { @@ -217,17 +205,6 @@ describe("Zotero.FeedItem", function () { yield item.toggleRead(true); assert.isFalse(item.save.called, "item was not saved on toggle read to same state"); }); - it('should set relevant synced settings', function* () { - let item = yield createDataObject('feedItem', { libraryID }); - item.isRead = false; - yield item.saveTx(); - - yield item.toggleRead(); - - let feed = Zotero.Feeds.get(item.libraryID); - let syncedSettings = feed.getSyncedSettings(); - assert.ok(syncedSettings.markedAsRead[item.guid], "item marked as read stored in synced settings"); - }); }); describe('#translate()', function() { diff --git a/test/tests/feedItemsTest.js b/test/tests/feedItemsTest.js @@ -138,15 +138,5 @@ describe("Zotero.FeedItems", function () { assert.isFalse(save.thisValues[i].isRead, "#toggleRead called with true"); } }); - - it('should set relevant sync settings', function* () { - items[0].isRead = false; - yield items[0].saveTx(); - yield Zotero.FeedItems.toggleReadByID(ids); - - let syncedFeeds = Zotero.SyncedSettings.get(Zotero.Libraries.userLibraryID, 'feeds'); - let markedAsRead = Object.keys(syncedFeeds[feed.url].markedAsRead); - assert.deepEqual(markedAsRead, Object.keys(items).map((k) => items[k].guid)); - }); }); }); diff --git a/test/tests/feedTest.js b/test/tests/feedTest.js @@ -199,39 +199,18 @@ describe("Zotero.Feed", function() { }); }); - describe("#getSyncedSettings", function() { - it("should return correct synced settings for the feed", function* () { - let url = 'http://' + Zotero.Utilities.randomString(10, 'abcde') + '.com/feed.rss'; - let syncedFeeds = Zotero.SyncedSettings.get(Zotero.Libraries.userLibraryID, 'feeds'); - assert.notOk(syncedFeeds[url]); - - let feed = yield createFeed({url}); - - syncedFeeds = Zotero.SyncedSettings.get(Zotero.Libraries.userLibraryID, 'feeds'); - assert.ok(syncedFeeds[url]); - - let syncedData = feed.getSyncedSettings(); - - assert.deepEqual(syncedData, syncedFeeds[url]); - }); - }); - describe("#storeSyncedSettings", function() { it("should store updated settings for the feed", function* () { - let guid = Zotero.Utilities.randomString(); - let feed = yield createFeed(); + let settings = { + name: Zotero.Utilities.randomString(), + url: 'http://' + Zotero.Utilities.randomString().toLowerCase() + '.com/feed.rss', + refreshInterval: 1, + cleanupAfter: 1 + }; + let feed = yield createFeed(settings); let syncedFeeds = Zotero.SyncedSettings.get(Zotero.Libraries.userLibraryID, 'feeds'); - assert.notOk(syncedFeeds[feed.url].markedAsRead[guid]); - - let syncedData = feed.getSyncedSettings(); - syncedData.markedAsRead[guid] = true; - yield feed.setSyncedSettings(syncedData); - yield feed.storeSyncedSettings(); - - syncedFeeds = Zotero.SyncedSettings.get(Zotero.Libraries.userLibraryID, 'feeds'); - - assert.isTrue(syncedFeeds[feed.url].markedAsRead[guid]); + assert.deepEqual(syncedFeeds[feed.url], settings); }); });