Skip to content

Commit

Permalink
feat: rework ErrorPages and GenericData type
Browse files Browse the repository at this point in the history
  • Loading branch information
RenauxLeaInsee committed Jan 17, 2025
1 parent 73ca4fc commit 4a0a241
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 47 deletions.
16 changes: 11 additions & 5 deletions src/components/Login.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
import { useFetchQueryPortail } from "hooks/useFetchQuery";
import type { SurveyData } from "types/ContentSurvey";
import type { GenericData, SurveyData } from "types/ContentSurvey";
import { Navigate } from "@tanstack/react-router";
import { Loading } from "./surveyHomepage/Loading";
import { TechnicalError } from "./errorPages/TechnicalError";
import { Ineligible, Unauthorized } from "./errorPages/ErrorPages";
import { ErrorPage } from "./errorPages/ErrorPages";

export const Login = ({ surveyData }: { surveyData: SurveyData }) => {
export const Login = ({
surveyData,
genericData,
}: {
surveyData: SurveyData;
genericData: GenericData;
}) => {
const {
data: questioningUrlData,
isLoading,
Expand All @@ -18,14 +24,14 @@ export const Login = ({ surveyData }: { surveyData: SurveyData }) => {

if (error) {
if (error.status === 401 || error.status === 403 || error.status === 404) {
return <Unauthorized surveyId={surveyData.id} />;
return <ErrorPage data={surveyData} message={genericData.content.unauthorized.body} />;
} else {
return <TechnicalError surveyId={surveyData.id} />;
}
}

if (!questioningUrlData || questioningUrlData.length === 0 || !questioningUrlData[0].url) {
return <Ineligible surveyId={surveyData.id} />;
return <ErrorPage data={surveyData} message={genericData.content.ineligible.body} />;
}

if (surveyData.verifmail || surveyData.verifmail === undefined) {
Expand Down
22 changes: 0 additions & 22 deletions src/components/errorPages/ErrorPages.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ import { fr } from "@codegouvfr/react-dsfr";
import { Alert } from "@codegouvfr/react-dsfr/Alert";
import { Breadcrumb } from "@codegouvfr/react-dsfr/Breadcrumb";
import Button from "@codegouvfr/react-dsfr/Button";
import { Loading } from "components/surveyHomepage/Loading";
import { declareComponentKeys, useTranslation } from "i18n/i18n";
import content from "resources/content.json";
import type { SurveyData } from "types/ContentSurvey";

type Props = {
Expand Down Expand Up @@ -78,26 +76,6 @@ export const ErrorPage = ({ data, message }: Props) => {
);
};

export const Ineligible = ({ surveyId }: { surveyId: string }) => {
const data = content.specifique.find(s => s.id === surveyId);
const message = content.generique.content.ineligible.body;
if (!data) {
return <Loading />;
}

return <ErrorPage data={data} message={message} />;
};

export const Unauthorized = ({ surveyId }: { surveyId: string }) => {
const data = content.specifique.find(s => s.id === surveyId);
const message = content.generique.content.unauthorized.body;
if (!data) {
return <Loading />;
}

return <ErrorPage data={data} message={message} />;
};

const { i18n } = declareComponentKeys<"connexion" | "alertTitle" | "contactSupport" | "alertText">()(
"ErrorPages",
);
Expand Down
19 changes: 2 additions & 17 deletions src/resources/content.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,6 @@
{
"generique": {
"importantInfo": {
"state": true,
"message": {
"title": "⚠️ Information importante ⚠️",
"body": "Selon le moment de la journée, il se peut que des lenteurs soient observées sur le site en cas de forte affluence.\n\n Si tel est le cas nous vous conseillons de vous reconnecter ultérieurement."
}
},
"content": {
"a-quoi-servent-vos-reponses": {
"body": "Les enquêtes servent à alimenter des études qui intéressent un large public.",
"information": "Pour toute demande, vous pouvez consulter notre site."
},
"accessibilite": {
"title": "Accessibilité",
"body": "Ce site a été conçu dans un souci de conformité avec les critères recommandés."
},
"faq-data": [
{
"title": "Je n’arrive pas à me connecter",
Expand Down Expand Up @@ -46,7 +31,7 @@
"specifique": [
{
"id": "chi",
"isSurveyOnline": false,
"isSurveyOnline": true,
"disabledOnWelcomePage": false,
"messageSurveyOffline": "L'enquête est terminée",
"messageInfoSurveyOffline": "",
Expand Down Expand Up @@ -368,7 +353,7 @@
"body": "Oui. Pour cela, il vous suffit de commencer à remplir le questionnaire, d'enregistrer les données en cliquant sur le bouton « Quitter et revenir plus tard » et de fermer le questionnaire.\n\nVous pourrez ensuite vous reconnecter sur ce questionnaire et continuer à compléter le questionnaire, à partir de l'endroit où vous vous étiez interrompu."
}
],
"faq-data-general": [{}]
"faq-data-general": []
},
"configuration": {
"listOptionsObjetMailAssistance": [
Expand Down
4 changes: 2 additions & 2 deletions src/routes/$survey/login.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ export const Route = createFileRoute("/$survey/login")({
function LoginPage() {
const { t: headerTranslation } = useTranslation("Header");
const { t: errorPagesTranslation } = useTranslation("ErrorPages");
const { surveyData } = useLoaderData({ from: "/$survey" });
const { surveyData, genericData } = useLoaderData({ from: "/$survey" });

return (
<div>
<Helmet>
<title>{`${errorPagesTranslation("connexion")} - ${headerTranslation("service tagline")}`}</title>
</Helmet>
<Login surveyData={surveyData} />
<Login surveyData={surveyData} genericData={genericData} />
</div>
);
}
17 changes: 16 additions & 1 deletion src/types/ContentSurvey.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,26 @@ export type SurveyData = {
title: string;
body: string;
}[];
"faq-data-general"?: {
title: string;
body: string;
}[];
};
};

export type GenericData = {
//TODO
content: {
"faq-data": {
title: string;
body: string;
}[];
ineligible: {
body: string;
};
unauthorized: {
body: string;
};
};
};

export type Content = { generique: GenericData; specifique: SurveyData[] };

0 comments on commit 4a0a241

Please sign in to comment.