From a9edd520a71ec84681213b92442204f8b8a75d26 Mon Sep 17 00:00:00 2001 From: Sonny Date: Thu, 28 Nov 2019 21:18:45 +0100 Subject: [PATCH] Fix negative unread count --- .../js/pages/homepage/reducers/categories.js | 52 ++++++++----------- .../js/pages/homepage/reducers/selected.js | 6 +++ 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/newsreader/js/pages/homepage/reducers/categories.js b/src/newsreader/js/pages/homepage/reducers/categories.js index 4fd391f..90fe063 100644 --- a/src/newsreader/js/pages/homepage/reducers/categories.js +++ b/src/newsreader/js/pages/homepage/reducers/categories.js @@ -12,33 +12,6 @@ import { import { MARK_POST_READ } from '../actions/posts.js'; import { MARK_SECTION_READ } from '../actions/selected.js'; -const markCategoryRead = (action, state) => { - const category = { ...state.items[action.section.id] }; - - return { - ...state, - items: { - ...state.items, - [category.id]: { ...category, unread: 0 }, - }, - }; -}; - -const markCategoryByRule = (action, state) => { - const category = { ...state.items[action.section.category] }; - - return { - ...state, - items: { - ...state.items, - [category.id]: { - ...category, - unread: category.unread - action.section.unread, - }, - }, - }; -}; - const defaultState = { items: {}, isFetching: false }; export const categories = (state = { ...defaultState }, action) => { @@ -83,11 +56,32 @@ export const categories = (state = { ...defaultState }, action) => { }, }; case MARK_SECTION_READ: + category = {}; + switch (action.section.type) { case CATEGORY_TYPE: - return markCategoryRead(action, state); + category = { ...state.items[action.section.id] }; + + return { + ...state, + items: { + ...state.items, + [category.id]: { ...category, unread: 0 }, + }, + }; case RULE_TYPE: - return markCategoryByRule(action, state); + category = { ...state.items[action.section.category] }; + + return { + ...state, + items: { + ...state.items, + [category.id]: { + ...category, + unread: category.unread - action.section.unread, + }, + }, + }; } return state; diff --git a/src/newsreader/js/pages/homepage/reducers/selected.js b/src/newsreader/js/pages/homepage/reducers/selected.js index 0bef90c..8b1f7f8 100644 --- a/src/newsreader/js/pages/homepage/reducers/selected.js +++ b/src/newsreader/js/pages/homepage/reducers/selected.js @@ -10,6 +10,7 @@ import { } from '../actions/posts.js'; import { MARK_SECTION_READ } from '../actions/selected.js'; +import { MARK_POST_READ } from '../actions/posts.js'; const defaultState = { item: {}, next: false, lastReached: false, post: {} }; @@ -75,6 +76,11 @@ export const selected = (state = { ...defaultState }, action) => { ...state, post: {}, }; + case MARK_POST_READ: + return { + ...state, + item: { ...action.section, unread: action.section.unread - 1 }, + }; case MARK_SECTION_READ: return { ...state,