Doodle3D-Transform/src/js/utils/formUtils.js

37 lines
1.2 KiB
JavaScript

import { SubmissionError } from 'redux-form';
// import createDebug from 'debug';
// const debug = createDebug('d3d:utils: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(err => {
// axius (used by superlogin http utils) puts response data in response.data
if (err.response && err.response.data) {
err = err.response.data;
}
// promise middleware puts actual error in reason
if (err.action && err.reason) {
err = err.reason;
}
const submissionErrors = {
_error: err.message || err.error
};
// add superlogin validation errors
// joined because superlogin creates arrays per field
for (const prop in err.validationErrors) {
submissionErrors[prop] = err.validationErrors[prop].join(', ');
}
const submissionError = new SubmissionError(submissionErrors);
reject(submissionError);
});
});
}