domain_lists.js 888 B

1234567891011121314151617181920212223242526
  1. import { Map as ImmutableMap, OrderedSet as ImmutableOrderedSet } from 'immutable';
  2. import {
  3. DOMAIN_BLOCKS_FETCH_SUCCESS,
  4. DOMAIN_BLOCKS_EXPAND_SUCCESS,
  5. unblockDomainSuccess
  6. } from '../actions/domain_blocks';
  7. const initialState = ImmutableMap({
  8. blocks: ImmutableMap({
  9. items: ImmutableOrderedSet(),
  10. }),
  11. });
  12. export default function domainLists(state = initialState, action) {
  13. switch(action.type) {
  14. case DOMAIN_BLOCKS_FETCH_SUCCESS:
  15. return state.setIn(['blocks', 'items'], ImmutableOrderedSet(action.domains)).setIn(['blocks', 'next'], action.next);
  16. case DOMAIN_BLOCKS_EXPAND_SUCCESS:
  17. return state.updateIn(['blocks', 'items'], set => set.union(action.domains)).setIn(['blocks', 'next'], action.next);
  18. case unblockDomainSuccess.type:
  19. return state.updateIn(['blocks', 'items'], set => set.delete(action.payload.domain));
  20. default:
  21. return state;
  22. }
  23. }