diff options
Diffstat (limited to 'webapp/reducers/views')
-rw-r--r-- | webapp/reducers/views/channel.js | 69 | ||||
-rw-r--r-- | webapp/reducers/views/index.js | 12 | ||||
-rw-r--r-- | webapp/reducers/views/rhs.js | 63 |
3 files changed, 144 insertions, 0 deletions
diff --git a/webapp/reducers/views/channel.js b/webapp/reducers/views/channel.js new file mode 100644 index 000000000..0deb2389e --- /dev/null +++ b/webapp/reducers/views/channel.js @@ -0,0 +1,69 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import {combineReducers} from 'redux'; +import {ActionTypes, Constants} from 'utils/constants.jsx'; +import {ChannelTypes, PostTypes} from 'mattermost-redux/action_types'; + +function postVisibility(state = {}, action) { + switch (action.type) { + case ChannelTypes.SELECT_CHANNEL: { + const nextState = {...state}; + nextState[action.data] = Constants.POST_CHUNK_SIZE / 2; + return nextState; + } + case ActionTypes.INCREASE_POST_VISIBILITY: { + const nextState = {...state}; + nextState[action.data] += action.amount; + return nextState; + } + case ActionTypes.RECEIVED_FOCUSED_POST: { + const nextState = {...state}; + nextState[action.channelId] = Constants.POST_CHUNK_SIZE / 2; + return nextState; + } + case PostTypes.RECEIVED_POST: { + if (action.data && state[action.data.channel_id]) { + const nextState = {...state}; + nextState[action.data.channel_id] += 1; + return nextState; + } + return state; + } + default: + return state; + } +} + +function lastChannelViewTime(state = {}, action) { + switch (action.type) { + case ChannelTypes.SELECT_CHANNEL: { + if (action.member) { + const nextState = {...state}; + nextState[action.data] = action.member.last_viewed_at; + return nextState; + } + return state; + } + default: + return state; + } +} + +function loadingPosts(state = {}, action) { + switch (action.type) { + case ActionTypes.LOADING_POSTS: { + const nextState = {...state}; + nextState[action.channelId] = action.data; + return nextState; + } + default: + return state; + } +} + +export default combineReducers({ + postVisibility, + lastChannelViewTime, + loadingPosts +}); diff --git a/webapp/reducers/views/index.js b/webapp/reducers/views/index.js new file mode 100644 index 000000000..98eb7dac9 --- /dev/null +++ b/webapp/reducers/views/index.js @@ -0,0 +1,12 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import {combineReducers} from 'redux'; + +import rhs from './rhs'; +import channel from './channel'; + +export default combineReducers({ + rhs, + channel +}); diff --git a/webapp/reducers/views/rhs.js b/webapp/reducers/views/rhs.js new file mode 100644 index 000000000..1e6480743 --- /dev/null +++ b/webapp/reducers/views/rhs.js @@ -0,0 +1,63 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import {combineReducers} from 'redux'; +import {ActionTypes} from 'utils/constants.jsx'; +import {PostTypes} from 'mattermost-redux/action_types'; + +function selectedPostId(state = '', action) { + switch (action.type) { + case ActionTypes.SELECT_POST: + return action.postId; + case PostTypes.REMOVE_POST: + if (action.data && action.data.id === state) { + return ''; + } + return state; + default: + return state; + } +} + +function fromSearch(state = '', action) { + switch (action.type) { + case ActionTypes.SELECT_POST: + if (action.from_search) { + return action.from_search; + } + return ''; + default: + return state; + } +} + +function fromFlaggedPosts(state = false, action) { + switch (action.type) { + case ActionTypes.SELECT_POST: + if (action.from_flagged_posts) { + return action.from_flagged_posts; + } + return false; + default: + return state; + } +} + +function fromPinnedPosts(state = false, action) { + switch (action.type) { + case ActionTypes.SELECT_POST: + if (action.from_pinned_posts) { + return action.from_pinned_posts; + } + return false; + default: + return state; + } +} + +export default combineReducers({ + selectedPostId, + fromSearch, + fromFlaggedPosts, + fromPinnedPosts +}); |