Skip to content

Commit

Permalink
feat: change comportement front pour gérer 404 si utilisateur inexist…
Browse files Browse the repository at this point in the history
…ant (000)
  • Loading branch information
Maxime authored and aureliadelzottoOCTO committed Nov 28, 2024
1 parent a1254bb commit d0b6a2f
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 8 deletions.
2 changes: 2 additions & 0 deletions app/front/src/components/Erreur/Erreur.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ const Erreur = ({ erreur }: ErreurProps) => {

scrollTo({ top: 0 });

if (erreur instanceof NonIdentifiéErreurHttp || erreur instanceof NonAutoriséErreurHttp) return null;

return (
<>
<LienÉvitement />
Expand Down
15 changes: 13 additions & 2 deletions app/front/src/configuration/lib/tanstack-query.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { NonAutoriséErreurHttp, NonIdentifiéErreurHttp } from "@/services/erreurs/erreursHttp";
import { RessourceNonTrouvéeErreur } from "@/services/erreurs/erreurs";
import {
NonAutoriséErreurHttp,
NonIdentifiéErreurHttp,
RessourceNonTrouvéeErreurHttp,
} from "@/services/erreurs/erreursHttp";
import { QueryClient } from "@tanstack/react-query";

export const queryClient = new QueryClient({
Expand All @@ -7,7 +12,13 @@ export const queryClient = new QueryClient({
staleTime: Number.POSITIVE_INFINITY,
throwOnError: true,
retry: (nombreTentatives, erreur) => {
if (erreur instanceof NonIdentifiéErreurHttp || erreur instanceof NonAutoriséErreurHttp) return false;
if (
erreur instanceof NonIdentifiéErreurHttp ||
erreur instanceof NonAutoriséErreurHttp ||
erreur instanceof RessourceNonTrouvéeErreurHttp ||
erreur instanceof RessourceNonTrouvéeErreur
)
return false;

// eslint-disable-next-line sonarjs/prefer-single-boolean-return
if (nombreTentatives >= 2) return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
} from "./élèveHttpRepository.interface";
import { type Élève } from "@/features/élève/domain/élève.interface";
import { type ÉlèveRepository } from "@/features/élève/infrastructure/gateway/élèveRepository.interface";
import { NonAutoriséErreurHttp } from "@/services/erreurs/erreursHttp";
import { RessourceNonTrouvéeErreurHttp } from "@/services/erreurs/erreursHttp";
import { type IMpsApiHttpClient } from "@/services/mpsApiHttpClient/mpsApiHttpClient.interface";

export class ÉlèveHttpRepository implements ÉlèveRepository {
Expand All @@ -17,7 +17,7 @@ export class ÉlèveHttpRepository implements ÉlèveRepository {
public async récupérerProfil(): Promise<Élève | Error> {
const réponse = await this._mpsApiHttpClient.get<RécupérerProfilÉlèveRéponseHTTP>(this._ENDPOINT);

if (réponse instanceof NonAutoriséErreurHttp) {
if (réponse instanceof RessourceNonTrouvéeErreurHttp) {
await this.mettreÀJourProfil({
compteParcoursupAssocié: false,
situation: null,
Expand Down
2 changes: 1 addition & 1 deletion app/front/src/services/erreurs/erreursHttp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export class RessourceNonTrouvéeErreurHttp extends Error {
super();
Object.setPrototypeOf(this, RessourceNonTrouvéeErreurHttp.prototype);
this.name = "HTTP - Erreur 404 - Ressource non trouvée";
dépendances.logger.consigner("warning", this, contexte);
dépendances.logger.consigner("info", this, contexte);
this.estConsignéeManuellement = true;
}
}
Expand Down
8 changes: 5 additions & 3 deletions app/front/src/services/httpClient/httpClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,13 @@ export class HttpClient implements IHttpClient {
}

return new CodeRéponseInattenduErreurHttp({ ...options, erreur: JSON.stringify(error) }, statusErreur);
} else if (erreur.code === "ECONNABORTED") {
}

if (erreur.code === "ECONNABORTED")
return new RequêteAnnuléeErreurHttp({ ...options, erreur: JSON.stringify(error) });
} else if (erreur.cause?.message === "Network Error") {

if (erreur.code === "ERR_NETWORK" || erreur.cause?.message === "Network Error")
return new ErreurRéseauErreurHttp({ ...options, erreur: JSON.stringify(error) });
}
}

return new ErreurInconnueErreurHttp({ ...options, erreur: JSON.stringify(error) });
Expand Down

0 comments on commit d0b6a2f

Please sign in to comment.