| 
									
										
										
										
											2018-01-04 16:24:03 -08:00
										 |  |  | import _ from 'lodash/fp'; | 
					
						
							| 
									
										
										
										
											2018-01-04 16:39:43 -08:00
										 |  |  | import { | 
					
						
							|  |  |  |   createTypes, | 
					
						
							|  |  |  |   createAction, | 
					
						
							| 
									
										
										
										
											2018-01-12 11:09:09 -08:00
										 |  |  |   createAsyncTypes, | 
					
						
							| 
									
										
										
										
											2018-01-04 16:39:43 -08:00
										 |  |  |   composeReducers, | 
					
						
							|  |  |  |   handleActions | 
					
						
							|  |  |  | } from 'berkeleys-redux-utils'; | 
					
						
							| 
									
										
										
										
											2018-01-04 09:18:20 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-12 11:09:09 -08:00
										 |  |  | import * as utils from './utils.js'; | 
					
						
							|  |  |  | import getMessagesEpic from './get-messages-epic.js'; | 
					
						
							| 
									
										
										
										
											2018-01-04 16:24:03 -08:00
										 |  |  | import ns from '../ns.json'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-26 19:15:23 -08:00
										 |  |  | // export all the utils
 | 
					
						
							|  |  |  | export { utils }; | 
					
						
							| 
									
										
										
										
											2018-01-12 11:09:09 -08:00
										 |  |  | export const epics = [getMessagesEpic]; | 
					
						
							| 
									
										
										
										
											2018-01-08 11:12:00 -08:00
										 |  |  | export const types = createTypes([ | 
					
						
							|  |  |  |   'clickOnClose', | 
					
						
							| 
									
										
										
										
											2018-01-12 11:09:09 -08:00
										 |  |  |   createAsyncTypes('fetchMessages') | 
					
						
							| 
									
										
										
										
											2018-01-08 11:12:00 -08:00
										 |  |  | ], ns); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const clickOnClose = createAction(types.clickOnClose, _.noop); | 
					
						
							| 
									
										
										
										
											2018-01-12 11:09:09 -08:00
										 |  |  | export const fetchMessagesComplete = createAction(types.fetchMessages.complete); | 
					
						
							|  |  |  | export const fetchMessagesError = createAction(types.fetchMessages.error); | 
					
						
							| 
									
										
										
										
											2018-01-08 11:12:00 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-09 14:35:04 -08:00
										 |  |  | const defaultState = []; | 
					
						
							| 
									
										
										
										
											2018-01-04 16:24:03 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | const getNS = _.property(ns); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const latestMessageSelector = _.flow( | 
					
						
							|  |  |  |   getNS, | 
					
						
							|  |  |  |   _.head, | 
					
						
							| 
									
										
										
										
											2018-01-04 16:39:43 -08:00
										 |  |  |   _.defaultTo({}) | 
					
						
							| 
									
										
										
										
											2018-01-04 16:24:03 -08:00
										 |  |  | ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default composeReducers( | 
					
						
							|  |  |  |   ns, | 
					
						
							| 
									
										
										
										
											2018-01-04 16:39:43 -08:00
										 |  |  |   handleActions( | 
					
						
							|  |  |  |     () => ({ | 
					
						
							| 
									
										
										
										
											2018-01-09 14:35:04 -08:00
										 |  |  |       [types.clickOnClose]: _.tail, | 
					
						
							| 
									
										
										
										
											2018-01-12 11:09:09 -08:00
										 |  |  |       [types.fetchMessages.complete]: (state, { payload }) => [ | 
					
						
							| 
									
										
										
										
											2018-01-04 16:39:43 -08:00
										 |  |  |         ...state, | 
					
						
							| 
									
										
										
										
											2018-01-12 11:09:09 -08:00
										 |  |  |         ...utils.expressToStack(payload) | 
					
						
							| 
									
										
										
										
											2018-01-09 14:35:04 -08:00
										 |  |  |       ] | 
					
						
							| 
									
										
										
										
											2018-01-04 16:39:43 -08:00
										 |  |  |     }), | 
					
						
							|  |  |  |     defaultState, | 
					
						
							|  |  |  |   ), | 
					
						
							| 
									
										
										
										
											2018-01-04 16:24:03 -08:00
										 |  |  |   function metaReducer(state = defaultState, action) { | 
					
						
							| 
									
										
										
										
											2018-01-12 11:09:09 -08:00
										 |  |  |     if (utils.isFlashAction(action)) { | 
					
						
							| 
									
										
										
										
											2018-01-26 19:15:23 -08:00
										 |  |  |       const { payload } = utils.getFlashAction(action); | 
					
						
							| 
									
										
										
										
											2018-01-09 14:35:04 -08:00
										 |  |  |       return [ | 
					
						
							| 
									
										
										
										
											2018-01-04 16:24:03 -08:00
										 |  |  |         ...state, | 
					
						
							| 
									
										
										
										
											2018-01-26 19:15:23 -08:00
										 |  |  |         ...payload | 
					
						
							| 
									
										
										
										
											2018-01-09 14:35:04 -08:00
										 |  |  |       ]; | 
					
						
							| 
									
										
										
										
											2018-01-04 16:24:03 -08:00
										 |  |  |     } | 
					
						
							|  |  |  |     return state; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | ); |