text: import { List, Map } from 'immutable';
  import Announcement from 'Types/announcement';
  import { RequestTypes } from './requestStateCreator';
  
  import { mergeReducers } from './funcTools/tools';
  import { createRequestReducer } from './funcTools/request';
  import { 
  	createCRUDReducer, 
  	getCRUDRequestTypes,
  	createFetchList
  } from './funcTools/crud';
  
  const name = 'announcement';
  const idKey = 'id';
  
  const SET_LAST_READ = new RequestTypes('announcement/SET_LAST_READ');
  
  const initialState = Map({
    list: List()
  });
  
  const reducer = (state = initialState, action = {}) => {
    switch (action.type) {
      case SET_LAST_READ.SUCCESS:
        return state.update('list', (list) => list.map(i => ({...i.toJS(), viewed: true })));
    }
    return state;
  };
  
  export function setLastRead() {
    return {
      types: SET_LAST_READ.toArray(),
      call: client => client.get(`/announcements/view`),
    };
  }
  
  export const fetchList = createFetchList(name);
  
  export default mergeReducers(
  	reducer,
  	createCRUDReducer(name, Announcement, idKey),
  	createRequestReducer({
  		...getCRUDRequestTypes(name),
  	}),
  );