- merge master -> develop;

This commit is contained in:
Vitalii Kiiko
2024-12-03 11:52:04 +01:00
10 changed files with 116 additions and 32 deletions

1
.env
View File

@@ -5,3 +5,4 @@ REACT_APP_LOGO_FILENAME=gepafin-logo.svg
REACT_APP_FAVICON_FILENAME=gepafin-favicon.ico REACT_APP_FAVICON_FILENAME=gepafin-favicon.ico
REACT_APP_HUB_ID=p4lk3bcx1RStqTaIVVbXs REACT_APP_HUB_ID=p4lk3bcx1RStqTaIVVbXs
REACT_APP_EVALUATION_FLOW_ID=1 REACT_APP_EVALUATION_FLOW_ID=1
REACT_APP_LOCAL_DEVELOPMENT=1

View File

@@ -8,8 +8,8 @@
"@date-fns/tz": "1.1.2", "@date-fns/tz": "1.1.2",
"@emailjs/browser": "^4.4.1", "@emailjs/browser": "^4.4.1",
"@emotion/styled": "11.13.0", "@emotion/styled": "11.13.0",
"@number-flow/react": "0.2.0", "@number-flow/react": "0.4.2",
"@sentry/browser": "^8.41.0", "@sentry/browser": "^8.42.0",
"@tanstack/react-table": "^8.20.5", "@tanstack/react-table": "^8.20.5",
"@wordpress/i18n": "5.8.0", "@wordpress/i18n": "5.8.0",
"@wordpress/react-i18n": "4.8.0", "@wordpress/react-i18n": "4.8.0",

View File

@@ -0,0 +1,41 @@
import React, { Component } from 'react';
import * as Sentry from '@sentry/browser';
const LOCAL_DEVELOPMENT = process.env.REACT_APP_LOCAL_DEVELOPMENT;
class ErrorBoundary extends Component {
constructor(props) {
super(props);
this.state = {
builderError: false
};
}
static getDerivedStateFromError(error) {
try {
if (LOCAL_DEVELOPMENT !== '1') {
Sentry.init({
dsn: "https://e7b2134f7d816f663bb83e51b106a694@o4508381921738752.ingest.de.sentry.io/4508381935501392",
environment: process.env.NODE_ENV || "development"
});
Sentry.captureException(error);
}
} catch (err) {
console.log('err')
console.log(err);
}
return { builderError: true };
}
render() {
if (this.state.builderError) {
return <div>Error</div>;
}
return this.props.children;
}
}
export default ErrorBoundary;

View File

@@ -3,6 +3,7 @@ import { Navigate, Outlet } from 'react-router-dom';
// tools // tools
import AuthenticationService from '../../service/authentication-service'; import AuthenticationService from '../../service/authentication-service';
import ErrorBoundary from '../ErrorBoundary';
const ProtectedRoute = () => { const ProtectedRoute = () => {
@@ -22,7 +23,7 @@ const ProtectedRoute = () => {
return (<Navigate to={'/'} replace/>); return (<Navigate to={'/'} replace/>);
}*/ }*/
return <Outlet/>; return <ErrorBoundary><Outlet/></ErrorBoundary>;
} }
export default ProtectedRoute; export default ProtectedRoute;

View File

