Attempting new Infrequent Site Stories river.

This commit is contained in:
Samuel Clay 2017-10-16 14:22:37 -07:00
parent 3fa2a7562d
commit f543e408e9
7 changed files with 53 additions and 15 deletions

View file

@ -1239,6 +1239,7 @@ def load_river_stories__redis(request):
include_hidden = is_true(request.REQUEST.get('include_hidden', False))
include_feeds = is_true(request.REQUEST.get('include_feeds', False))
initial_dashboard = is_true(request.REQUEST.get('initial_dashboard', False))
infrequent = is_true(request.REQUEST.get('infrequent', False))
now = localtime_for_timezone(datetime.datetime.now(), user.profile.timezone)
usersubs = []
code = 1
@ -1275,6 +1276,8 @@ def load_river_stories__redis(request):
).order_by('%sstarred_date' % ('-' if order == 'newest' else ''))[offset:offset+limit]
stories = Feed.format_stories(mstories)
else:
if infrequent:
feed_ids = Feed.low_volume_feeds(feed_ids)
usersubs = UserSubscription.subs_for_feeds(user.pk, feed_ids=feed_ids,
read_filter=read_filter)
all_feed_ids = [f for f in feed_ids]

View file

@ -324,6 +324,12 @@ class Feed(models.Model):
r.expire('zF:%s' % self.pk, settings.DAYS_OF_STORY_HASHES*24*60*60)
# r2.expire('zF:%s' % self.pk, settings.DAYS_OF_STORY_HASHES*24*60*60)
@classmethod
def low_volume_feeds(cls, feed_ids):
feeds = Feed.objects.filter(pk__in=feed_ids, average_stories_per_month__lte=30).only('pk')
return [f.pk for f in feeds]
@classmethod
def autocomplete(self, prefix, limit=5):
results = SearchFeed.query(prefix)

View file

