Skip to content

Commit 20fa49a

Browse files
authored
Merge pull request #262 from AppQuality/UN-48-express-validation-issues
UN-48-express-validation-issues
2 parents 94deca5 + 55bcf92 commit 20fa49a

File tree

11 files changed

+89
-21
lines changed

11 files changed

+89
-21
lines changed

src/locales/en/translation.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,9 @@
126126
"__EXPRESS_3_WIZARD_STEP_WHO_FIELD_LITERACY_ALL_HINT": "Testers equally divided by literacy level",
127127
"__EXPRESS_3_WIZARD_STEP_WHO_FIELD_LITERACY_LABEL": "Digital literacy level",
128128
"__EXPRESS_3_WIZARD_STEP_WHO_GENDER_FEMALE": "Female",
129+
"__EXPRESS_3_WIZARD_STEP_WHO_GENDER_FEMALE_PLURAL": "women",
129130
"__EXPRESS_3_WIZARD_STEP_WHO_GENDER_MALE": "Male",
131+
"__EXPRESS_3_WIZARD_STEP_WHO_GENDER_MALE_PLURAL": "men",
130132
"__EXPRESS_3_WIZARD_STEP_WHO_LABEL_SELECTION_CRITERIA": "Specify selection criteria for the 6 users who will browse your product",
131133
"__EXPRESS_3_WIZARD_STEP_WHO_LITERACY_BEGINNER": "Beginner",
132134
"__EXPRESS_3_WIZARD_STEP_WHO_LITERACY_BEGINNER_DESCRIPTION": "This tester has no autonomy, needs help from family and friens",
@@ -254,6 +256,7 @@
254256
"__EXPRESS_WIZARD_STEP_WHERE_DEFAULT_BROWSER_DESCRIPTION": "We guarantee you the right balance between the devices type and browsers based on market share and usage",
255257
"__EXPRESS_WIZARD_STEP_WHERE_DEFAULT_BROWSER_TITLE": "Which browser will be used? we'll take care of it",
256258
"__EXPRESS_WIZARD_STEP_WHERE_DESCRIPTION": "Where is the campaign going to be executed?",
259+
"__EXPRESS_WIZARD_STEP_WHERE_DEVICE_OPERATING_SYSTEM_ERROR": "You have to select one operating system",
257260
"__EXPRESS_WIZARD_STEP_WHERE_DEVICE_TYPE_DESKTOP": "Desktop",
258261
"__EXPRESS_WIZARD_STEP_WHERE_DEVICE_TYPE_ERROR": "You have to select at least one device type",
259262
"__EXPRESS_WIZARD_STEP_WHERE_DEVICE_TYPE_SMARTPHONE": "Smartphone",

src/locales/it/translation.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@
105105
"__EXPRESS_3_WIZARD_STEP_HOW_USE_CASE_MODAL_TITLE_FIELD_TITLE": "Titolo user task",
106106
"__EXPRESS_3_WIZARD_STEP_HOW_USE_CASE_MODAL_TITLE_REQUIRED": "Campo obbligatorio",
107107
"__EXPRESS_3_WIZARD_STEP_HOW_USE_CASE_MODAL_USE_CASE_LABEL": "User Task",
108-
"__EXPRESS_3_WIZARD_STEP_RECAP_WHO_AGE_RANGE_TEXT": "Hanno unetà compresa fra i <1><0>{{age_range_start}}</0> e i <2>{{age_range_end}}</2></1> anni.",
108+
"__EXPRESS_3_WIZARD_STEP_RECAP_WHO_AGE_RANGE_TEXT": "Hanno un'età compresa fra i <1><0>{{age_range_start}}</0> e i <2>{{age_range_end}}</2></1> anni.",
109109
"__EXPRESS_3_WIZARD_STEP_RECAP_WHO_AGE_RANGE_TEXT_ALL": "Sono <1>equamente distribuiti</1> per <3>età</3>.",
110110
"__EXPRESS_3_WIZARD_STEP_RECAP_WHO_DIGITALIZATION_TEXT_ALL": "Sono <1>equamente distribuiti</1> per <4>alfabetizzazione digitale</4>.",
111111
"__EXPRESS_3_WIZARD_STEP_RECAP_WHO_DIGITALIZATION_TEXT_BEGINNER": "Hanno un <1>livello basso</1> di <4>alfabetizzazione digitale</4>.",
@@ -126,7 +126,9 @@
126126
"__EXPRESS_3_WIZARD_STEP_WHO_FIELD_LITERACY_ALL_HINT": "Gruppo eterogeneo per alfabetizzazione digitale",
127127
"__EXPRESS_3_WIZARD_STEP_WHO_FIELD_LITERACY_LABEL": "Livello di alfabetizzazione digitale",
128128
"__EXPRESS_3_WIZARD_STEP_WHO_GENDER_FEMALE": "Donna",
129+
"__EXPRESS_3_WIZARD_STEP_WHO_GENDER_FEMALE_PLURAL": "donne",
129130
"__EXPRESS_3_WIZARD_STEP_WHO_GENDER_MALE": "Uomo",
131+
"__EXPRESS_3_WIZARD_STEP_WHO_GENDER_MALE_PLURAL": "uomini",
130132
"__EXPRESS_3_WIZARD_STEP_WHO_LABEL_SELECTION_CRITERIA": "Specifica i criteri di selezione per i 6 utenti che esplorano il tuo prodotto.",
131133
"__EXPRESS_3_WIZARD_STEP_WHO_LITERACY_BEGINNER": "Principiante",
132134
"__EXPRESS_3_WIZARD_STEP_WHO_LITERACY_BEGINNER_DESCRIPTION": "Non ha autonomia, si fa aiutare da parenti e amici",
@@ -254,6 +256,7 @@
254256
"__EXPRESS_WIZARD_STEP_WHERE_DEFAULT_BROWSER_DESCRIPTION": "Ti garantiamo il giusto equilibrio tra le tipologie di dispositivi e browser in base alle statistiche di mercato e alla nostra esperienza.",
255257
"__EXPRESS_WIZARD_STEP_WHERE_DEFAULT_BROWSER_TITLE": "Scelta dei browser? Ci pensiamo noi.",
256258
"__EXPRESS_WIZARD_STEP_WHERE_DESCRIPTION": "I dispositivi del test",
259+
"__EXPRESS_WIZARD_STEP_WHERE_DEVICE_OPERATING_SYSTEM_ERROR": "Seleziona un sistema operativo",
257260
"__EXPRESS_WIZARD_STEP_WHERE_DEVICE_TYPE_DESKTOP": "Desktop",
258261
"__EXPRESS_WIZARD_STEP_WHERE_DEVICE_TYPE_ERROR": "Seleziona almeno un dispositivo",
259262
"__EXPRESS_WIZARD_STEP_WHERE_DEVICE_TYPE_SMARTPHONE": "Smartphone",