@@ -4,7 +4,6 @@
* @return {string} * @return {string}
*/ */
const formatDateString = (date) => { const formatDateString = (date) => {
console.log('date', date);
const year = date.getFullYear(); const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0');

View File

@@ -22,6 +22,8 @@ import CompanyService from '../../service/company-service';
import { isPIVA, isEmail, isEmailPEC } from '../../helpers/validators'; import { isPIVA, isEmail, isEmailPEC } from '../../helpers/validators';
import set404FromErrorResponse from '../../helpers/set404FromErrorResponse'; import set404FromErrorResponse from '../../helpers/set404FromErrorResponse';
const APP_EVALUATION_FLOW_ID = process.env.REACT_APP_EVALUATION_FLOW_ID;
const AddCompany = () => { const AddCompany = () => {
const navigate = useNavigate(); const navigate = useNavigate();
const isAsyncRequest = useStore().main.isAsyncRequest(); const isAsyncRequest = useStore().main.isAsyncRequest();
@@ -33,12 +35,14 @@ const AddCompany = () => {
handleSubmit, handleSubmit,
formState: { errors }, formState: { errors },
setValue, setValue,
watch watch,
getValues
} = useForm({ } = useForm({
defaultValues: {}, defaultValues: {},
mode: 'onChange' mode: 'onChange'
}); });
const isPiva = watch('vatNumber'); const isPiva = watch('vatNumber');
//const isPiva = watch('vatNumber');
const setEmptyValues = () => { const setEmptyValues = () => {
const formData = { const formData = {
@@ -136,6 +140,11 @@ const AddCompany = () => {
storeSet.main.unsetAsyncRequest(); storeSet.main.unsetAsyncRequest();
} }
const shouldDisableFiscalCode = () => {
const formData = getValues();
return !formData.type || formData.type && formData.type === 'giuridica';
}
useEffect(() => { useEffect(() => {
setInputPiva(isPiva); setInputPiva(isPiva);
}, [isPiva]); }, [isPiva]);
@@ -143,7 +152,7 @@ const AddCompany = () => {
useEffect(() => { useEffect(() => {
checkVatNumber(debouncedPivaValue); checkVatNumber(debouncedPivaValue);
}, [debouncedPivaValue]) }, [debouncedPivaValue])
console.log('APP_EVALUATION_FLOW_ID', APP_EVALUATION_FLOW_ID)
return ( return (
<div className="appPage"> <div className="appPage">
<div className="appPage__pageHeader"> <div className="appPage__pageHeader">
@@ -174,6 +183,23 @@ const AddCompany = () => {
/> />
</div> </div>
{APP_EVALUATION_FLOW_ID === '2'
? <div className="appForm__cols">
<FormField
type="radio"
fieldName="type"
label={__('Type', 'gepafin')}
control={control}
errors={errors}
config={{ required: __('È obbligatorio', 'gepafin') }}
defaultValue="giuridica"
options={[
{ name: 'giuridica', label: 'Giuridica' },
{ name: 'fisica', label: 'Fisica' },
]}
/>
</div> : null}
<div className="appForm__cols"> <div className="appForm__cols">
<FormField <FormField
type="textinput" type="textinput"
@@ -184,15 +210,25 @@ const AddCompany = () => {
config={{ required: __('È obbligatorio', 'gepafin') }} config={{ required: __('È obbligatorio', 'gepafin') }}
/> />
<FormField {APP_EVALUATION_FLOW_ID === '1'
? <FormField
type="textinput" type="textinput"
disabled={true} disabled
fieldName="codiceFiscale" fieldName="codiceFiscale"
label={__('Codice fiscale', 'gepafin')} label={__('Codice fiscale', 'gepafin')}
control={control} control={control}
errors={errors} errors={errors}
config={{ required: __('È obbligatorio', 'gepafin') }} config={{ required: __('È obbligatorio', 'gepafin') }}
/> />
: <FormField
type="textinput"
disabled={shouldDisableFiscalCode()}
fieldName="codiceFiscale"
label={__('Codice fiscale', 'gepafin')}
control={control}
errors={errors}
config={{ required: __('È obbligatorio', 'gepafin') }}
/>}
</div> </div>
<div className="appForm__cols"> <div className="appForm__cols">

View File

@@ -5,6 +5,7 @@ import { useNavigate } from 'react-router-dom';
// components // components
import MyLatestSubmissionsTable from '../DashboardBeneficiario/components/MyLatestSubmissionsTable'; import MyLatestSubmissionsTable from '../DashboardBeneficiario/components/MyLatestSubmissionsTable';
import { Button } from 'primereact/button'; import { Button } from 'primereact/button';
import ErrorBoundary from '../../components/ErrorBoundary';
const Applications = () => { const Applications = () => {
const navigate = useNavigate(); const navigate = useNavigate();
@@ -22,7 +23,7 @@ const Applications = () => {
<div className="appPage__spacer"></div> <div className="appPage__spacer"></div>
<div className="appPageSection"> <div className="appPageSection">
<MyLatestSubmissionsTable/> <ErrorBoundary><MyLatestSubmissionsTable/></ErrorBoundary>
</div> </div>
<div className="appPage__spacer"></div> <div className="appPage__spacer"></div>

View File

@@ -8,6 +8,7 @@ import { useStore } from '../../store';
// components // components
import AllBandiAccordion from './components/AllBandiAccordion'; import AllBandiAccordion from './components/AllBandiAccordion';
import ErrorBoundary from '../../components/ErrorBoundary';
const BandiBeneficiario = () => { const BandiBeneficiario = () => {
const chosenCompanyId = useStore().main.chosenCompanyId(); const chosenCompanyId = useStore().main.chosenCompanyId();
@@ -34,7 +35,7 @@ const BandiBeneficiario = () => {
</> : null} </> : null}
<div className="appPageSection"> <div className="appPageSection">
<AllBandiAccordion/> <ErrorBoundary><AllBandiAccordion/></ErrorBoundary>
</div> </div>
</div> </div>
) )

View File

@@ -14,6 +14,7 @@ import DashboardService from '../../service/dashboard-service';
import LatestBandiTable from './components/LatestBandiTable'; import LatestBandiTable from './components/LatestBandiTable';
import MyLatestSubmissionsTable from './components/MyLatestSubmissionsTable'; import MyLatestSubmissionsTable from './components/MyLatestSubmissionsTable';
import { Button } from 'primereact/button'; import { Button } from 'primereact/button';
import ErrorBoundary from '../../components/ErrorBoundary';
const DashboardBeneficiario = () => { const DashboardBeneficiario = () => {
const navigate = useNavigate(); const navigate = useNavigate();
@@ -85,7 +86,7 @@ const DashboardBeneficiario = () => {
<div className="appPageSection"> <div className="appPageSection">
<h2>{__('Domande in lavorazione', 'gepafin')}</h2> <h2>{__('Domande in lavorazione', 'gepafin')}</h2>
<MyLatestSubmissionsTable/> <ErrorBoundary><MyLatestSubmissionsTable/></ErrorBoundary>
</div> </div>
<div className="appPage__spacer"></div> <div className="appPage__spacer"></div>
@@ -105,7 +106,7 @@ const DashboardBeneficiario = () => {
<div className="appPageSection"> <div className="appPageSection">
<h2>{__('Bandi disponibili', 'gepafin')}</h2> <h2>{__('Bandi disponibili', 'gepafin')}</h2>
<LatestBandiTable/> <ErrorBoundary><LatestBandiTable/></ErrorBoundary>
</div> </div>
<div className="appPage__spacer"></div> <div className="appPage__spacer"></div>

View File

@@ -1,6 +1,7 @@
import { storeGet } from '../store'; import { storeGet } from '../store';
import * as Sentry from "@sentry/browser"; import * as Sentry from "@sentry/browser";
const LOCAL_DEVELOPMENT = process.env.REACT_APP_LOCAL_DEVELOPMENT;
export class NetworkService { export class NetworkService {
static TOKEN_KEY static TOKEN_KEY
@@ -9,6 +10,7 @@ export class NetworkService {
static logApiError = (endpoint, status = 0, resp) => { static logApiError = (endpoint, status = 0, resp) => {
try { try {
if ([500].includes(status)) { if ([500].includes(status)) {
if (LOCAL_DEVELOPMENT !== '1') {
Sentry.init({ Sentry.init({
dsn: "https://e7b2134f7d816f663bb83e51b106a694@o4508381921738752.ingest.de.sentry.io/4508381935501392", dsn: "https://e7b2134f7d816f663bb83e51b106a694@o4508381921738752.ingest.de.sentry.io/4508381935501392",
environment: process.env.NODE_ENV || "development" environment: process.env.NODE_ENV || "development"
@@ -23,6 +25,7 @@ export class NetworkService {
} }
}); });
} }
}
} catch (err) { } catch (err) {
console.log(err); console.log(err);
} }