From ae30df4c89f422e5cf819c3d1d378c9b5d1d25a5 Mon Sep 17 00:00:00 2001 From: lbeneston-pass <62059034+lbeneston-pass@users.noreply.github.com> Date: Wed, 5 Feb 2025 19:56:20 +0100 Subject: [PATCH] =?UTF-8?q?(PC-34024)=20feat(tutorial):=20add=20FAQ=20bann?= =?UTF-8?q?er=20and=20link=20in=20ProfileTutorial=E2=80=A6=20(#7634)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * (PC-34024) feat(tutorial): add FAQ banner and link in ProfileTutorialAgeInformationCreditV3 * (PC-34024) feat(tutorial): add mock analytics * (PC-34024) feat(tutorial): update wording in ProfileTutorialAgeInformationCreditV3 * (PC-34024) feat(tutorial): update wording and link * (PC-34024) feat(tutorial): update snapshot --- .env.integration | 1 + .env.perf | 1 + .env.production | 1 + .env.staging | 1 + .env.testing | 1 + ...mationCreditV3.native.test.tsx.native-snap | 241 +++++++++++++++++- ...rialAgeInformationCreditV3.native.test.tsx | 14 +- .../ProfileTutorialAgeInformationCreditV3.tsx | 40 ++- ...utorialAgeInformationCreditV3.web.test.tsx | 1 + .../analytics/__mocks__/logEventAnalytics.ts | 13 +- src/libs/analytics/logEventAnalytics.ts | 2 + src/libs/environment/fixtures.ts | 19 +- src/libs/environment/schema.ts | 17 +- src/libs/firebase/analytics/events.ts | 1 + whiteListEnv.js | 3 +- 15 files changed, 309 insertions(+), 47 deletions(-) diff --git a/.env.integration b/.env.integration index 843134da1bb..1dccb693397 100644 --- a/.env.integration +++ b/.env.integration @@ -81,6 +81,7 @@ DMS_FOREIGN_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/demande-p DMS_FRENCH_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/demande-pass-culture-fr DOC_CGU_URL=https://docs.passculture.app/textes-normatifs/mentions-legales-et-conditions-generales-dutilisation-de-lapplication-pass-culture DOC_PERSONAL_DATA_URL=https://docs.passculture.app/textes-normatifs/charte-des-donnees-personnelles +FAQ_LINK_CREDIT_V3=https://aide.passculture.app/hc/fr/articles/18228972352924 FAQ_LINK_CREDIT=https://aide.passculture.app/hc/fr/articles/4411991904017--Jeune-15-17-ans-C-est-quoi-le-pass-Culture FAQ_LINK_DELETE_ACCOUNT=https://aide.passculture.app/hc/fr/articles/4411992014865--Jeunes-Comment-supprimer-mon-compte- FAQ_LINK_EDUCONNECT_URL=https://passculture.zendesk.com/hc/fr/articles/4411991896849--Jeune-15-17-ans-O%C3%B9-trouver-mes-identifiants-%C3%89duConnect diff --git a/.env.perf b/.env.perf index 3ed9176e707..4922a524b29 100644 --- a/.env.perf +++ b/.env.perf @@ -81,6 +81,7 @@ DMS_FOREIGN_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/test/147a DMS_FRENCH_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/test/e1c52a6e-1d17-474f-98bf-dcef82f1f4fb DOC_CGU_URL=https://docs.passculture.app/textes-normatifs/mentions-legales-et-conditions-generales-dutilisation-de-lapplication-pass-culture DOC_PERSONAL_DATA_URL=https://docs.passculture.app/textes-normatifs/charte-des-donnees-personnelles +FAQ_LINK_CREDIT_V3=https://aide.passculture.app/hc/fr/articles/18228972352924 FAQ_LINK_CREDIT=https://aide.passculture.app/hc/fr/articles/4411991904017--Jeune-15-17-ans-C-est-quoi-le-pass-Culture FAQ_LINK_DELETE_ACCOUNT=https://aide.passculture.app/hc/fr/articles/4411992014865--Jeunes-Comment-supprimer-mon-compte- FAQ_LINK_EDUCONNECT_URL=https://passculture.zendesk.com/hc/fr/articles/4411991896849--Jeune-15-17-ans-O%C3%B9-trouver-mes-identifiants-%C3%89duConnect diff --git a/.env.production b/.env.production index 6f2a58c870c..fcb5e444e25 100644 --- a/.env.production +++ b/.env.production @@ -81,6 +81,7 @@ DMS_FOREIGN_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/demande-p DMS_FRENCH_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/demande-pass-culture-fr DOC_CGU_URL=https://docs.passculture.app/textes-normatifs/mentions-legales-et-conditions-generales-dutilisation-de-lapplication-pass-culture DOC_PERSONAL_DATA_URL=https://docs.passculture.app/textes-normatifs/charte-des-donnees-personnelles +FAQ_LINK_CREDIT_V3=https://aide.passculture.app/hc/fr/articles/18228972352924 FAQ_LINK_CREDIT=https://aide.passculture.app/hc/fr/articles/4411991904017--Jeune-15-17-ans-C-est-quoi-le-pass-Culture FAQ_LINK_DELETE_ACCOUNT=https://aide.passculture.app/hc/fr/articles/4411992014865--Jeunes-Comment-supprimer-mon-compte- FAQ_LINK_EDUCONNECT_URL=https://passculture.zendesk.com/hc/fr/articles/4411991896849--Jeune-15-17-ans-O%C3%B9-trouver-mes-identifiants-%C3%89duConnect diff --git a/.env.staging b/.env.staging index 896f40f7722..17b320c79b7 100644 --- a/.env.staging +++ b/.env.staging @@ -81,6 +81,7 @@ DMS_FOREIGN_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/test/fd9d DMS_FRENCH_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/test/19687d61-6b50-4549-b159-3744227969d1 DOC_CGU_URL=https://docs.passculture.app/textes-normatifs/mentions-legales-et-conditions-generales-dutilisation-de-lapplication-pass-culture DOC_PERSONAL_DATA_URL=https://docs.passculture.app/textes-normatifs/charte-des-donnees-personnelles +FAQ_LINK_CREDIT_V3=https://aide.passculture.app/hc/fr/articles/18228972352924 FAQ_LINK_CREDIT=https://aide.passculture.app/hc/fr/articles/4411991904017--Jeune-15-17-ans-C-est-quoi-le-pass-Culture FAQ_LINK_DELETE_ACCOUNT=https://aide.passculture.app/hc/fr/articles/4411992014865--Jeunes-Comment-supprimer-mon-compte- FAQ_LINK_EDUCONNECT_URL=https://passculture.zendesk.com/hc/fr/articles/4411991896849--Jeune-15-17-ans-O%C3%B9-trouver-mes-identifiants-%C3%89duConnect diff --git a/.env.testing b/.env.testing index 2e6e6969325..bcc84165af1 100644 --- a/.env.testing +++ b/.env.testing @@ -81,6 +81,7 @@ DMS_FOREIGN_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/test/147a DMS_FRENCH_CITIZEN_URL=https://www.demarches-simplifiees.fr/commencer/test/e1c52a6e-1d17-474f-98bf-dcef82f1f4fb DOC_CGU_URL=https://docs.passculture.app/textes-normatifs/mentions-legales-et-conditions-generales-dutilisation-de-lapplication-pass-culture DOC_PERSONAL_DATA_URL=https://docs.passculture.app/textes-normatifs/charte-des-donnees-personnelles +FAQ_LINK_CREDIT_V3=https://aide.passculture.app/hc/fr/articles/18228972352924 FAQ_LINK_CREDIT=https://aide.passculture.app/hc/fr/articles/4411991904017--Jeune-15-17-ans-C-est-quoi-le-pass-Culture FAQ_LINK_DELETE_ACCOUNT=https://aide.passculture.app/hc/fr/articles/4411992014865--Jeunes-Comment-supprimer-mon-compte- FAQ_LINK_EDUCONNECT_URL=https://passculture.zendesk.com/hc/fr/articles/4411991896849--Jeune-15-17-ans-O%C3%B9-trouver-mes-identifiants-%C3%89duConnect diff --git a/__snapshots__/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.native.test.tsx.native-snap b/__snapshots__/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.native.test.tsx.native-snap index 005edfd8ca0..4d3d27864a3 100644 --- a/__snapshots__/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.native.test.tsx.native-snap +++ b/__snapshots__/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.native.test.tsx.native-snap @@ -431,6 +431,53 @@ exports[` should render correctly 1`] = ] } /> + + + + + undefined-SVG-Mock + + + + + Tu as jusqu’à la veille de tes 18 ans pour confirmer ton identité et activer ton crédit. + + @@ -843,7 +890,7 @@ exports[` should render correctly 1`] = ] } > - Tu as 1 an pour confirmer ton identité et activer ce crédit. + Tu as jusqu’à la veille de tes 19 ans pour confirmer ton identité et activer ton crédit. should render correctly 1`] = ] } > - Après activation, tu as jusqu’à la veille de tes 21 ans pour utiliser tout ton crédit. + Une fois activé, ton crédit expirera la veille de ton 21ème anniversaire. @@ -1034,16 +1081,6 @@ exports[` should render correctly 1`] = ] } /> - should render correctly 1`] = ] } > - Découvre tout ce que la culture a à offrir, avec ou sans crédit ! + Explore tout ce que la culture peut offrir, avec ou sans crédit ! should render correctly 1`] = + + + + + Des questions sur ton crédit ? +Les récents ajustements du dispositif peuvent en être la raison. + + + + + + + + button-icon-left-SVG-Mock + + + + + + Plus d’infos dans notre FAQ + + + + + ', () => { beforeEach(() => { setFeatureFlags([RemoteStoreFeatureFlags.ENABLE_PACIFIC_FRANC_CURRENCY]) @@ -18,4 +21,13 @@ describe('', () => { expect(screen).toMatchSnapshot() }) + + it("should log to analytics when pressing 'Plus d’infos dans notre FAQ'", async () => { + render() + + const link = screen.getByText('Plus d’infos dans notre FAQ') + await userEvent.press(link) + + expect(analytics.logHasClickedFAQCreditV3).toHaveBeenCalledWith({ from: 'Tutorial' }) + }) }) diff --git a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.tsx b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.tsx index d36bee7b65f..cbf68b35e16 100644 --- a/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.tsx +++ b/src/features/tutorial/pages/profileTutorial/ProfileTutorialAgeInformationCreditV3.tsx @@ -8,14 +8,21 @@ import { CreditTimelineV3 } from 'features/tutorial/components/CreditTimelineV3' import { BlockDescriptionItem } from 'features/tutorial/components/profileTutorial/BlockDescriptionItem' import { InformationStepContent } from 'features/tutorial/components/profileTutorial/InformationStepContent' import { TutorialTypes } from 'features/tutorial/enums' +import { analytics } from 'libs/analytics/provider' +import { env } from 'libs/environment/env' import { useOpacityTransition } from 'ui/animations/helpers/useOpacityTransition' import { AccessibleUnorderedList } from 'ui/components/accessibility/AccessibleUnorderedList' +import { InfoBanner } from 'ui/components/banners/InfoBanner' +import { ButtonQuaternarySecondary } from 'ui/components/buttons/ButtonQuaternarySecondary' import { ContentHeader } from 'ui/components/headers/ContentHeader' import { useGetHeaderHeight } from 'ui/components/headers/PageHeaderWithoutPlaceholder' +import { ExternalTouchableLink } from 'ui/components/touchableLink/ExternalTouchableLink' import { BicolorClock } from 'ui/svg/icons/BicolorClock' import { BicolorLock } from 'ui/svg/icons/BicolorLock' +import { ExternalSiteFilled } from 'ui/svg/icons/ExternalSiteFilled' import { Offers } from 'ui/svg/icons/Offers' import { Spacer, TypoDS, getSpacing } from 'ui/theme' +import { LINE_BREAK } from 'ui/theme/constants' import { getHeadingAttrs } from 'ui/theme/typographyAttrs/getHeadingAttrs' export const ProfileTutorialAgeInformationCreditV3: FunctionComponent = () => { @@ -47,6 +54,10 @@ export const ProfileTutorialAgeInformationCreditV3: FunctionComponent = () => { + } + text="Tu as jusqu’à la veille de tes 18 ans pour confirmer ton identité et activer ton crédit." + /> ), }, @@ -62,12 +73,12 @@ export const ProfileTutorialAgeInformationCreditV3: FunctionComponent = () => { } - text="Tu as 1 an pour confirmer ton identité et activer ce crédit." + text="Tu as jusqu’à la veille de tes 19 ans pour confirmer ton identité et activer ton crédit." />, } - text="Après activation, tu as jusqu’à la veille de tes 21 ans pour utiliser tout ton crédit." + text="Une fois activé, ton crédit expirera la veille de ton 21ème anniversaire." />, ]} /> @@ -78,19 +89,30 @@ export const ProfileTutorialAgeInformationCreditV3: FunctionComponent = () => { creditStep: 'information', iconComponent: , children: ( - - - - + ), }, ]} type={TutorialTypes.PROFILE_TUTORIAL} testID="seventeen-timeline" /> + + + + analytics.logHasClickedFAQCreditV3({ from: 'Tutorial' })} + inline + /> + ', () => { describe('Accessibility', () => { diff --git a/src/libs/analytics/__mocks__/logEventAnalytics.ts b/src/libs/analytics/__mocks__/logEventAnalytics.ts index 681b92984db..c1b72155604 100644 --- a/src/libs/analytics/__mocks__/logEventAnalytics.ts +++ b/src/libs/analytics/__mocks__/logEventAnalytics.ts @@ -36,6 +36,7 @@ export const logEventAnalytics: typeof actualLogEventAnalytics = { logConnectionInfo: jest.fn(), logConnectWithEduconnectClicked: jest.fn(), logConsultAccessibility: jest.fn(), + logConsultAchievementModal: jest.fn(), logConsultAchievementsSuccessModal: jest.fn(), logConsultApplicationProcessingModal: jest.fn(), logConsultArticleAccountDeletion: jest.fn(), @@ -44,8 +45,6 @@ export const logEventAnalytics: typeof actualLogEventAnalytics = { logConsultAuthenticationModal: jest.fn(), logConsultAvailableDates: jest.fn(), logConsultChronicle: jest.fn(), - logConsultVenueVideoFakeDoor: jest.fn(), - logHasChosenTime: jest.fn(), logConsultDescriptionDetails: jest.fn(), logConsultDisclaimerValidationMail: jest.fn(), logConsultErrorApplicationModal: jest.fn(), @@ -63,6 +62,7 @@ export const logEventAnalytics: typeof actualLogEventAnalytics = { logConsultVenue: jest.fn(), logConsultVenueMap: jest.fn(), logConsultVenueOffers: jest.fn(), + logConsultVenueVideoFakeDoor: jest.fn(), logConsultVideo: jest.fn(), logConsultWholeOffer: jest.fn(), logConsultWithdrawal: jest.fn(), @@ -76,6 +76,7 @@ export const logEventAnalytics: typeof actualLogEventAnalytics = { logDismissAccountSecurity: jest.fn(), logDismissNotifications: jest.fn(), logDismissShareApp: jest.fn(), + logDisplayAchievements: jest.fn(), logDisplayForcedLoginHelpMessage: jest.fn(), logEduconnectExplanationClicked: jest.fn(), logEmailConfirmationConsultEmailClicked: jest.fn(), @@ -88,9 +89,12 @@ export const logEventAnalytics: typeof actualLogEventAnalytics = { logHasActivateGeolocFromTutorial: jest.fn(), logHasAddedOfferToFavorites: jest.fn(), logHasAppliedFavoritesSorting: jest.fn(), + logHasBookedCineScreeningOffer: jest.fn(), logHasChangedPassword: jest.fn(), logHasChosenPrice: jest.fn(), + logHasChosenTime: jest.fn(), logHasClickedDuoStep: jest.fn(), + logHasClickedFAQCreditV3: jest.fn(), logHasClickedMissingCode: jest.fn(), logHasCorrectedEmail: jest.fn(), logHasDismissedAppSharingModal: jest.fn(), @@ -98,9 +102,9 @@ export const logEventAnalytics: typeof actualLogEventAnalytics = { logHasMadeAChoiceForCookies: jest.fn(), logHasOpenedAccessibilityAccordion: jest.fn(), logHasOpenedCookiesAccordion: jest.fn(), - logHasBookedCineScreeningOffer: jest.fn(), logHasRefusedCookie: jest.fn(), logHasRequestedCode: jest.fn(), + logHasSearchedCinemaQuery: jest.fn(), logHasSeenAllVideo: jest.fn(), logHasSharedApp: jest.fn(), logHasSkippedCulturalSurvey: jest.fn(), @@ -192,8 +196,5 @@ export const logEventAnalytics: typeof actualLogEventAnalytics = { logVenueSeeAllOffersClicked: jest.fn(), logVenueSeeMoreClicked: jest.fn(), logVideoPaused: jest.fn(), - logDisplayAchievements: jest.fn(), - logConsultAchievementModal: jest.fn(), logViewedBookingPage: jest.fn(), - logHasSearchedCinemaQuery: jest.fn(), } diff --git a/src/libs/analytics/logEventAnalytics.ts b/src/libs/analytics/logEventAnalytics.ts index 19131894026..e47b4a6cf14 100644 --- a/src/libs/analytics/logEventAnalytics.ts +++ b/src/libs/analytics/logEventAnalytics.ts @@ -354,6 +354,8 @@ export const logEventAnalytics = { logHasChosenPrice: () => analytics.logEvent({ firebase: AnalyticsEvent.HAS_CHOSEN_PRICE }), logHasChosenTime: () => analytics.logEvent({ firebase: AnalyticsEvent.HAS_CHOSEN_TIME }), logHasClickedDuoStep: () => analytics.logEvent({ firebase: AnalyticsEvent.HAS_CLICKED_DUO_STEP }), + logHasClickedFAQCreditV3: (params: { from: string }) => + analytics.logEvent({ firebase: AnalyticsEvent.HAS_CLICKED_FAQ_CREDIT_V3 }, params), logHasClickedMissingCode: () => analytics.logEvent({ firebase: AnalyticsEvent.HAS_CLICKED_MISSING_CODE }), logHasCorrectedEmail: ({ from }: { from: Referrals }) => diff --git a/src/libs/environment/fixtures.ts b/src/libs/environment/fixtures.ts index b313c4ac1c4..b852bc069b4 100644 --- a/src/libs/environment/fixtures.ts +++ b/src/libs/environment/fixtures.ts @@ -3,12 +3,12 @@ import { Environment } from 'libs/environment/schema' export const env: Environment = { ACCESSIBILITY_LINK: 'https://passculture.accessibility', ALGOLIA_APPLICATION_ID: 'algoliaAppId', - ALGOLIA_OFFERS_INDEX_NAME: 'algoliaOffersIndexName', ALGOLIA_OFFERS_INDEX_NAME_B: 'algoliaOffersIndexNameB', + ALGOLIA_OFFERS_INDEX_NAME: 'algoliaOffersIndexName', ALGOLIA_SEARCH_API_PUBLIC_KEY: 'algoliaApiKey', + ALGOLIA_SUGGESTIONS_INDEX_NAME: 'algoliaSuggestionsIndexName', ALGOLIA_TOP_OFFERS_INDEX_NAME: 'algoliaTopOffersIndexName', ALGOLIA_VENUES_INDEX_NAME: 'algoliaVenuesIndexName', - ALGOLIA_SUGGESTIONS_INDEX_NAME: 'algoliaSuggestionsIndexName', ALGOLIA_VENUES_INDEX_PLAYLIST_SEARCH_NEWEST: 'algoliaVenuesIndexPlaylistSearchNewest', ALGOLIA_VENUES_INDEX_PLAYLIST_SEARCH: 'algoliaVenuesIndexPlaylistSearch', AMPLITUDE_API_PUBLIC_KEY: 'amplitudeApiKey', @@ -19,21 +19,22 @@ export const env: Environment = { BOOKING_FEEDBACK_LINK: 'https://passculture.qualtrics.com/jfe/form/SV_dcmKZrtRwVABcA6', BOOKING_LIMIT_EXCEEDED_URL: 'https://aide.passculture.app/hc/fr/articles/4411991975825', CGU_LINK: 'https://passculture.cgu', - CONTENTFUL_PUBLIC_ACCESS_TOKEN: 'accessToken', + COMMIT_HASH: '13371337', CONTENTFUL_ENVIRONMENT: 'environment', + CONTENTFUL_PUBLIC_ACCESS_TOKEN: 'accessToken', CONTENTFUL_SPACE_ID: 'contentfulSpaceId', COOKIES_POLICY_LINK: 'https://passculture.cookies', CULTURAL_SURVEY_TYPEFORM_ID: 'TYPEFORM_FORM_ID', DATA_PRIVACY_CHART_LINK: 'https://passculture.data-privacy-chart', + DMS_FOREIGN_CITIZEN_URL: 'https://dmsforeigncitizen', + DMS_FRENCH_CITIZEN_URL: 'https://dmsfrenchcitizen', DOC_CGU_URL: 'https//docs.passculture.app/textes-normatifs/mentions-legales-et-conditions-generales-dutilisation-de-lapplication-pass-culture', DOC_PERSONAL_DATA_URL: 'https://docs.passculture.app/textes-normatifs/charte-des-donnees-personnelles', - DMS_FRENCH_CITIZEN_URL: 'https://dmsfrenchcitizen', - DMS_FOREIGN_CITIZEN_URL: 'https://dmsforeigncitizen', EDUCONNECT_ALLOWED_DOMAIN: 'https://educoco_alloweddodo', ENV: 'testing', - FAQ_LINK: 'https://passculture.faq', + FAQ_LINK_CREDIT_V3: 'https://passculture-credit-v3.faq', FAQ_LINK_CREDIT: 'https://passculture-credit.faq', FAQ_LINK_DELETE_ACCOUNT: 'https://passculture-delete-account.faq', FAQ_LINK_EDUCONNECT_URL: 'https://passculture-educonnect.faq', @@ -42,6 +43,7 @@ export const env: Environment = { FAQ_LINK_RESET_PASSORD_EMAIL_NOT_RECEIVED: 'https://passculture-reset-password.faq', FAQ_LINK_RIGHT_TO_ERASURE: 'https://passculture-right-to-erasure.faq', FAQ_LINK_SIGNUP_CONFIRMATION_EMAIL_NOT_RECEIVED: 'https://passculture-confirmation-email.faq', + FAQ_LINK: 'https://passculture.faq', FEATURE_FLIPPING_ONLY_VISIBLE_ON_TESTING: true, FIREBASE_API_PUBLIC_KEY: 'FIREBASE_API_PUBLIC_KEY', FIREBASE_APPID: 'BATCH_VAPID_PUBLIC_KEY', @@ -50,6 +52,7 @@ export const env: Environment = { FIREBASE_MESSAGINGSENDERID: 'FIREBASE_MESSAGINGSENDERID', FIREBASE_PROJECTID: 'FIREBASE_PROJECTID', FIREBASE_STORAGEBUCKET: 'FIREBASE_STORAGEBUCKET', + FRAUD_EMAIL_ADDRESS: 'service.fraude@test.passculture.app', GCP_IMAGE_COULD_STORAGE_NAME: 'localhost-storage-v2', GOOGLE_CLIENT_ID: 'GOOGLE_CLIENT_ID', GOOGLE_IOS_CLIENT_ID: 'GOOGLE_IOS_CLIENT_ID', @@ -64,12 +67,10 @@ export const env: Environment = { RESIZE_IMAGE_ON_DEMAND_URL: 'https://image-resizing-dot-passculture-metier-ehp.ew.r.appspot.com', SENTRY_DSN: 'SENTRY_DSN', SENTRY_PROFILES_SAMPLE_RATE: '1.0', - SENTRY_TRACES_SAMPLE_RATE: '1.0', SENTRY_SAMPLE_RATE: '1.0', + SENTRY_TRACES_SAMPLE_RATE: '1.0', SITE_PUBLIC_KEY: 'SITE_PUBLIC_KEY', SUPPORT_EMAIL_ADDRESS: 'support@test.passculture.app', - FRAUD_EMAIL_ADDRESS: 'service.fraude@test.passculture.app', URL_PREFIX: 'passculture', WEBAPP_V2_DOMAIN: 'webapp-v2.example.com', - COMMIT_HASH: '13371337', } diff --git a/src/libs/environment/schema.ts b/src/libs/environment/schema.ts index 4f6af4e47ca..cab37fe055e 100644 --- a/src/libs/environment/schema.ts +++ b/src/libs/environment/schema.ts @@ -3,12 +3,12 @@ import * as yup from 'yup' export const EnvironmentSchema = yup.object({ ACCESSIBILITY_LINK: yup.string().required(), ALGOLIA_APPLICATION_ID: yup.string().required(), - ALGOLIA_OFFERS_INDEX_NAME: yup.string().required(), ALGOLIA_OFFERS_INDEX_NAME_B: yup.string().required(), + ALGOLIA_OFFERS_INDEX_NAME: yup.string().required(), ALGOLIA_SEARCH_API_PUBLIC_KEY: yup.string().required(), + ALGOLIA_SUGGESTIONS_INDEX_NAME: yup.string().required(), ALGOLIA_TOP_OFFERS_INDEX_NAME: yup.string().required(), ALGOLIA_VENUES_INDEX_NAME: yup.string().required(), - ALGOLIA_SUGGESTIONS_INDEX_NAME: yup.string().required(), ALGOLIA_VENUES_INDEX_PLAYLIST_SEARCH_NEWEST: yup.string().required(), ALGOLIA_VENUES_INDEX_PLAYLIST_SEARCH: yup.string().required(), AMPLITUDE_API_PUBLIC_KEY: yup.string().required(), @@ -19,19 +19,19 @@ export const EnvironmentSchema = yup.object({ BOOKING_FEEDBACK_LINK: yup.string().required(), BOOKING_LIMIT_EXCEEDED_URL: yup.string().required(), CGU_LINK: yup.string().required(), - CONTENTFUL_PUBLIC_ACCESS_TOKEN: yup.string().required(), CONTENTFUL_ENVIRONMENT: yup.string().required(), + CONTENTFUL_PUBLIC_ACCESS_TOKEN: yup.string().required(), CONTENTFUL_SPACE_ID: yup.string().required(), COOKIES_POLICY_LINK: yup.string().required(), CULTURAL_SURVEY_TYPEFORM_ID: yup.string().required(), DATA_PRIVACY_CHART_LINK: yup.string().required(), + DMS_FOREIGN_CITIZEN_URL: yup.string().required(), + DMS_FRENCH_CITIZEN_URL: yup.string().required(), DOC_CGU_URL: yup.string().required(), DOC_PERSONAL_DATA_URL: yup.string().required(), - DMS_FRENCH_CITIZEN_URL: yup.string().required(), - DMS_FOREIGN_CITIZEN_URL: yup.string().required(), EDUCONNECT_ALLOWED_DOMAIN: yup.string().required(), ENV: yup.string().required(), - FAQ_LINK: yup.string().required(), + FAQ_LINK_CREDIT_V3: yup.string().required(), FAQ_LINK_CREDIT: yup.string().required(), FAQ_LINK_DELETE_ACCOUNT: yup.string().required(), FAQ_LINK_EDUCONNECT_URL: yup.string().required(), @@ -39,6 +39,7 @@ export const EnvironmentSchema = yup.object({ FAQ_LINK_RESET_PASSORD_EMAIL_NOT_RECEIVED: yup.string().required(), FAQ_LINK_RIGHT_TO_ERASURE: yup.string().required(), FAQ_LINK_SIGNUP_CONFIRMATION_EMAIL_NOT_RECEIVED: yup.string().required(), + FAQ_LINK: yup.string().required(), FEATURE_FLIPPING_ONLY_VISIBLE_ON_TESTING: yup.boolean().required(), FIREBASE_API_PUBLIC_KEY: yup.string().required(), FIREBASE_APPID: yup.string().required(), @@ -47,6 +48,7 @@ export const EnvironmentSchema = yup.object({ FIREBASE_MESSAGINGSENDERID: yup.string().required(), FIREBASE_PROJECTID: yup.string().required(), FIREBASE_STORAGEBUCKET: yup.string().required(), + FRAUD_EMAIL_ADDRESS: yup.string().required(), GCP_IMAGE_COULD_STORAGE_NAME: yup.string().required(), GOOGLE_CLIENT_ID: yup.string().required(), GOOGLE_IOS_CLIENT_ID: yup.string().required(), @@ -59,11 +61,10 @@ export const EnvironmentSchema = yup.object({ RESIZE_IMAGE_ON_DEMAND_URL: yup.string().required(), SENTRY_DSN: yup.string().required(), SENTRY_PROFILES_SAMPLE_RATE: yup.string().required(), - SENTRY_TRACES_SAMPLE_RATE: yup.string().required(), SENTRY_SAMPLE_RATE: yup.string().required(), + SENTRY_TRACES_SAMPLE_RATE: yup.string().required(), SITE_PUBLIC_KEY: yup.string().required(), SUPPORT_EMAIL_ADDRESS: yup.string().required(), - FRAUD_EMAIL_ADDRESS: yup.string().required(), URL_PREFIX: yup.string().required(), WEBAPP_V2_DOMAIN: yup.string().required(), // Below envs are injected by vite and are defined only on the Webapp diff --git a/src/libs/firebase/analytics/events.ts b/src/libs/firebase/analytics/events.ts index f8727eaf674..164d491745f 100644 --- a/src/libs/firebase/analytics/events.ts +++ b/src/libs/firebase/analytics/events.ts @@ -89,6 +89,7 @@ export enum AnalyticsEvent { HAS_CHOSEN_PRICE = 'HasChosenPrice', HAS_CHOSEN_TIME = 'HasChosenTime', HAS_CLICKED_DUO_STEP = 'HasClickedDuoStep', + HAS_CLICKED_FAQ_CREDIT_V3 = 'HasClickedFAQCreditV3', HAS_CLICKED_MISSING_CODE = 'HasClickedMissingCode', HAS_CORRECTED_EMAIL = 'HasCorrectedEmail', HAS_DISMISSED_APP_SHARING_MODAL = 'HasDismissedAppSharingModal', diff --git a/whiteListEnv.js b/whiteListEnv.js index 2f50b0d4048..3a80035cbae 100644 --- a/whiteListEnv.js +++ b/whiteListEnv.js @@ -39,6 +39,7 @@ export const whiteListEnv = (env, commitHash) => { 'DOC_PERSONAL_DATA_URL', 'EDUCONNECT_ALLOWED_DOMAIN', 'ENV', + 'FAQ_LINK_CREDIT_V3', 'FAQ_LINK_CREDIT', 'FAQ_LINK_DELETE_ACCOUNT', 'FAQ_LINK_EDUCONNECT_URL', @@ -74,8 +75,8 @@ export const whiteListEnv = (env, commitHash) => { 'RESIZE_IMAGE_ON_DEMAND_URL', 'SENTRY_DSN', 'SENTRY_PROFILES_SAMPLE_RATE', - 'SENTRY_TRACES_SAMPLE_RATE', 'SENTRY_SAMPLE_RATE', + 'SENTRY_TRACES_SAMPLE_RATE', 'SITE_PUBLIC_KEY', 'SUPPORT_EMAIL_ADDRESS', 'URL_PREFIX',