1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | exports.__esModule = true;
|
6 | exports["default"] = void 0;
|
7 |
|
8 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9 |
|
10 | var _isPromise = _interopRequireDefault(require("is-promise"));
|
11 |
|
12 | var _SubmissionError = _interopRequireDefault(require("./SubmissionError"));
|
13 |
|
14 | var isSubmissionError = function isSubmissionError(error) {
|
15 | return error && error.name === _SubmissionError["default"].name;
|
16 | };
|
17 |
|
18 | var mergeErrors = function mergeErrors(_ref) {
|
19 | var asyncErrors = _ref.asyncErrors,
|
20 | syncErrors = _ref.syncErrors;
|
21 | return asyncErrors && typeof asyncErrors.merge === 'function' ? asyncErrors.merge(syncErrors).toJS() : (0, _extends2["default"])({}, asyncErrors, {}, syncErrors);
|
22 | };
|
23 |
|
24 | var executeSubmit = function executeSubmit(submit, fields, props) {
|
25 | var dispatch = props.dispatch,
|
26 | submitAsSideEffect = props.submitAsSideEffect,
|
27 | onSubmitFail = props.onSubmitFail,
|
28 | onSubmitSuccess = props.onSubmitSuccess,
|
29 | startSubmit = props.startSubmit,
|
30 | stopSubmit = props.stopSubmit,
|
31 | setSubmitFailed = props.setSubmitFailed,
|
32 | setSubmitSucceeded = props.setSubmitSucceeded,
|
33 | values = props.values;
|
34 | var result;
|
35 |
|
36 | try {
|
37 | result = submit(values, dispatch, props);
|
38 | } catch (submitError) {
|
39 | var error = isSubmissionError(submitError) ? submitError.errors : undefined;
|
40 | stopSubmit(error);
|
41 | setSubmitFailed.apply(void 0, fields);
|
42 |
|
43 | if (onSubmitFail) {
|
44 | onSubmitFail(error, dispatch, submitError, props);
|
45 | }
|
46 |
|
47 | if (error || onSubmitFail) {
|
48 |
|
49 | return error;
|
50 | } else {
|
51 | throw submitError;
|
52 | }
|
53 | }
|
54 |
|
55 | if (submitAsSideEffect) {
|
56 | if (result) {
|
57 | dispatch(result);
|
58 | }
|
59 | } else {
|
60 | if ((0, _isPromise["default"])(result)) {
|
61 | startSubmit();
|
62 | return result.then(function (submitResult) {
|
63 | stopSubmit();
|
64 | setSubmitSucceeded();
|
65 |
|
66 | if (onSubmitSuccess) {
|
67 | onSubmitSuccess(submitResult, dispatch, props);
|
68 | }
|
69 |
|
70 | return submitResult;
|
71 | }, function (submitError) {
|
72 | var error = isSubmissionError(submitError) ? submitError.errors : undefined;
|
73 | stopSubmit(error);
|
74 | setSubmitFailed.apply(void 0, fields);
|
75 |
|
76 | if (onSubmitFail) {
|
77 | onSubmitFail(error, dispatch, submitError, props);
|
78 | }
|
79 |
|
80 | if (error || onSubmitFail) {
|
81 |
|
82 | return error;
|
83 | } else {
|
84 | throw submitError;
|
85 | }
|
86 | });
|
87 | } else {
|
88 | setSubmitSucceeded();
|
89 |
|
90 | if (onSubmitSuccess) {
|
91 | onSubmitSuccess(result, dispatch, props);
|
92 | }
|
93 | }
|
94 | }
|
95 |
|
96 | return result;
|
97 | };
|
98 |
|
99 | var handleSubmit = function handleSubmit(submit, props, valid, asyncValidate, fields) {
|
100 | var dispatch = props.dispatch,
|
101 | onSubmitFail = props.onSubmitFail,
|
102 | setSubmitFailed = props.setSubmitFailed,
|
103 | syncErrors = props.syncErrors,
|
104 | asyncErrors = props.asyncErrors,
|
105 | touch = props.touch,
|
106 | persistentSubmitErrors = props.persistentSubmitErrors;
|
107 | touch.apply(void 0, fields);
|
108 |
|
109 | if (valid || persistentSubmitErrors) {
|
110 | var asyncValidateResult = asyncValidate && asyncValidate();
|
111 |
|
112 | if (asyncValidateResult) {
|
113 | return asyncValidateResult.then(function (asyncErrors) {
|
114 | if (asyncErrors) {
|
115 | throw asyncErrors;
|
116 | }
|
117 |
|
118 | return executeSubmit(submit, fields, props);
|
119 | })["catch"](function (asyncErrors) {
|
120 | setSubmitFailed.apply(void 0, fields);
|
121 |
|
122 | if (onSubmitFail) {
|
123 | onSubmitFail(asyncErrors, dispatch, null, props);
|
124 | }
|
125 |
|
126 | return Promise.reject(asyncErrors);
|
127 | });
|
128 | } else {
|
129 | return executeSubmit(submit, fields, props);
|
130 | }
|
131 | } else {
|
132 | setSubmitFailed.apply(void 0, fields);
|
133 | var errors = mergeErrors({
|
134 | asyncErrors: asyncErrors,
|
135 | syncErrors: syncErrors
|
136 | });
|
137 |
|
138 | if (onSubmitFail) {
|
139 | onSubmitFail(errors, dispatch, null, props);
|
140 | }
|
141 |
|
142 | return errors;
|
143 | }
|
144 | };
|
145 |
|
146 | var _default = handleSubmit;
|
147 | exports["default"] = _default; |
\ | No newline at end of file |