Skip to content

Commit

Permalink
fix: meilleure gestion d'erreur pour le followup
Browse files Browse the repository at this point in the history
  • Loading branch information
jenovateurs committed Oct 7, 2024
1 parent 93635d6 commit db18d4f
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 8 deletions.
5 changes: 4 additions & 1 deletion backend/controllers/followups.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,13 @@ export async function persist(req: Request, res: Response) {
return createSimulationRecapUrl(req, res)
}
} catch (error: any) {
Sentry.captureException(error)
if (error.name === "ValidationError") {
if (!error.message || !error.message?.includes("wrongPhoneNumber")) {
Sentry.captureException(error)
}
return res.status(403).send(error.message)
} else {
Sentry.captureException(error)
return res.status(500).send(`Error while persisting followup`)
}
}
Expand Down
2 changes: 1 addition & 1 deletion backend/models/followup-schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const FollowupSchema = new mongoose.Schema<Followup, FollowupModel>(
type: String,
validate: {
validator: validator.isMobilePhone,
message: "Numéro de téléphone invalide",
message: "wrongPhoneNumber",
isAsync: false,
},
},
Expand Down
13 changes: 11 additions & 2 deletions src/components/modals/errors-email-and-sms-modal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,19 @@ const recapEmailState = computed(() => store.recapEmailState)
<div class="fr-pb-3w">
<div v-if="recapPhoneState != 'waiting' && recapEmailState != 'waiting'">
<div
v-if="recapPhoneState === 'error' || recapEmailState === 'error'"
v-if="
recapPhoneState === 'error' ||
recapEmailState === 'error' ||
recapPhoneState === 'wrongPhoneNumber'
"
class="fr-alert fr-alert--error"
>
<p>
<p v-if="recapPhoneState === 'wrongPhoneNumber'">
Le numéro de téléphone est invalide. Nous vous recommandons de
vérifier votre numéro de téléphone ou de saisir uniquement votre
adresse e-mail.
</p>
<p v-else>
Une erreur s'est produite dans l'envoi par
{{
recapPhoneState === "error" && recapEmailState === "error"
Expand Down
22 changes: 18 additions & 4 deletions src/components/recap-email-and-sms-form.vue
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,13 @@ const sendRecap = async (surveyOptin) => {
)
}
} catch (error) {
console.error(error)
Sentry.captureException(error)
if (
!error?.response?.data ||
!error?.response?.data.includes("wrongPhoneNumber")
) {
console.error(error)
Sentry.captureException(error)
}
}
}
Expand Down Expand Up @@ -142,10 +147,18 @@ const sendRecapByEmailAndSms = async (surveyOptin) => {
store.setModalState(undefined)
await postFollowup(surveyOptin, emailValue.value, phoneValue.value)
} catch (error) {
Sentry.captureException(error)
store.setFormRecapState("error")
if (
error?.response?.data &&
error?.response?.data.includes("wrongPhoneNumber")
) {
store.setFormRecapState("wrongPhoneNumber")
} else {
Sentry.captureException(error)
store.setFormRecapState("error")
}
throw error
}
store.setFormRecapState("ok")
phoneValue.value = undefined
emailValue.value = undefined
Expand All @@ -166,6 +179,7 @@ const sendRecapBySms = async (surveyOptin) => {
store.setFormRecapPhoneState("error")
throw error
}
store.setFormRecapPhoneState("ok")
phoneValue.value = undefined
}
Expand Down

0 comments on commit db18d4f

Please sign in to comment.