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',