From 372e44bed9b993055e119d4312cb38baf970cb9a Mon Sep 17 00:00:00 2001 From: Davide Bizzi Date: Mon, 8 Sep 2025 17:25:38 +0200 Subject: [PATCH] feat(CampaignForm): add AutoApply field to campaign form and update related interfaces --- .../components/campaignForm/FormProvider.tsx | 3 ++ .../campaignForm/fields/AutoApply.tsx | 34 +++++++++++++++++++ .../components/campaignForm/index.tsx | 2 ++ src/services/tryberApi/index.ts | 4 +++ 4 files changed, 43 insertions(+) create mode 100644 src/pages/campaigns/components/campaignForm/fields/AutoApply.tsx diff --git a/src/pages/campaigns/components/campaignForm/FormProvider.tsx b/src/pages/campaigns/components/campaignForm/FormProvider.tsx index 590ddf6c..7e000d8d 100644 --- a/src/pages/campaigns/components/campaignForm/FormProvider.tsx +++ b/src/pages/campaigns/components/campaignForm/FormProvider.tsx @@ -65,6 +65,7 @@ export interface NewCampaignValues { notes?: string; cuf?: { id: string; value: string[] }[]; provinces?: string[]; + autoApply?: boolean; } const useGetInitialCufCriteria = ({ @@ -187,6 +188,7 @@ const FormProvider = ({ })) || [], cuf: initialCufCriteria, provinces: dossier?.visibilityCriteria?.province || [], + autoApply: dossier?.autoApply === 1, }; const validationSchema = yup.object({ @@ -354,6 +356,7 @@ const FormProvider = ({ ? parseInt(values.productType, 10) : undefined, notes: values.notes, + autoApply: values.autoApply, visibilityCriteria: { gender: values.genderRequirements?.options || [], cuf: values.cuf diff --git a/src/pages/campaigns/components/campaignForm/fields/AutoApply.tsx b/src/pages/campaigns/components/campaignForm/fields/AutoApply.tsx new file mode 100644 index 00000000..71a0154e --- /dev/null +++ b/src/pages/campaigns/components/campaignForm/fields/AutoApply.tsx @@ -0,0 +1,34 @@ +import { + Checkbox, + FieldProps, + FormikField, + FormLabel, +} from "@appquality/appquality-design-system"; +import { useFormikContext } from "formik"; +import { NewCampaignValues } from "../FormProvider"; + +const AutoApply = () => { + const { setFieldValue } = useFormikContext(); + + return ( +
+ + + + {({ field }: FieldProps) => ( + { + setFieldValue("autoApply", e.target.checked); + }} + /> + )} + +
+ ); +}; + +export default AutoApply; diff --git a/src/pages/campaigns/components/campaignForm/index.tsx b/src/pages/campaigns/components/campaignForm/index.tsx index e63f6906..cd91339e 100644 --- a/src/pages/campaigns/components/campaignForm/index.tsx +++ b/src/pages/campaigns/components/campaignForm/index.tsx @@ -21,6 +21,7 @@ import { PhaseSelector } from "../PhaseSelector"; import { CampaignFormContext } from "./campaignFormContext"; import FormOverlay from "./feedbackMessages/FormOverlay"; import AgeRequirements from "./fields/AgeRequirements"; +import AutoApply from "./fields/AutoApply"; import BrowsersMultiselect from "./fields/BrowsersMultiselect"; import CountrySelect from "./fields/CountrySelect"; import CufCriteria from "./fields/CufCriteria"; @@ -129,6 +130,7 @@ const CampaignFormContent = ({ dossier, isEdit, duplicate }: FormProps) => { required /> + Give some context to your co-workers diff --git a/src/services/tryberApi/index.ts b/src/services/tryberApi/index.ts index 3334d5ac..c387c260 100644 --- a/src/services/tryberApi/index.ts +++ b/src/services/tryberApi/index.ts @@ -1367,6 +1367,8 @@ export type GetCampaignsByCampaignBugsAndBugIdApiResponse = id: number; media: { id: number; + type: string; + url: string; }[]; note: string; reason: string; @@ -1877,6 +1879,7 @@ export type PostDossiersApiArg = { }; }; export type GetDossiersByCampaignApiResponse = /** status 200 OK */ { + autoApply: number; browsers?: { id: number; name: string; @@ -3122,6 +3125,7 @@ export type DossierCreationData = { additionals?: ({ showInStats?: boolean; } & CampaignAdditionalField)[]; + autoApply?: boolean; browsers?: number[]; bugTypes?: number[]; closeDate?: string;