35 lines
		
	
	
	
		
			1,011 B
		
	
	
	
		
			React
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
	
		
			1,011 B
		
	
	
	
		
			React
		
	
	
	
	
	
| 
								 | 
							
								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;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 |