trc-client-core
Version:
The core of the TRC Client
39 lines (30 loc) • 1.19 kB
JavaScript
import {Map, OrderedMap, fromJS} from 'immutable';
import {file} from 'trc-client-core/src/utils/Request';
import createRequestActions from 'trc-client-core/src/utils/createRequestActions';
const FETCH = 'trc/fileUpload/FETCH';
const RECEIVE = 'trc/fileUpload/RECEIVE';
const ERROR = 'trc/fileUpload/ERROR';
export const requestFileUpload = createRequestActions(FETCH, RECEIVE, ERROR, file.upload);
const initialState = Map({
fetching: false,
collection: OrderedMap({})
});
export default function fileUploadReducer(state = initialState, action = {}) {
switch (action.type) {
case FETCH:
return state
.set('fetching', true);
case ERROR:
return state
.set('fetching', false)
.set('error', action.payload);
case RECEIVE:
var newState = fromJS(action.payload)
.reduce((rr, ii) => rr.set(ii.getIn(['request', 'filePath']), ii.getIn(['request', 'objectKey'])), OrderedMap());
return state
.set('fetching', false)
.mergeDeepIn(['collection'], newState);
default:
return state;
}
}