Doodle3D-Core/src/utils/reactUtils.js

41 lines
1.3 KiB
JavaScript
Raw Normal View History

2017-10-29 09:04:21 +01:00
import { SubmissionError } from 'redux-form';
// redux form submit promise wrapper
// - turns all errors into SubmissionError
// - fills _error field, enables showing main error message in form
// - includes superlogin's validationErrors
export function formPromiseWrapper(promise) {
return new Promise((resolve, reject) => {
promise
.then(resolve)
.catch(error => {
// axius (used by superlogin http utils) puts response data in response.data
if (error.response && error.response.data) {
error = error.response.data;
}
// promise middleware puts actual error in reason
if (error.action && error.reason) {
error = error.reason;
}
const submissionErrors = {
_error: error.message || error.error
};
// add superlogin validation errors
// joined because superlogin creates arrays per field
for (const prop in error.validationErrors) {
submissionErrors[prop] = error.validationErrors[prop].join(', ');
}
const submissionError = new SubmissionError(submissionErrors);
reject(submissionError);
});
});
}
export function classNames(...names) {
return names
.filter(name => typeof name === 'string')
.join(' ');
}