From 311a6ba5b90caedfe61b1dc4b6cf6a53dc635537 Mon Sep 17 00:00:00 2001 From: Tore Brede <Tore.Brede@uib.no> Date: Tue, 16 Nov 2021 15:06:40 +0100 Subject: [PATCH] Moving error text closer to where the error is --- frontend/public/locales/en/common.json | 4 ++- frontend/public/locales/nb/common.json | 4 ++- frontend/public/locales/nn/common.json | 4 ++- frontend/src/routes/guest/register/index.tsx | 20 ++------------- .../routes/guest/register/registerPage.tsx | 25 +++++++++++++++++++ 5 files changed, 36 insertions(+), 21 deletions(-) diff --git a/frontend/public/locales/en/common.json b/frontend/public/locales/en/common.json index 0df2f8ab..b9adc250 100644 --- a/frontend/public/locales/en/common.json +++ b/frontend/public/locales/en/common.json @@ -94,7 +94,9 @@ "passportNumberRequired": "Passport number required", "mobilePhoneRequired": "Mobile phone is required", "startDateMustBeSet": "Start date must be set", - "startDateMustBeBeforeEndDate": "Start date has to be before end date" + "startDateMustBeBeforeEndDate": "Start date has to be before end date", + "passportNationalityAndNumber": "Both passport nationality and number need to be set", + "nationalIdOrPassport": "National ID or passport information need to be entered" }, "button": { "back": "Back", diff --git a/frontend/public/locales/nb/common.json b/frontend/public/locales/nb/common.json index a4859e3d..f9172a82 100644 --- a/frontend/public/locales/nb/common.json +++ b/frontend/public/locales/nb/common.json @@ -93,7 +93,9 @@ "passportNumberRequired": "Passnummer er obligatorisk", "mobilePhoneRequired": "Mobilnummer er obligatorisk", "startDateMustBeSet": "Startdato må være satt", - "startDateMustBeBeforeEndDate": "Startdato må være før sluttdato" + "startDateMustBeBeforeEndDate": "Startdato må være før sluttdato", + "passportNationalityAndNumber": "Både passnasjonalitet og nummer må være satt", + "nationalIdOrPassport": "Fødselsnummer eller passinformasjon må oppgis" }, "button": { "back": "Tilbake", diff --git a/frontend/public/locales/nn/common.json b/frontend/public/locales/nn/common.json index 966a2aba..8f13f7c9 100644 --- a/frontend/public/locales/nn/common.json +++ b/frontend/public/locales/nn/common.json @@ -94,7 +94,9 @@ "passportNumberRequired": "Passnummer er obligatorisk", "mobilePhoneRequired": "Mobilnummer er obligatorisk", "startDateMustBeSet": "Startdato må vere satt", - "startDateMustBeBeforeEndDate": "Startdato må vere før sluttdato" + "startDateMustBeBeforeEndDate": "Startdato må vere før sluttdato", + "passportNationalityAndNumber": "Både passnasjonalitet og nummer må vere satt", + "nationalIdOrPassport": "Fødselsnummer eller passinformasjon må oppgjevast" }, "button": { "back": "Tilbake", diff --git a/frontend/src/routes/guest/register/index.tsx b/frontend/src/routes/guest/register/index.tsx index 9c360840..a1d6809a 100644 --- a/frontend/src/routes/guest/register/index.tsx +++ b/frontend/src/routes/guest/register/index.tsx @@ -65,8 +65,6 @@ export default function GuestRegister() { authentication_method: AuthenticationMethod.Invite, }) - const [errorState, setErrorState] = useState<string>('') - const guestContactInfo = async () => { try { const response = await fetch('/api/ui/v1/invited') @@ -152,24 +150,13 @@ export default function GuestRegister() { )}${updateFormData.mobilePhone}` if (guestFormData.authentication_method === AuthenticationMethod.Invite) { + // The authentication method is Invite, so the name does not come from a + // trusted third-party source, and the user can update it payload.person.first_name = updateFormData.firstName payload.person.last_name = updateFormData.lastName } if (updateFormData.passportNumber && updateFormData.passportNationality) { - // The user has entered some passport information, check that both nationality and number are present - if ( - (updateFormData.passportNumber && - !updateFormData.passportNationality) || - (!updateFormData.passportNumber && updateFormData.passportNationality) - ) { - // TODO Make better text and use translation - setErrorState( - 'Both passport nationality and passport number need to be set' - ) - return - } - setErrorState('') payload.person.passport = `${updateFormData.passportNationality}-${updateFormData.passportNumber}` } @@ -241,9 +228,6 @@ export default function GuestRegister() { </Box> {activeStep === Step.SubmitSuccessStep && <StepSubmitSuccessGuest />} - - {/* TODO Give better feedback to user */} - {errorState && <h2>{errorState}</h2>} </Page> ) } diff --git a/frontend/src/routes/guest/register/registerPage.tsx b/frontend/src/routes/guest/register/registerPage.tsx index 356e497c..fc99bda0 100644 --- a/frontend/src/routes/guest/register/registerPage.tsx +++ b/frontend/src/routes/guest/register/registerPage.tsx @@ -49,8 +49,30 @@ const GuestRegisterStep = forwardRef( CountryCallingCode | undefined >(undefined) const [mobilePhone, setMobilePhone] = useState<string>('') + const [idErrorState, setIdErrorState] = useState<string>('') const submit: SubmitHandler<EnteredGuestData> = (data) => { + if ( + !data.nationalIdNumber && + !data.passportNumber && + !data.passportNationality + ) { + // The user has not entered a national ID number nor passport information. + // In this case the user should not be allowed to send in the registration + setIdErrorState(t('validation.nationalIdOrPassport')) + return + } + + // The user has entered some passport information, check that both nationality and number are present + if ( + (data.passportNumber && !data.passportNationality) || + (!data.passportNumber && data.passportNationality) + ) { + setIdErrorState(t('validation.passportNationalityAndNumber')) + return + } + setIdErrorState('') + nextHandler(data) } @@ -361,6 +383,9 @@ const GuestRegisterStep = forwardRef( </MenuItem> ))} </Select> + {idErrorState && ( + <Typography color="error">{idErrorState}</Typography> + )} </> )} -- GitLab