PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.4.1
GiveWP – Donation Plugin and Fundraising Platform v3.4.1
4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonationForms / resources / app / utilities / handleFormSubmitRequest.ts
give / src / DonationForms / resources / app / utilities Last commit date
ConvertFieldAPIRulesToJoi.ts 2 years ago PrepareFormData.ts 2 years ago amountFormatter.ts 2 years ago buildRegisterValidationOptions.ts 2 years ago conditionOperatorFunctions.js 2 years ago convertValuesToFormData.ts 2 years ago createValidationObjectFromFields.js 2 years ago generateRequestErrors.ts 2 years ago getCurrentFormUrlData.js 2 years ago getDefaultValuesFromSections.ts 2 years ago getDonationFormNodeSettings.ts 2 years ago getErrorByFieldName.ts 2 years ago getWindowData.ts 2 years ago groups.ts 2 years ago handleFormRedirect.ts 2 years ago handleFormSubmitRequest.ts 2 years ago handleValidationRequest.ts 2 years ago isRouteInlineRedirect.ts 2 years ago memoNode.ts 2 years ago mountWindowData.ts 2 years ago postData.ts 2 years ago postFormData.ts 2 years ago registerFieldAndBuildProps.tsx 2 years ago setDesignSettings.ts 2 years ago useDonationFormPubSub.ts 2 years ago
handleFormSubmitRequest.ts
83 lines
1 import {
2 Gateway,
3 isFormResponseGatewayError,
4 isFormResponseRedirect,
5 isFormResponseValidationError,
6 isResponseRedirected,
7 } from '@givewp/forms/types';
8 import generateRequestErrors from '../utilities/generateRequestErrors';
9 import FormRequestError from '../errors/FormRequestError';
10
11 import {__} from '@wordpress/i18n';
12 import handleRedirect from '@givewp/forms/app/utilities/handleFormRedirect';
13 import getCurrentFormUrlData from '@givewp/forms/app/utilities/getCurrentFormUrlData';
14 import postFormData from '@givewp/forms/app/utilities/postFormData';
15 import convertValuesToFormData from '@givewp/forms/app/utilities/convertValuesToFormData';
16
17 export default async function handleSubmitRequest(
18 values,
19 setError,
20 gateway: Gateway,
21 donateUrl: string,
22 inlineRedirectRoutes: string[]
23 ) {
24 if (values?.donationType === 'subscription' && !gateway.supportsSubscriptions) {
25 return setError('FORM_ERROR', {
26 message: __(
27 'This payment gateway does not support recurring payments, please try selecting another payment gateway.',
28 'give'
29 ),
30 });
31 }
32
33 try {
34 const {originUrl, isEmbed, embedId} = getCurrentFormUrlData();
35
36 const formValues = {
37 ...values,
38 originUrl,
39 isEmbed,
40 embedId,
41 };
42
43 const formData = convertValuesToFormData(formValues);
44
45 let beforeCreatePaymentGatewayResponse = {};
46
47 if (gateway.beforeCreatePayment) {
48 beforeCreatePaymentGatewayResponse = await gateway.beforeCreatePayment(values);
49
50 for (const gatewayDataKey in beforeCreatePaymentGatewayResponse) {
51 formData.append(`gatewayData[${gatewayDataKey}]`, beforeCreatePaymentGatewayResponse[gatewayDataKey]);
52 }
53 }
54
55 const {response} = await postFormData(donateUrl, formData);
56
57 if (isResponseRedirected(response)) {
58 await handleRedirect(response.url, inlineRedirectRoutes);
59 }
60
61 const formResponse = await response.json();
62
63 if (isFormResponseRedirect(formResponse)) {
64 await handleRedirect(formResponse.data.redirectUrl, inlineRedirectRoutes);
65 }
66
67 if (isFormResponseGatewayError(formResponse) || isFormResponseValidationError(formResponse)) {
68 throw new FormRequestError(formResponse.data.errors.errors);
69 }
70
71 if (gateway.afterCreatePayment) {
72 await gateway.afterCreatePayment(formResponse);
73 }
74 } catch (error) {
75 if (error instanceof FormRequestError) {
76 return generateRequestErrors(values, error.errors, setError);
77 }
78
79 return setError('FORM_ERROR', {
80 message: error?.message ?? __('Something went wrong, please try again or contact support.', 'give'),
81 });
82 }
83 };