Skip to content

Commit 85e76bf

Browse files
Fe fix phone number validation (canada-ca#1847)
* Add regex validation of number * Add better feedback, remove unused typeError message * Update to Regex to match feedback from server * Add translation * Run lingui compile * Fix i18n for phone number validation
1 parent 03f1848 commit 85e76bf

6 files changed

Lines changed: 1684 additions & 656 deletions

File tree

frontend/src/EditableUserPhoneNumber.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@ import {
1919
import WithPseudoBox from './withPseudoBox'
2020
import { Formik } from 'formik'
2121
import { t, Trans } from '@lingui/macro'
22+
import { i18n } from '@lingui/core'
2223
import { UPDATE_USER_PROFILE } from './graphql/mutations'
2324
import { useMutation } from '@apollo/client'
2425
import { useUserState } from './UserState'
25-
import { number, object } from 'yup'
26+
import { object, string as yupString } from 'yup'
2627
import { fieldRequirements } from './fieldRequirements'
2728
import { TrackerButton } from './TrackerButton'
2829
import PhoneNumberField from './PhoneNumberField'
@@ -91,10 +92,15 @@ function EditableUserPhoneNumber({ detailValue }) {
9192
},
9293
)
9394

95+
const PHONE_NUMBER_REGEX = /^\+[1-9]\d{10,15}$/
96+
9497
const validationSchema = object().shape({
95-
phoneNumber: number()
96-
.required(fieldRequirements.phoneNumber.required.message)
97-
.typeError(fieldRequirements.phoneNumber.typeError.message),
98+
phoneNumber: yupString()
99+
.required(i18n._(fieldRequirements.phoneNumber.required.message))
100+
.matches(
101+
PHONE_NUMBER_REGEX,
102+
i18n._(fieldRequirements.phoneNumber.matches.message),
103+
),
98104
})
99105

100106
return (

frontend/src/fieldRequirements.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ export const fieldRequirements = {
3030
required: { message: t`Domain url field must not be empty` },
3131
},
3232
phoneNumber: {
33-
typeError: { message: t`Phone number must only contains numbers` },
33+
matches: {
34+
message: t`Phone number must be a valid phone number of the form +17895551234 (10-15 digits)`,
35+
},
3436
required: { message: t`Phone number field must not be empty` },
3537
},
3638
}

0 commit comments

Comments
 (0)