Skip to content

Commit

Permalink
♻️ fetch user brevo contact
Browse files Browse the repository at this point in the history
  • Loading branch information
paulsouche committed Jan 13, 2025
1 parent bed9006 commit f10233e
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 75 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import Trans from '@/components/translation/Trans'
import UserInformationForm from '@/components/user/UserInformationForm'
import { useGetNewsletterSubscriptions } from '@/hooks/settings/useGetNewsletterSubscriptions'
import { useClientTranslation } from '@/hooks/useClientTranslation'
import { useFetchUserContact } from '@/hooks/users/useFetchUserContact'
import { useCurrentSimulation, useUser } from '@/publicodes-state'

type Props = {
Expand All @@ -20,8 +20,7 @@ export default function CustomActionForm({
const { toggleActionChoice, user } = useUser()
const { actionChoices } = useCurrentSimulation()

const { refetch: refreshNewsletterSubcriptions } =
useGetNewsletterSubscriptions(user?.email ?? '')
const { refetch: refreshUserContact } = useFetchUserContact(user.userId)

if (dottedName === 'transport . infolettre')
return (
Expand All @@ -41,7 +40,7 @@ export default function CustomActionForm({
data['newsletter-transports'] !== actionChoices?.[dottedName]
) {
toggleActionChoice(dottedName)
refreshNewsletterSubcriptions()
refreshUserContact()
setFocusedAction('')
}
}}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ import CheckboxInputGroup from '@/design-system/inputs/CheckboxInputGroup'
import TextInputGroup from '@/design-system/inputs/TextInputGroup'
import Loader from '@/design-system/layout/Loader'
import Emoji from '@/design-system/utils/Emoji'
import { useGetNewsletterSubscriptions } from '@/hooks/settings/useGetNewsletterSubscriptions'
import { useUpdateUserSettings } from '@/hooks/settings/useUpdateUserSettings'
import { useClientTranslation } from '@/hooks/useClientTranslation'
import { useFetchUserContact } from '@/hooks/users/useFetchUserContact'
import { useUpdateUserSettings } from '@/hooks/users/useUpdateUserSettings'
import { useUser } from '@/publicodes-state'
import { formatEmail } from '@/utils/format/formatEmail'
import { useEffect, useRef, useState } from 'react'
import type { SubmitHandler} from 'react-hook-form';
import type { SubmitHandler } from 'react-hook-form'
import { useForm as useReactHookForm } from 'react-hook-form'

type Inputs = {
Expand Down Expand Up @@ -47,22 +47,20 @@ export default function MesInformations() {
},
})

const { data: newsletterSubscriptions } = useGetNewsletterSubscriptions(
user?.email ?? ''
)
const { data: userContact } = useFetchUserContact(user.userId)

useEffect(() => {
if (!newsletterSubscriptions) return
if (!userContact) return

setValue(
'newsletter-saisonniere',
newsletterSubscriptions.includes(LIST_MAIN_NEWSLETTER)
userContact.listIds.includes(LIST_MAIN_NEWSLETTER)
)
setValue(
'newsletter-transports',
newsletterSubscriptions.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER)
userContact.listIds.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER)
)
}, [newsletterSubscriptions, setValue])
}, [userContact, setValue])

