Skip to content

Commit bd96a9b

Browse files
authored
Merge pull request #2076 from rgristroph-usdoj/WS-503-revert-back-to-v2
WS-503: Switching back to v2 for now.
2 parents 04f8302 + 872d4b8 commit bd96a9b

File tree

3 files changed

+62
-64
lines changed

3 files changed

+62
-64
lines changed

js/components/foia_request_form.jsx

+25-50
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import React, { useState, useEffect, useCallback } from 'react';
1+
import React, { useRef, useState, useEffect } from 'react';
22
import PropTypes from 'prop-types';
33
import Form from '@rjsf/core';
44
import validator from '@rjsf/validator-ajv8';
55
import { Map } from 'immutable';
66
import CustomFieldTemplate from 'components/request_custom_field_template';
77
import USWDSRadioWidget from 'components/uswds_radio_widget';
88
import USWDSCheckboxWidget from 'components/uswds_checkbox_widget';
9-
import { GoogleReCaptchaProvider, GoogleReCaptcha, useGoogleReCaptcha } from 'react-google-recaptcha-v3'; // Import v3 hook
9+
import ReCAPTCHA from 'react-google-recaptcha';
1010
import { requestActions } from '../actions';
1111
import { SubmissionResult } from '../models';
1212
import CustomObjectFieldTemplate from './object_field_template';
@@ -20,34 +20,16 @@ import dispatcher from '../util/dispatcher';
2020
function FoiaRequestForm({
2121
formData, upload, onSubmit, requestForm, submissionResult,
2222
}) {
23-
const [settingsdata, setSettingsdata] = useState(null);
24-
const [token, setToken] = useState('');
25-
const [refreshReCaptcha, setRefreshReCaptcha] = useState(false);
26-
const { executeRecaptcha } = useGoogleReCaptcha();
23+
const recaptchaRef = useRef();
2724

28-
const setTokenFunc = (getToken) => {
29-
setToken(getToken);
30-
};
31-
32-
const handleReCaptchaVerify = useCallback(async () => {
33-
if (!executeRecaptcha) {
34-
console.log('Execute recaptcha not yet available');
35-
return;
36-
}
37-
38-
const newtoken = await executeRecaptcha('submit');
39-
setTokenFunc(newtoken);
40-
console.log('newtoken:');
41-
console.log(newtoken);
42-
}, [executeRecaptcha]);
25+
const [settingsdata, setData] = useState(null);
4326

4427
useEffect(() => {
4528
fetch('/files/settings.json')
4629
.then((response) => response.json())
47-
.then((result) => setSettingsdata(result))
30+
.then((result) => setData(result))
4831
.catch((error) => console.error('Error fetching recaptcha site key:', error));
49-
handleReCaptchaVerify();
50-
}, [handleReCaptchaVerify]);
32+
}, []);
5133

5234
// Helper function to jump to the first form error.
5335
function focusOnFirstError() {
@@ -75,7 +57,6 @@ function FoiaRequestForm({
7557

7658
// Listen for jsonSchema validation errors and jump to them.
7759
function onError() {
78-
setRefreshReCaptcha(!refreshReCaptcha);
7960
focusOnFirstError();
8061
}
8162

@@ -93,23 +74,20 @@ function FoiaRequestForm({
9374
}
9475

9576
function onFormSubmit({ formData: data }) {
96-
// Now you can use the recaptcha token for your form submission
97-
handleReCaptchaVerify();
98-
data.expedited_processing.captcha = token;
77+
const recaptchaValue = recaptchaRef.current.getValue();
78+
// Now you can use the recaptchaValue for your form submission
79+
80+
// TODO - probably not needed -- remove ?
81+
// The captcha field is added to the Expedited Processing section.
82+
data.expedited_processing.captcha = recaptchaValue;
9983

10084
// Merge the sections into a single payload
10185
const payload = rf.mergeSectionFormData(data);
10286
// Transform file fields to attachments
10387
findFileFields(requestForm)
10488
.filter((fileFieldName) => fileFieldName in payload)
10589
.forEach((fileFieldName) => {
106-
payload[fileFieldName] = dataUrlToAttachment(payload[fileFieldName])
107-
.catch((error) => {
108-
console.error('Error:', error);
109-
});
110-
})
111-
.catch((error) => {
112-
console.error('Error2:', error);
90+
payload[fileFieldName] = dataUrlToAttachment(payload[fileFieldName]);
11391
});
11492
// Submit the request
11593
return requestActions
@@ -182,28 +160,25 @@ function FoiaRequestForm({
182160
using the contact information provided to you on this site.
183161
</p>
184162
</div>
185-
{ /* eslint-disable-next-line no-nested-ternary */ }
186163
{upload.get('inProgress')
187164
? (
188165
<UploadProgress
189166
progressTotal={upload.get('progressTotal')}
190167
progressLoaded={upload.get('progressLoaded')}
191168
/>
192169
)
193-
: settingsdata && settingsdata.RECAPTCHA_SITE_KEY
194-
? (
195-
<GoogleReCaptchaProvider reCaptchaKey={settingsdata.RECAPTCHA_SITE_KEY}>
196-
<GoogleReCaptcha
197-
className="google-recaptcha-custom-class"
198-
onVerify={setTokenFunc}
199-
refreshReCaptcha={refreshReCaptcha}
200-
/>
201-
<div style={{ marginTop: '2em' }} />
202-
<button className="usa-button usa-button-big usa-button-primary-alt" type="submit">
203-
Submit request
204-
</button>
205-
</GoogleReCaptchaProvider>
206-
) : (<p>Invalid key</p>)}
170+
: (
171+
<div style={{ marginTop: '2em' }}>
172+
{settingsdata && settingsdata.RECAPTCHA_SITE_KEY
173+
? <ReCAPTCHA ref={recaptchaRef} sitekey={settingsdata.RECAPTCHA_SITE_KEY} /> : <p>Inavlid Site Key</p>}
174+
<button
175+
className="usa-button usa-button-big usa-button-primary-alt"
176+
type="submit"
177+
>
178+
Submit request
179+
</button>
180+
</div>
181+
)}
207182
{submissionResult.errorMessage
208183
&& (
209184
<p>

package-lock.json

+36-13
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"prop-types": "15.x",
5252
"react": "17.x",
5353
"react-dom": "17.x",
54-
"react-google-recaptcha-v3": "^1.10.1",
54+
"react-google-recaptcha": "^3.1.0",
5555
"react-modal": "3.x",
5656
"react-router-dom": "5.x",
5757
"swagger-ui": "^3.52.5",

0 commit comments

Comments
 (0)