From dbec2708dad2d99e4cfda3c8ddf65fdbf4fc9c0b Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Thu, 4 Mar 2021 10:24:17 -0500 Subject: [PATCH] Only show active feeds in dashboard river. Also link dashboard river title and icon. --- apps/notifications/models.py | 6 ++++-- apps/reader/models.py | 2 +- .../rss_feeds/management/commands/refresh_feeds.py | 4 +++- apps/rss_feeds/models.py | 2 ++ apps/social/models.py | 3 +++ media/css/reader.css | 2 ++ media/js/newsblur/reader/reader_utils.js | 1 + media/js/newsblur/views/dashboard_river_view.js | 14 ++++++++++++-- media/js/newsblur/views/feed_selector.js | 6 ++++-- 9 files changed, 32 insertions(+), 8 deletions(-) diff --git a/apps/notifications/models.py b/apps/notifications/models.py index 1f4ba2948..0935df15a 100644 --- a/apps/notifications/models.py +++ b/apps/notifications/models.py @@ -210,10 +210,12 @@ class MUserFeedNotification(mongo.Document): def push_story_notification(self, story, classifiers, usersub): story_score = self.story_score(story, classifiers) if self.is_focus and story_score <= 0: - logging.debug("Is focus, but story is hidden") + if settings.DEBUG: + logging.debug("Is focus, but story is hidden") return False elif story_score < 0: - logging.debug("Is unread, but story is hidden") + if settings.DEBUG: + logging.debug("Is unread, but story is hidden") return False user = User.objects.get(pk=self.user_id) diff --git a/apps/reader/models.py b/apps/reader/models.py index 99d0ed0cd..06494621a 100644 --- a/apps/reader/models.py +++ b/apps/reader/models.py @@ -142,7 +142,7 @@ class UserSubscription(models.Model): unread_stories_key = 'U:%s:%s' % (user_id, feed_id) unread_ranked_stories_key = 'zU:%s:%s' % (user_id, feed_id) expire_unread_stories_key = False - + max_score = current_time if read_filter == 'unread': # +1 for the intersection b/w zF and F, which carries an implicit score of 1. diff --git a/apps/rss_feeds/management/commands/refresh_feeds.py b/apps/rss_feeds/management/commands/refresh_feeds.py index 74f161de0..44b2ed505 100644 --- a/apps/rss_feeds/management/commands/refresh_feeds.py +++ b/apps/rss_feeds/management/commands/refresh_feeds.py @@ -3,6 +3,7 @@ from django.conf import settings from django.contrib.auth.models import User from apps.statistics.models import MStatistics from apps.rss_feeds.models import Feed +from apps.reader.models import UserSubscription from optparse import make_option from utils import feed_fetcher from utils.management_functions import daemonize @@ -49,7 +50,8 @@ class Command(BaseCommand): if options['force']: feeds = Feed.objects.all() elif options['username']: - feeds = Feed.objects.filter(subscribers__user=User.objects.get(username=options['username'])) + usersubs = UserSubscription.objects.filter(user=User.objects.get(username=options['username']), active=True) + feeds = Feed.objects.filter(pk__in=usersubs.values('feed_id')) elif options['feed']: feeds = Feed.objects.filter(pk=options['feed']) else: diff --git a/apps/rss_feeds/models.py b/apps/rss_feeds/models.py index d655d3537..a92d7d3d0 100755 --- a/apps/rss_feeds/models.py +++ b/apps/rss_feeds/models.py @@ -3059,6 +3059,7 @@ class MStarredStoryCounts(mongo.Document): 'count': c.count, 'is_highlights': c.is_highlights, 'feed_address': c.rss_url, + 'active': True, 'feed_id': c.feed_id} for c in counts], key=lambda x: (x.get('tag', '') or '').lower()) @@ -3211,6 +3212,7 @@ class MSavedSearch(mongo.Document): searches = sorted([{'query': s.query, 'feed_address': s.rss_url, 'feed_id': s.feed_id, + 'active': True, } for s in searches], key=lambda x: (x.get('query', '') or '').lower()) return searches diff --git a/apps/social/models.py b/apps/social/models.py index 9ef31d345..fe739a822 100644 --- a/apps/social/models.py +++ b/apps/social/models.py @@ -370,6 +370,7 @@ class MSocialProfile(mongo.Document): 'feed_link': self.blurblog_url, 'protected': self.protected, 'private': self.private, + 'active': True, } if not compact: params.update({ @@ -824,6 +825,7 @@ class MSocialSubscription(mongo.Document): needs_unread_recalc = mongo.BooleanField(default=False) feed_opens = mongo.IntField(default=0) is_trained = mongo.BooleanField(default=False) + active = mongo.BooleanField(default=True) meta = { 'collection': 'social_subscription', @@ -903,6 +905,7 @@ class MSocialSubscription(mongo.Document): def canonical(self): return { 'user_id': self.user_id, + 'active': self.active, 'subscription_user_id': self.subscription_user_id, 'nt': self.unread_count_neutral, 'ps': self.unread_count_positive, diff --git a/media/css/reader.css b/media/css/reader.css index 523614993..9663c4b89 100644 --- a/media/css/reader.css +++ b/media/css/reader.css @@ -6952,6 +6952,7 @@ form.opml_import_form input { } .NB-module-river .NB-module-river-favicon { display: inline-block; + cursor: pointer; } .NB-module-river .NB-module-river-favicon img { width: 16px; @@ -6961,6 +6962,7 @@ form.opml_import_form input { } .NB-module-river .NB-module-river-title { display: inline-block; + cursor: pointer; } .NB-module-river .NB-view-river { box-shadow: 0 1px 2px rgba(0,0,0,0.1); diff --git a/media/js/newsblur/reader/reader_utils.js b/media/js/newsblur/reader/reader_utils.js index 0407ef26c..2dc2f1f74 100644 --- a/media/js/newsblur/reader/reader_utils.js +++ b/media/js/newsblur/reader/reader_utils.js @@ -165,6 +165,7 @@ NEWSBLUR.utils = { var make_feed_option = function(feed) { if (!feed.get('feed_title')) return; + if (!feed.get('active')) return; var prefix = 'feed:'; if (feed.is_starred()) prefix = ''; else if (feed.is_social()) prefix = ''; diff --git a/media/js/newsblur/views/dashboard_river_view.js b/media/js/newsblur/views/dashboard_river_view.js index 0644f4196..5316f94ed 100644 --- a/media/js/newsblur/views/dashboard_river_view.js +++ b/media/js/newsblur/views/dashboard_river_view.js @@ -2,7 +2,9 @@ NEWSBLUR.Views.DashboardRiver = Backbone.View.extend({ events: { "click .NB-module-search-add-url" : "add_url", - "click .NB-feedbar-options" : "open_options_popover" + "click .NB-feedbar-options" : "open_options_popover", + "click .NB-module-river-favicon" : "reload", + "click .NB-module-river-title" : "open_river" }, initialize: function () { @@ -116,6 +118,10 @@ NEWSBLUR.Views.DashboardRiver = Backbone.View.extend({ console.log(['River feeds', river_id, feeds.length, feeds]); return feeds; }, + + open_river: function () { + this.open_story(); + }, // =========== // = Refresh = @@ -149,6 +155,10 @@ NEWSBLUR.Views.DashboardRiver = Backbone.View.extend({ this.story_titles.render(); }, + reload: function () { + this.load_stories(); + }, + load_stories: function(options) { options = _.extend({ global_feed: this.options.global_feed, @@ -253,7 +263,7 @@ NEWSBLUR.Views.DashboardRiver = Backbone.View.extend({ var river_id = this.model.get('river_id'); var options = { dashboard_transfer: this.options.dashboard_stories, - story_id: story.id + story_id: story && story.id }; console.log(['Opening dashboard story', story, this.options]); diff --git a/media/js/newsblur/views/feed_selector.js b/media/js/newsblur/views/feed_selector.js index 1f8830778..905ef1fdc 100644 --- a/media/js/newsblur/views/feed_selector.js +++ b/media/js/newsblur/views/feed_selector.js @@ -31,7 +31,7 @@ NEWSBLUR.Views.FeedSelector = Backbone.View.extend({ this.$el.show(); $input.val(''); - $input.focus(); + console.log(["Focus on feed selector", $input]); NEWSBLUR.app.feed_list.options.feed_chooser = true; NEWSBLUR.assets.feeds.trigger('reset', {feed_selector: true}); $feed_list.addClass('NB-selector-active'); @@ -44,6 +44,8 @@ NEWSBLUR.Views.FeedSelector = Backbone.View.extend({ if (NEWSBLUR.reader.flags['sidebar_closed']) { NEWSBLUR.reader.layout.outerLayout.show('west', true); } + + $input.focus(); }, hide_feed_selector: function() { @@ -182,4 +184,4 @@ NEWSBLUR.Views.FeedSelector = Backbone.View.extend({ return false; } -}); \ No newline at end of file +});