const {
mutateAsync: updateUserSettings,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import EmailInput from '@/design-system/inputs/EmailInput'
import Card from '@/design-system/layout/Card'
import Emoji from '@/design-system/utils/Emoji'
import { getSaveSimulationListIds } from '@/helpers/brevo/getSaveSimulationListIds'
import { useGetNewsletterSubscriptions } from '@/hooks/settings/useGetNewsletterSubscriptions'
import { useSaveSimulation } from '@/hooks/simulation/useSaveSimulation'
import { useClientTranslation } from '@/hooks/useClientTranslation'
import { useLocale } from '@/hooks/useLocale'
import { useMainNewsletter } from '@/hooks/useMainNewsletter'
import { useFetchUserContact } from '@/hooks/users/useFetchUserContact'
import { useCurrentSimulation, useUser } from '@/publicodes-state'
import { formatEmail } from '@/utils/format/formatEmail'
import { trackEvent } from '@/utils/matomo/trackEvent'
Expand Down Expand Up @@ -52,14 +52,12 @@ export default function GetResultsByEmail({
// Avoid refetching useGetNewsletterSubscriptions when defining an email for the first time
const emailRef = useRef<string>(user?.email ?? '')

const { data: newsletterSubscriptions } = useGetNewsletterSubscriptions(
emailRef?.current ?? ''
)
const { data: userContact } = useFetchUserContact(emailRef?.current ?? '')

const isSubscribedMainNewsletter =
newsletterSubscriptions?.includes(LIST_MAIN_NEWSLETTER)
userContact?.listIds.includes(LIST_MAIN_NEWSLETTER)

const isSubscribedTransportNewsletter = newsletterSubscriptions?.includes(
const isSubscribedTransportNewsletter = userContact?.listIds.includes(
LIST_NOS_GESTES_TRANSPORT_NEWSLETTER
)

Expand All @@ -75,27 +73,27 @@ export default function GetResultsByEmail({
mode: 'onSubmit',
})

const isSubscribedLogementNewsletter = newsletterSubscriptions?.includes(
const isSubscribedLogementNewsletter = userContact?.listIds.includes(
LIST_NOS_GESTES_LOGEMENT_NEWSLETTER
)

useEffect(() => {
if (!newsletterSubscriptions) return
if (!userContact) return

setValue(
'newsletter-saisonniere',
newsletterSubscriptions.includes(LIST_MAIN_NEWSLETTER)
userContact.listIds.includes(LIST_MAIN_NEWSLETTER)
)
setValue(
'newsletter-transports',
newsletterSubscriptions.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER)
userContact.listIds.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER)
)

setValue(
'newsletter-logement',
newsletterSubscriptions.includes(LIST_NOS_GESTES_LOGEMENT_NEWSLETTER)
userContact.listIds.includes(LIST_NOS_GESTES_LOGEMENT_NEWSLETTER)
)
}, [newsletterSubscriptions, setValue])
}, [userContact, setValue])

const { saveSimulation, isPending, isSuccess, isError, error } =
useSaveSimulation()
Expand Down
12 changes: 5 additions & 7 deletions src/components/blog/NosGestesTransportsBanner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import Button from '@/design-system/inputs/Button'
import TextInputGroup from '@/design-system/inputs/TextInputGroup'
import Loader from '@/design-system/layout/Loader'
import Emoji from '@/design-system/utils/Emoji'
import { useGetNewsletterSubscriptions } from '@/hooks/settings/useGetNewsletterSubscriptions'
import { useUpdateUserSettings } from '@/hooks/settings/useUpdateUserSettings'
import { useClientTranslation } from '@/hooks/useClientTranslation'
import { useFetchUserContact } from '@/hooks/users/useFetchUserContact'
import { useUpdateUserSettings } from '@/hooks/users/useUpdateUserSettings'
import { useUser } from '@/publicodes-state'
import type { SubmitHandler} from 'react-hook-form';
import type { SubmitHandler } from 'react-hook-form'
import { useForm as useReactHookForm } from 'react-hook-form'
import Trans from '../translation/Trans'

Expand All @@ -24,9 +24,7 @@ export default function NosGestesTransportsBanner() {
},
})

const { data: newsletterSubscriptions } = useGetNewsletterSubscriptions(
user?.email ?? ''
)
const { data: userContact } = useFetchUserContact(user?.email ?? '')

const {
mutateAsync: updateUserSettings,
Expand All @@ -51,7 +49,7 @@ export default function NosGestesTransportsBanner() {
}
}

if (newsletterSubscriptions?.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER)) {
if (userContact?.listIds.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER)) {
return null
}

Expand Down
22 changes: 10 additions & 12 deletions src/components/user/SaveSimulationForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ import CheckboxInputGroup from '@/design-system/inputs/CheckboxInputGroup'
import TextInputGroup from '@/design-system/inputs/TextInputGroup'
import Loader from '@/design-system/layout/Loader'
import Emoji from '@/design-system/utils/Emoji'
import { useGetNewsletterSubscriptions } from '@/hooks/settings/useGetNewsletterSubscriptions'
import { useUpdateUserSettings } from '@/hooks/settings/useUpdateUserSettings'
import { useClientTranslation } from '@/hooks/useClientTranslation'
import { useFetchUserContact } from '@/hooks/users/useFetchUserContact'
import { useUpdateUserSettings } from '@/hooks/users/useUpdateUserSettings'
import { useUser } from '@/publicodes-state'
import type { ReactNode} from 'react';
import type { ReactNode } from 'react'
import { useEffect, useRef, useState } from 'react'
import type { SubmitHandler} from 'react-hook-form';
import type { SubmitHandler } from 'react-hook-form'
import { useForm as useReactHookForm } from 'react-hook-form'
import { twMerge } from 'tailwind-merge'

Expand Down Expand Up @@ -75,23 +75,21 @@ export default function UserInformationForm({
},
})

const { data: newsletterSubscriptions } = useGetNewsletterSubscriptions(
user?.email ?? ''
)
const { data: userContact } = useFetchUserContact(user?.email ?? '')

