2020-02-18 16:39:03 +01:00
|
|
|
import { fromJS } from 'immutable';
|
2020-02-18 18:37:14 +01:00
|
|
|
import createNewFilesToUploadArray from './utils/createNewFilesToUploadArray';
|
2020-02-18 16:39:03 +01:00
|
|
|
|
|
|
|
const initialState = fromJS({
|
2020-02-18 18:37:14 +01:00
|
|
|
currentStep: 'browse',
|
2020-02-18 18:05:52 +01:00
|
|
|
filesToUpload: [],
|
2020-02-18 16:39:03 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
const reducer = (state, action) => {
|
|
|
|
switch (action.type) {
|
2020-02-18 18:05:52 +01:00
|
|
|
case 'ADD_FILES_TO_UPLOAD':
|
|
|
|
return state
|
|
|
|
.update('filesToUpload', list =>
|
2020-02-19 11:21:25 +01:00
|
|
|
list
|
|
|
|
.concat(fromJS(createNewFilesToUploadArray(action.filesToUpload)))
|
|
|
|
.map((data, index) => data.set('originalIndex', index))
|
2020-02-18 18:05:52 +01:00
|
|
|
)
|
|
|
|
.update('currentStep', () => action.nextStep);
|
2020-02-19 11:21:25 +01:00
|
|
|
case 'CLEAN_FILES_ERROR':
|
|
|
|
return state.update('filesToUpload', list =>
|
|
|
|
list.map(data => {
|
|
|
|
return data.set('hasError', false).set('errorMessage', null);
|
|
|
|
})
|
|
|
|
);
|
2020-02-18 18:05:52 +01:00
|
|
|
case 'GO_TO':
|
|
|
|
return state.update('currentStep', () => action.to);
|
2020-02-19 09:14:11 +01:00
|
|
|
case 'REMOVE_FILE_TO_UPLOAD':
|
2020-02-19 10:12:35 +01:00
|
|
|
return state.update('filesToUpload', list => {
|
|
|
|
return list.filter(
|
|
|
|
data => data.get('originalIndex') !== action.fileIndex
|
|
|
|
);
|
|
|
|
});
|
2020-02-18 16:39:03 +01:00
|
|
|
case 'RESET_PROPS':
|
|
|
|
return initialState;
|
2020-02-19 11:21:25 +01:00
|
|
|
case 'SET_FILE_ERROR':
|
|
|
|
return state.update('filesToUpload', list => {
|
|
|
|
return list.map(data => {
|
|
|
|
if (data.get('originalIndex') === action.fileIndex) {
|
|
|
|
return data
|
|
|
|
.set('isUploading', false)
|
|
|
|
.set('hasError', true)
|
|
|
|
.set('errorMessage', action.errorMessage);
|
|
|
|
}
|
|
|
|
|
|
|
|
return data;
|
|
|
|
});
|
|
|
|
});
|
2020-02-19 09:14:11 +01:00
|
|
|
case 'SET_FILES_UPLOADING_STATE':
|
|
|
|
return state.update('filesToUpload', list =>
|
2020-02-19 13:40:36 +01:00
|
|
|
list.map(data =>
|
|
|
|
data
|
|
|
|
.set('isUploading', true)
|
|
|
|
.set('hasError', false)
|
|
|
|
.set('errorMessage', null)
|
|
|
|
)
|
2020-02-19 09:14:11 +01:00
|
|
|
);
|
2020-02-19 10:12:35 +01:00
|
|
|
|
2020-02-18 16:39:03 +01:00
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
export default reducer;
|
|
|
|
export { initialState };
|