@ -688,8 +688,17 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
});
},
fetch_river_stories: function(feed_id, feeds, page, callback, error_callback, first_load) {
fetch_river_stories: function(feed_id, feeds, page, options, callback, error_callback, first_load) {
var self = this;
options = $.extend({
feeds: feeds,
page: page,
order: this.view_setting(feed_id, 'order'),
read_filter: this.view_setting(feed_id, 'read_filter'),
query: NEWSBLUR.reader.flags.search,
include_hidden: true,
infrequent: false
}, options);
var pre_callback = function(data) {
if (!NEWSBLUR.Globals.is_premium && NEWSBLUR.Globals.is_authenticated) {
@ -705,15 +714,8 @@ NEWSBLUR.AssetModel = Backbone.Router.extend({
};
this.feed_id = feed_id;
this.make_request('/reader/river_stories', {
feeds: feeds,
page: page,
order: this.view_setting(feed_id, 'order'),
read_filter: this.view_setting(feed_id, 'read_filter'),
query: NEWSBLUR.reader.flags.search,
include_hidden: true
}, pre_callback, error_callback, {
this.make_request('/reader/river_stories', options, pre_callback, error_callback, {
'ajax_group': (page ? 'feed_page' : 'feed'),
'request_type': 'GET'
});

View file

@ -43,6 +43,7 @@
$feeds_progress: $('#NB-progress'),
$dashboard: $('.NB-feeds-header-dashboard'),
$river_sites_header: $('.NB-feeds-header-river-sites'),
$river_infrequent_header: $('.NB-feeds-header-river-infrequent'),
$river_blurblogs_header: $('.NB-feeds-header-river-blurblogs'),
$river_global_header: $('.NB-feeds-header-river-global'),
$starred_header: $('.NB-feeds-header-starred'),
@ -1305,6 +1306,7 @@
this.$s.$starred_header.removeClass('NB-selected');
this.$s.$read_header.removeClass('NB-selected');
this.$s.$river_sites_header.removeClass('NB-selected');
this.$s.$river_infrequent_header.removeClass('NB-selected');
this.$s.$river_blurblogs_header.removeClass('NB-selected');
this.$s.$river_global_header.removeClass('NB-selected');
this.$s.$tryfeed_header.removeClass('NB-selected');
@ -1960,7 +1962,10 @@
}
this.hide_splash_page();
if (!folder || folder.get('fake') || !folder.get('folder_title')) {
if (options.infrequent) {
this.active_feed = 'river:infrequent';
this.$s.$river_infrequent_header.addClass('NB-selected');
} else if (!folder || folder.get('fake') || !folder.get('folder_title')) {
this.active_feed = 'river:';
if (options.feed) {
options.feed.set('selected', true);
@ -2035,10 +2040,10 @@
if (this.counts['select_story_in_feed'] || this.flags['select_story_in_feed']) {
this.select_story_in_feed();
}
this.model.fetch_river_stories(this.active_feed, feeds, 1,
this.model.fetch_river_stories(this.active_feed, feeds, 1, {'infrequent': options.infrequent},
_.bind(this.post_open_river_stories, this), NEWSBLUR.app.taskbar_info.show_stories_error, false);
} else {
this.model.fetch_river_stories(this.active_feed, feeds, 1,
this.model.fetch_river_stories(this.active_feed, feeds, 1, {'infrequent': options.infrequent},
_.bind(this.post_open_river_stories, this), NEWSBLUR.app.taskbar_info.show_stories_error, true);
}
},
@ -2768,6 +2773,8 @@
NEWSBLUR.app.story_titles.show_loading(options);
}
if (this.active_feed == 'river:infrequent') options.infrequent = true;
if (this.flags['starred_view']) {
this.model.fetch_starred_stories(this.counts['page'], this.flags['starred_tag'], _.bind(this.post_open_starred_stories, this),
NEWSBLUR.app.taskbar_info.show_stories_error, false);
@ -2786,7 +2793,8 @@
NEWSBLUR.app.taskbar_info.show_stories_error, false);
} else if (this.flags['river_view']) {
this.model.fetch_river_stories(this.active_feed, this.cache['river_feeds_with_unreads'],
this.counts['page'], _.bind(this.post_open_river_stories, this),
this.counts['page'], {'infrequent': options.infrequent},
_.bind(this.post_open_river_stories, this),
NEWSBLUR.app.taskbar_info.show_stories_error, false);
} else {
this.model.load_feed(feed_id, this.counts['page'], false,
@ -2817,6 +2825,8 @@
var title = "All Site Stories";
if (NEWSBLUR.reader.active_feed == "read") {
title = "Read Stories";
} else if (NEWSBLUR.reader.active_feed == "infrequent") {
title = "Infrequent Site Stories";
} else if (NEWSBLUR.reader.flags['starred_view']) {
title = "Saved Stories";
if (NEWSBLUR.reader.flags['starred_tag']) {

View file

@ -104,7 +104,7 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
// this.load_sortable_feeds();
_.delay(_.bind(NEWSBLUR.reader.update_starred_count, NEWSBLUR.reader), 250);
NEWSBLUR.reader.check_hide_getting_started();
$('.NB-feeds-header-river-sites-container').css({
$('.NB-feeds-header-river-sites-container,.NB-feeds-header-river-infrequent-container').css({
'display': 'block',
'opacity': 0
}).animate({'opacity': 1}, {'duration': 700});
@ -368,6 +368,8 @@ NEWSBLUR.Views.FeedList = Backbone.View.extend({
if (!$selected_view && NEWSBLUR.reader.active_feed == 'river:') {
$selected_view = NEWSBLUR.reader.$s.$river_sites_header.closest(".NB-feeds-header-container");
} else if (!$selected_view && NEWSBLUR.reader.active_feed == 'river:infrequent') {
$selected_view = NEWSBLUR.reader.$s.$river_infrequent_header.closest(".NB-feeds-header-container");
} else if (!$selected_view && NEWSBLUR.reader.active_feed == 'starred') {
$selected_view = NEWSBLUR.reader.$s.$starred_header.closest(".NB-feeds-header-container");
} else if (!$selected_view && NEWSBLUR.reader.active_feed == 'read') {

View file

@ -7,6 +7,7 @@ NEWSBLUR.Views.Sidebar = Backbone.View.extend({
"click .NB-feeds-header-starred": "open_starred_stories",
"click .NB-feeds-header-read": "open_read_stories",
"click .NB-feeds-header-river-sites": "open_river_stories",
"click .NB-feeds-header-river-infrequent": "open_river_infrequent_stories",
"click .NB-feeds-header-river-blurblogs .NB-feedlist-collapse-icon": "collapse_river_blurblog",
"click .NB-feeds-header-river-blurblogs": "open_river_blurblogs_stories",
"click .NB-feeds-header-river-global": "open_river_global_stories"
@ -174,6 +175,10 @@ NEWSBLUR.Views.Sidebar = Backbone.View.extend({
return NEWSBLUR.reader.open_river_stories();
},
open_river_infrequent_stories: function() {
return NEWSBLUR.reader.open_river_stories(null, null, {'infrequent': true});
},
collapse_river_blurblog: function(e, options) {
e.stopPropagation();
options = options || {};

View file

@ -79,6 +79,16 @@
</div>
</div>
<div class="NB-feeds-header-container NB-feeds-header-river-container NB-feeds-header-river-infrequent-container">
<div class="NB-feeds-header NB-feeds-header-river-infrequent NB-empty">
<div class="NB-feeds-header-count unread_count"></div>
<div class="NB-feeds-header-icon"></div>
<div class="NB-feeds-header-title">
Infrequent Site Stories
</div>
</div>
</div>
<ul class="folder NB-feedlist" id="feed_list"></ul>
<div class="NB-feeds-header-container NB-feeds-header-read-container NB-hidden">