2018-02-08 12:01:06 +01:00
|
|
|
/*
|
|
|
|
*
|
|
|
|
* HomePage reducer
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2018-02-19 13:10:35 +01:00
|
|
|
import { fromJS, List, Map } from 'immutable';
|
2018-02-08 12:01:06 +01:00
|
|
|
|
2018-02-16 14:17:24 +01:00
|
|
|
import {
|
2018-02-19 15:14:32 +01:00
|
|
|
CHANGE_PARAMS,
|
|
|
|
DELETE_SUCCESS,
|
2018-02-16 14:17:24 +01:00
|
|
|
DROP_SUCCESS,
|
2018-02-16 15:39:35 +01:00
|
|
|
GET_DATA_SUCCESS,
|
2018-02-16 14:17:24 +01:00
|
|
|
ON_SEARCH,
|
2018-02-23 15:28:01 +01:00
|
|
|
ON_SEARCH_SUCCESS,
|
2018-03-06 09:31:44 +01:00
|
|
|
SET_LOADING,
|
2018-02-23 12:21:57 +01:00
|
|
|
SET_PARAMS,
|
2018-03-06 09:31:44 +01:00
|
|
|
UNSET_LOADING,
|
2018-02-16 14:17:24 +01:00
|
|
|
} from './constants';
|
2018-02-08 12:01:06 +01:00
|
|
|
|
2018-02-15 17:46:57 +01:00
|
|
|
const initialState = fromJS({
|
2018-02-19 15:14:32 +01:00
|
|
|
deleteSuccess: false,
|
|
|
|
dataToDelete: '',
|
2018-02-22 18:24:17 +01:00
|
|
|
entriesNumber: 0,
|
2018-03-06 09:31:44 +01:00
|
|
|
uploadFilesLoading: false,
|
2018-02-15 17:46:57 +01:00
|
|
|
search: '',
|
2018-02-23 14:57:15 +01:00
|
|
|
uploadedFiles: List([]),
|
2018-02-19 15:14:32 +01:00
|
|
|
params: Map({
|
2019-09-11 11:00:40 +02:00
|
|
|
_sort: 'hash:ASC',
|
2018-05-16 17:10:43 +02:00
|
|
|
_limit: 10,
|
|
|
|
_page: 1,
|
2018-02-19 15:14:32 +01:00
|
|
|
}),
|
2018-02-15 17:46:57 +01:00
|
|
|
});
|
2018-02-08 12:01:06 +01:00
|
|
|
|
|
|
|
function homePageReducer(state = initialState, action) {
|
|
|
|
switch (action.type) {
|
2018-02-19 15:14:32 +01:00
|
|
|
case CHANGE_PARAMS:
|
2018-02-19 17:05:23 +01:00
|
|
|
return state.updateIn(action.keys, () => action.value);
|
2018-02-19 15:14:32 +01:00
|
|
|
case DELETE_SUCCESS:
|
2019-09-11 11:00:40 +02:00
|
|
|
return state.update('deleteSuccess', v => (v = !v));
|
2018-02-16 14:17:24 +01:00
|
|
|
case DROP_SUCCESS:
|
2019-09-11 11:00:40 +02:00
|
|
|
return state.update('uploadedFiles', list =>
|
|
|
|
List(action.newFiles).concat(list)
|
|
|
|
);
|
2018-02-16 15:39:35 +01:00
|
|
|
case GET_DATA_SUCCESS:
|
|
|
|
return state
|
|
|
|
.update('uploadedFiles', () => List(action.data))
|
|
|
|
.update('entriesNumber', () => action.entriesNumber);
|
2018-02-15 17:46:57 +01:00
|
|
|
case ON_SEARCH:
|
|
|
|
return state.update('search', () => action.value);
|
2018-02-23 15:28:01 +01:00
|
|
|
case ON_SEARCH_SUCCESS:
|
|
|
|
return state.update('uploadedFiles', () => List(action.data));
|
2018-03-06 09:31:44 +01:00
|
|
|
case SET_LOADING:
|
|
|
|
return state.update('uploadFilesLoading', () => true);
|
2018-02-23 12:21:57 +01:00
|
|
|
case SET_PARAMS:
|
|
|
|
return state.set('params', Map(action.params));
|
2018-03-06 09:31:44 +01:00
|
|
|
case UNSET_LOADING:
|
|
|
|
return state.update('uploadFilesLoading', () => false);
|
2018-02-08 12:01:06 +01:00
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default homePageReducer;
|