src/pages/ExpressWizard/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ export const ExpressWizardContainer = () => {
315315
};
316316

317317
// eslint-disable-next-line consistent-return
318-
const wordpressHandle = async (cp: Campaign, next: any) => {
318+
const wordpressHandle = async (cp: Campaign) => {
319319
try {
320320
// Post on webhook WordPress axios call
321321
if (!values.use_cases) {
@@ -325,9 +325,9 @@ export const ExpressWizardContainer = () => {
325325
await createPages(cp.id);
326326
await createCrons(cp.id);
327327
await createTasks(cp.id);
328-
next(null, cp);
328+
return [cp];
329329
} catch (error) {
330-
next(null, cp); // Skip error handling
330+
return null; // Skip error handling
331331
}
332332
};
333333

src/pages/ExpressWizard/steps/express-1/whereApp.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,16 @@ export const WhereAppStep = (props: FormikProps<WizardModel>) => {
228228
)}
229229
</Fieldset>
230230
</WizardCol>
231+
<WizardCol xs={12}>
232+
{(errors.isIOS || errors.isAndroid) && (
233+
<Message
234+
validation="error"
235+
style={{ marginTop: globalTheme.space.sm }}
236+
>
237+
{t('__EXPRESS_WIZARD_STEP_WHERE_DEVICE_OPERATING_SYSTEM_ERROR')}
238+
</Message>
239+
)}
240+
</WizardCol>
231241
</StyledRow>
232242
</ContainerCard>
233243
);

src/pages/ExpressWizard/steps/express-1/whereWeb.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,16 @@ export const WhereWebStep = (props: FormikProps<WizardModel>) => {
290290
export const WhereStepValidationSchema = Yup.object().shape(
291291
{
292292
// Where APP STEP
293-
isIOS: Yup.bool(),
294-
isAndroid: Yup.bool(),
293+
isIOS: Yup.bool().when(['isAndroid', 'product_type'], {
294+
is: (isAndroid: boolean, product_type: string) =>
295+
!isAndroid && product_type === 'mobileapp',
296+
then: Yup.bool().oneOf([true], 'Operating system is required'),
297+
}),
298+
isAndroid: Yup.bool().when(['isIOS', 'product_type'], {
299+
is: (isIOS: boolean, product_type: string) =>
300+
!isIOS && product_type === 'mobileapp',
301+
then: Yup.bool().oneOf([true], 'Operating system is required'),
302+
}),
295303
iOSLink: Yup.string().url().when('isIOS', {
296304
is: true,
297305
then: Yup.string().url().required(),
@@ -331,5 +339,8 @@ export const WhereStepValidationSchema = Yup.object().shape(
331339
['withTablet', 'withDesktop'],
332340
['withSmartphone', 'withDesktop'],
333341
['withSmartphone', 'withTablet'],
342+
['isIOS', 'product_type'],
343+
['isAndroid', 'product_type'],
344+
['isIOS', 'isAndroid'],
334345
]
335346
);

src/pages/ExpressWizard/steps/express-2/whereApp.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,16 @@ export const WhereAppStep = (props: FormikProps<WizardModel>) => {
228228
)}
229229
</Fieldset>
230230
</WizardCol>
231+
<WizardCol xs={12}>
232+
{(errors.isIOS || errors.isAndroid) && (
233+
<Message
234+
validation="error"
235+
style={{ marginTop: globalTheme.space.sm }}
236+
>
237+
{t('__EXPRESS_WIZARD_STEP_WHERE_DEVICE_OPERATING_SYSTEM_ERROR')}
238+
</Message>
239+
)}
240+
</WizardCol>
231241
</StyledRow>
232242
</ContainerCard>
233243
);

src/pages/ExpressWizard/steps/express-2/whereWeb.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,16 @@ export const WhereWebStep = (props: FormikProps<WizardModel>) => {
290290
export const WhereStepValidationSchema = Yup.object().shape(
291291
{
292292
// Where APP STEP
293-
isIOS: Yup.bool(),
294-
isAndroid: Yup.bool(),
293+
isIOS: Yup.bool().when(['isAndroid', 'product_type'], {
294+
is: (isAndroid: boolean, product_type: string) =>
295+
!isAndroid && product_type === 'mobileapp',
296+
then: Yup.bool().oneOf([true], 'Operating system is required'),
297+
}),
298+
isAndroid: Yup.bool().when(['isIOS', 'product_type'], {
299+
is: (isIOS: boolean, product_type: string) =>
300+
!isIOS && product_type === 'mobileapp',
301+
then: Yup.bool().oneOf([true], 'Operating system is required'),
302+
}),
295303
iOSLink: Yup.string().url().when('isIOS', {
296304
is: true,
297305
then: Yup.string().url().required(),
@@ -331,5 +339,8 @@ export const WhereStepValidationSchema = Yup.object().shape(
331339
['withTablet', 'withDesktop'],
332340
['withSmartphone', 'withDesktop'],
333341
['withSmartphone', 'withTablet'],
342+
['isIOS', 'product_type'],
343+
['isAndroid', 'product_type'],
344+
['isIOS', 'isAndroid'],
334345
]
335346
);

src/pages/ExpressWizard/steps/express-3/confirm/ageRange.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ export const AgeRange = (props: FormikProps<WizardModel>) => {
1919

2020
return range.length ? (
2121
<Trans i18nKey="__EXPRESS_3_WIZARD_STEP_RECAP_WHO_AGE_RANGE_TEXT">
22-
Are aged between{' '}
22+
Are aged between
2323
<Span isBold>
2424
{{ age_range_start: range[0] }} and {{ age_range_end: range[1] }}
25-
</Span>{' '}
25+
</Span>
2626
years.
2727
</Trans>
2828
) : null;

src/pages/ExpressWizard/steps/express-3/confirm/gender.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { Span } from '@appquality/unguess-design-system';
22
import { FormikProps } from 'formik';
3-
import { Trans } from 'react-i18next';
3+
import { Trans, useTranslation } from 'react-i18next';
44
import { WizardModel } from 'src/pages/ExpressWizard/wizardModel';
55

66
export const Gender = (props: FormikProps<WizardModel>) => {
7+
const { t } = useTranslation();
78
const { values } = props;
89
const { gender } = values;
910

@@ -15,9 +16,14 @@ export const Gender = (props: FormikProps<WizardModel>) => {
1516
</Trans>
1617
);
1718

19+
const translatedGender =
20+
gender === 'male'
21+
? t('__EXPRESS_3_WIZARD_STEP_WHO_GENDER_MALE_PLURAL')
22+
: t('__EXPRESS_3_WIZARD_STEP_WHO_GENDER_FEMALE_PLURAL');
23+
1824
return (
1925
<Trans i18nKey="__EXPRESS_3_WIZARD_STEP_RECAP_WHO_GENDER_TEXT">
20-
Are <Span isBold>{{ gender }}</Span>.
26+
Are <Span isBold>{{ gender: translatedGender }}</Span>.
2127
</Trans>
2228
);
2329
};

src/pages/ExpressWizard/steps/express-3/whereApp.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,16 @@ export const WhereAppStep = (props: FormikProps<WizardModel>) => {
228228
)}
229229
</Fieldset>
230230
</WizardCol>
231+
<WizardCol xs={12}>
232+
{(errors.isIOS || errors.isAndroid) && (
233+
<Message
234+
validation="error"
235+
style={{ marginTop: globalTheme.space.sm }}
236+
>
237+
{t('__EXPRESS_WIZARD_STEP_WHERE_DEVICE_OPERATING_SYSTEM_ERROR')}
238+
</Message>
239+
)}
240+
</WizardCol>
231241
</StyledRow>
232242
</ContainerCard>
233243
);

0 commit comments

Comments
 (0)