useEffect(() => {
if (!newsletterSubscriptions && !defaultValues) return
if (!userContact && !defaultValues) return

setValue(
'newsletter-saisonniere',
newsletterSubscriptions?.includes(LIST_MAIN_NEWSLETTER)
!!userContact?.listIds.includes(LIST_MAIN_NEWSLETTER)
)
setValue(
'newsletter-transports',
newsletterSubscriptions?.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER) ||
defaultValues?.['newsletter-transports']
!!userContact?.listIds.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER) ||
!!defaultValues?.['newsletter-transports']
)
}, [newsletterSubscriptions, setValue, defaultValues])
}, [userContact, setValue, defaultValues])

const {
mutateAsync: updateUserSettings,
Expand Down
24 changes: 11 additions & 13 deletions src/components/user/UserInformationForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ import Loader from '@/design-system/layout/Loader'
import Emoji from '@/design-system/utils/Emoji'
import { displayErrorToast } from '@/helpers/toasts/displayErrorToast'
import { displaySuccessToast } from '@/helpers/toasts/displaySuccessToast'
import { useGetNewsletterSubscriptions } from '@/hooks/settings/useGetNewsletterSubscriptions'
import { useUpdateUserSettings } from '@/hooks/settings/useUpdateUserSettings'
import { useClientTranslation } from '@/hooks/useClientTranslation'
import { useFetchUserContact } from '@/hooks/users/useFetchUserContact'
import { useUpdateUserSettings } from '@/hooks/users/useUpdateUserSettings'
import { useUser } from '@/publicodes-state'
import type { ReactNode} from 'react';
import type { ReactNode } from 'react'
import { useEffect, useRef } from 'react'
import type { SubmitHandler} from 'react-hook-form';
import type { SubmitHandler } from 'react-hook-form'
import { useForm as useReactHookForm } from 'react-hook-form'
import { twMerge } from 'tailwind-merge'

Expand Down Expand Up @@ -81,27 +81,25 @@ export default function UserInformationForm({
},
})

const { data: newsletterSubscriptions } = useGetNewsletterSubscriptions(
user?.email ?? ''
)
const { data: userContact } = useFetchUserContact(user?.email ?? '')

useEffect(() => {
if (!newsletterSubscriptions && !defaultValues) return
if (!userContact && !defaultValues) return

setValue(
'newsletter-saisonniere',
newsletterSubscriptions?.includes(LIST_MAIN_NEWSLETTER)
!!userContact?.listIds.includes(LIST_MAIN_NEWSLETTER)
)
setValue(
'newsletter-transports',
newsletterSubscriptions?.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER) ||
defaultValues?.['newsletter-transports']
!!userContact?.listIds.includes(LIST_NOS_GESTES_TRANSPORT_NEWSLETTER) ||
!!defaultValues?.['newsletter-transports']
)
setValue(
'newsletter-logement',
newsletterSubscriptions?.includes(LIST_NOS_GESTES_LOGEMENT_NEWSLETTER)
!!userContact?.listIds.includes(LIST_NOS_GESTES_LOGEMENT_NEWSLETTER)
)
}, [newsletterSubscriptions, setValue, defaultValues])
}, [userContact, setValue, defaultValues])

const { mutateAsync: updateUserSettings, isPending } = useUpdateUserSettings({
email: user?.email ?? '',
Expand Down
2 changes: 2 additions & 0 deletions src/constants/urls.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ export const QUIZZ_ANSWER_URL = SERVER_URL + '/quizz-answers/v1'

export const SIMULATION_URL = SERVER_URL + '/simulations/v1'

export const USER_URL = SERVER_URL + '/users/v1'

export const VERIFICATION_CODE_URL = SERVER_URL + '/verification-codes/v1'

export const getPreviewUrl = (PRNumber: string | number) => {
Expand Down
17 changes: 0 additions & 17 deletions src/hooks/settings/useGetNewsletterSubscriptions.ts

This file was deleted.

20 changes: 20 additions & 0 deletions src/hooks/users/useFetchUserContact.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { USER_URL } from '@/constants/urls'
import { useQuery } from '@tanstack/react-query'
import axios from 'axios'

export type UserContact = {
id: number
email: string
listIds: number[]
}

export function useFetchUserContact(userId: string) {
return useQuery({
queryKey: ['userContact', userId],
queryFn: async () =>
axios
.get<UserContact>(`${USER_URL}/${userId}/brevo-contact`)
.then((res) => res.data),
retry: false,
})
}
File renamed without changes.

0 comments on commit f10233e

Please sign in to comment.