diff options
Diffstat (limited to 'app/assets/javascripts/components/reducers/relationships.jsx')
-rw-r--r-- | app/assets/javascripts/components/reducers/relationships.jsx | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/app/assets/javascripts/components/reducers/relationships.jsx b/app/assets/javascripts/components/reducers/relationships.jsx new file mode 100644 index 000000000..165b1f3ff --- /dev/null +++ b/app/assets/javascripts/components/reducers/relationships.jsx @@ -0,0 +1,34 @@ +import { + ACCOUNT_FOLLOW_SUCCESS, + ACCOUNT_UNFOLLOW_SUCCESS, + ACCOUNT_BLOCK_SUCCESS, + ACCOUNT_UNBLOCK_SUCCESS, + RELATIONSHIPS_FETCH_SUCCESS +} from '../actions/accounts'; +import Immutable from 'immutable'; + +const normalizeRelationship = (state, relationship) => state.set(relationship.get('id'), relationship); + +const normalizeRelationships = (state, relationships) => { + relationships.forEach(relationship => { + state = normalizeRelationship(state, relationship); + }); + + return state; +}; + +const initialState = Immutable.Map(); + +export default function relationships(state = initialState, action) { + switch(action.type) { + case ACCOUNT_FOLLOW_SUCCESS: + case ACCOUNT_UNFOLLOW_SUCCESS: + case ACCOUNT_BLOCK_SUCCESS: + case ACCOUNT_UNBLOCK_SUCCESS: + return normalizeRelationship(state, Immutable.fromJS(action.relationship)); + case RELATIONSHIPS_FETCH_SUCCESS: + return normalizeRelationships(state, Immutable.fromJS(action.relationships)); + default: + return state; + } +}; |