From ded0971f5691ed2934e690c8d7bd480ed15402f7 Mon Sep 17 00:00:00 2001 From: François Schmidts Date: Tue, 2 Feb 2016 21:55:57 +0100 Subject: updating unread count when fetching unread --- src/web/js/actions/MiddlePanelActions.js | 1 + src/web/js/components/RightPanel.react.js | 2 +- src/web/js/stores/MenuStore.js | 34 +++++++++++++++++++++++++------ 3 files changed, 30 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/web/js/actions/MiddlePanelActions.js b/src/web/js/actions/MiddlePanelActions.js index 08510f29..f805b7b1 100644 --- a/src/web/js/actions/MiddlePanelActions.js +++ b/src/web/js/actions/MiddlePanelActions.js @@ -39,6 +39,7 @@ var reloadIfNecessaryAndDispatch = function(dispath_payload) { jquery.getJSON('/middle_panel', filters, function(payload) { dispath_payload.articles = payload.articles; + dispath_payload.filters = filters; JarrDispatcher.dispatch(dispath_payload); _last_fetched_with = MiddlePanelStore.getRequestFilter(); }); diff --git a/src/web/js/components/RightPanel.react.js b/src/web/js/components/RightPanel.react.js index 3b625689..1e66ce39 100644 --- a/src/web/js/components/RightPanel.react.js +++ b/src/web/js/components/RightPanel.react.js @@ -39,7 +39,7 @@ var PanelMixin = { ); } return (
-

{icon}Title: {this.getTitle()}

+

{icon}{this.getTitle()}

{btn_grp}
); }, diff --git a/src/web/js/stores/MenuStore.js b/src/web/js/stores/MenuStore.js index d3c44355..36dee363 100644 --- a/src/web/js/stores/MenuStore.js +++ b/src/web/js/stores/MenuStore.js @@ -56,12 +56,34 @@ MenuStore.dispatchToken = JarrDispatcher.register(function(action) { break; case ActionTypes.PARENT_FILTER: MenuStore.setActive(action.filter_type, action.filter_id); - break; - case ActionTypes.MENU_FILTER: - MenuStore.setFilter(action.filter); - break; - case ActionTypes.MENU_FILTER: - MenuStore.setFilter(action.filter); + if(action.filters && action.articles && !action.filters.query + && action.filters.filter == 'unread') { + var new_unread = {}; + action.articles.map(function(article) { + if(!(article.feed_id in new_unread)) { + new_unread[article.feed_id] = 0; + } + if(!article.read) { + new_unread[article.feed_id] += 1; + } + }); + var changed = false; + for(var feed_id in new_unread) { + var old_unread = MenuStore._datas.feeds[feed_id].unread; + if(old_unread == new_unread[feed_id]) { + continue; + } + changed = true; + MenuStore._datas.feeds[feed_id].unread = new_unread[feed_id]; + var cat_id = MenuStore._datas.feeds[feed_id].category_id; + MenuStore._datas.categories[cat_id].unread -= old_unread; + MenuStore._datas.categories[cat_id].unread += new_unread[feed_id]; + } + if(changed) { + MenuStore.emitChange(); + } + } + break; case ActionTypes.MENU_FILTER: MenuStore.setFilter(action.filter); -- cgit