-
Notifications
You must be signed in to change notification settings - Fork 126
/
FryDeaApp.jsx
98 lines (86 loc) · 2.33 KB
/
FryDeaApp.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import FEATURE_FLAG_NAMES from 'platform/utilities/feature-toggles/featureFlagNames';
import RoutedSavableApp from 'platform/forms/save-in-progress/RoutedSavableApp';
import { setData } from 'platform/forms-system/src/js/actions';
import { toggleValues } from 'platform/site-wide/feature-toggles/selectors';
import formConfig from '../config/form';
import { fetchVeterans } from '../actions';
import { VETERANS_TYPE } from '../constants';
function FryDeaApp({
children,
formData,
getVeterans,
location,
setFormData,
showUpdatedFryDeaApp,
user,
veterans,
}) {
const [fetchedVeterans, setFetchedVeterans] = useState(false);
useEffect(() => {
if (!user.login.currentlyLoggedIn) {
return;
}
if (!fetchedVeterans) {
setFetchedVeterans(true);
getVeterans();
}
if (
formData.showUpdatedFryDeaApp !== showUpdatedFryDeaApp ||
formData.veterans !== veterans
) {
setFormData({
...formData,
showUpdatedFryDeaApp,
veterans,
});
}
}, [
fetchedVeterans,
formData,
getVeterans,
location.pathname,
setFormData,
showUpdatedFryDeaApp,
user.login.currentlyLoggedIn,
veterans,
]);
return (
<>
<va-breadcrumbs uswds="false">
<a href="/">Home</a>
<a href="/education">Education and training</a>
<a href="/fry-dea">
Apply for education benefits as an eligible dependent
</a>
</va-breadcrumbs>
<RoutedSavableApp formConfig={formConfig} currentLocation={location}>
{children}
</RoutedSavableApp>
</>
);
}
FryDeaApp.propTypes = {
children: PropTypes.object,
formData: PropTypes.object,
getVeterans: PropTypes.func,
location: PropTypes.object,
setFormData: PropTypes.func,
showUpdatedFryDeaApp: PropTypes.bool,
veterans: VETERANS_TYPE,
};
const mapStateToProps = state => ({
formData: state.form?.data || {},
showUpdatedFryDeaApp: toggleValues(state)[
FEATURE_FLAG_NAMES.showUpdatedFryDeaApp
],
user: state?.user,
veterans: state.data?.veterans,
});
const mapDispatchToProps = {
setFormData: setData,
getVeterans: fetchVeterans,
};
export default connect(mapStateToProps, mapDispatchToProps)(FryDeaApp);