diff --git a/media/js/newsblur/common/assetmodel.js b/media/js/newsblur/common/assetmodel.js index f4ad18180..6df9e23af 100644 --- a/media/js/newsblur/common/assetmodel.js +++ b/media/js/newsblur/common/assetmodel.js @@ -275,11 +275,13 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({ var pre_callback = function(feeds, subscriptions) { NEWSBLUR.log(['subscriptions', feeds, subscriptions]); self.flags['favicons_fetching'] = self.feeds.any(function(feed) { return feed.get('favicons_fetching'); }); - self.folders = subscriptions.folders; + + self.folders = new NEWSBLUR.Collections.Folders(); + self.folders.parse(subscriptions.folders); self.starred_count = subscriptions.starred_count; self.social_feeds.reset(subscriptions.social_feeds); self.user_profile.set(subscriptions.social_profile); - + if (!_.isEqual(self.favicons, {})) { self.feeds.each(function(feed) { if (self.favicons[feed.id]) { @@ -289,6 +291,8 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({ } self.detect_any_inactive_feeds(); + + self.feeds.trigger('reset'); }; var data = { diff --git a/media/js/newsblur/models/feed_list.js b/media/js/newsblur/models/feed_list.js index ef5134539..990c73df8 100644 --- a/media/js/newsblur/models/feed_list.js +++ b/media/js/newsblur/models/feed_list.js @@ -2,7 +2,7 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({ initialize: function() { this.$s = NEWSBLUR.reader.$s; - this.model = NEWSBLUR.reader.model; + this.model = NEWSBLUR.assets; if (!$('#feed_list').length) return; $('.NB-callout-ftux .NB-callout-text').text('Loading feeds...'); @@ -12,7 +12,6 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({ this.make_feeds(); this.make_social_feeds(); this.load_router(); - callback && callback(); }, this)); NEWSBLUR.assets.load_feeds(); }, @@ -27,14 +26,14 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({ $feed_list.empty(); this.$s.$story_taskbar.css({'display': 'block'}); - var $feeds = this.make_feeds_folder(folders, 0); + var $feeds = new NEWSBLUR.Views.Folder(this.model.folders).render().el; $feed_list.css({ 'display': 'block', 'opacity': 0 }); $feed_list.html($feeds); - this.count_collapsed_unread_stories(); $feed_list.animate({'opacity': 1}, {'duration': 700}); + this.count_collapsed_unread_stories(); this.hover_over_feed_titles($feed_list); this.$s.$feed_link_loader.fadeOut(250); diff --git a/media/js/newsblur/models/feed.js b/media/js/newsblur/models/feeds.js similarity index 87% rename from media/js/newsblur/models/feed.js rename to media/js/newsblur/models/feeds.js index 6025e4f06..af09e2a48 100644 --- a/media/js/newsblur/models/feed.js +++ b/media/js/newsblur/models/feeds.js @@ -12,13 +12,13 @@ NEWSBLUR.Collections.Feeds = Backbone.Collection.extend({ options = _.extend({ data: { v: 2 - } + }, + silent: true }, options); return Backbone.Collection.prototype.fetch.call(this, options); }, parse: function(data) { - console.log(["parsing collection", data]); return data.feeds; } diff --git a/media/js/newsblur/models/folder.js b/media/js/newsblur/models/folder.js deleted file mode 100644 index b7b1ceee1..000000000 --- a/media/js/newsblur/models/folder.js +++ /dev/null @@ -1,5 +0,0 @@ -NEWSBLUR.Models.Folder = Backbone.Model.extend({ - - - -}); \ No newline at end of file diff --git a/media/js/newsblur/models/folders.js b/media/js/newsblur/models/folders.js new file mode 100644 index 000000000..8bb88b5a7 --- /dev/null +++ b/media/js/newsblur/models/folders.js @@ -0,0 +1,27 @@ +NEWSBLUR.Models.FeedOrFolder = Backbone.Model.extend({ + + initialize: function(model) { + console.log(["constructing model", model]); + if (_.isNumber(model)) { + this.model = NEWSBLUR.assets.feeds.get(model); + } else { + this.model = new NEWSBLUR.Collections.Folders(); + this.title = _.keys(model)[0]; + var children = model[this.title]; + this.model.parse(children); + } + } + +}); + +NEWSBLUR.Collections.Folders = Backbone.Collection.extend({ + + model: NEWSBLUR.Models.FeedOrFolder, + + parse: function(models) { + console.log(["parse", this.models, models]); + this.reset(models); + } + + +}); \ No newline at end of file diff --git a/media/js/newsblur/models/story.js b/media/js/newsblur/models/stories.js similarity index 100% rename from media/js/newsblur/models/story.js rename to media/js/newsblur/models/stories.js diff --git a/media/js/newsblur/models/user.js b/media/js/newsblur/models/users.js similarity index 100% rename from media/js/newsblur/models/user.js rename to media/js/newsblur/models/users.js diff --git a/media/js/newsblur/views/feed.js b/media/js/newsblur/views/feed.js index e69de29bb..706626bc3 100644 --- a/media/js/newsblur/views/feed.js +++ b/media/js/newsblur/views/feed.js @@ -0,0 +1,10 @@ +NEWSBLUR.Views.Feed = Backbone.View.extend({ + + className: 'NB-feed', + + render: function() { + $(this.el).html(this.make('div', {}, this.model.get('feed_title'))); + return this; + } + +}); \ No newline at end of file diff --git a/media/js/newsblur/views/folder.js b/media/js/newsblur/views/folder.js index e69de29bb..4ee778a17 100644 --- a/media/js/newsblur/views/folder.js +++ b/media/js/newsblur/views/folder.js @@ -0,0 +1,25 @@ +NEWSBLUR.Views.Folder = Backbone.View.extend({ + + className: 'NB-folder', + + initialize: function(models) { + this.models = models; + }, + + render: function() { + console.log(["render models", this.models]); + var $feeds = _.map(this.models, function(model) { + var $model; + console.log(["model", model]); + if (_.isNumber(model)) { + var model = NEWSBLUR.assets.feeds.get(model); + return new NEWSBLUR.Views.Feed({model: model}).render().el; + } else { + return new NEWSBLUR.Views.Folder(model).render().el; + } + }); + $(this.el).append($feeds); + return this; + } + +}); \ No newline at end of file