diff options
Diffstat (limited to 'app/javascript/mastodon/reducers/conversations.js')
-rw-r--r-- | app/javascript/mastodon/reducers/conversations.js | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/app/javascript/mastodon/reducers/conversations.js b/app/javascript/mastodon/reducers/conversations.js index f339abf56..ea39fccee 100644 --- a/app/javascript/mastodon/reducers/conversations.js +++ b/app/javascript/mastodon/reducers/conversations.js @@ -1,9 +1,12 @@ import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; import { + CONVERSATIONS_MOUNT, + CONVERSATIONS_UNMOUNT, CONVERSATIONS_FETCH_REQUEST, CONVERSATIONS_FETCH_SUCCESS, CONVERSATIONS_FETCH_FAIL, CONVERSATIONS_UPDATE, + CONVERSATIONS_READ, } from '../actions/conversations'; import compareId from '../compare_id'; @@ -11,10 +14,12 @@ const initialState = ImmutableMap({ items: ImmutableList(), isLoading: false, hasMore: true, + mounted: false, }); const conversationToMap = item => ImmutableMap({ id: item.id, + unread: item.unread, accounts: ImmutableList(item.accounts.map(a => a.id)), last_status: item.last_status.id, }); @@ -73,6 +78,18 @@ export default function conversations(state = initialState, action) { return expandNormalizedConversations(state, action.conversations, action.next); case CONVERSATIONS_UPDATE: return updateConversation(state, action.conversation); + case CONVERSATIONS_MOUNT: + return state.update('mounted', count => count + 1); + case CONVERSATIONS_UNMOUNT: + return state.update('mounted', count => count - 1); + case CONVERSATIONS_READ: + return state.update('items', list => list.map(item => { + if (item.get('id') === action.id) { + return item.set('unread', false); + } + + return item; + })); default: return state; } |