Skip to content

Commit

Permalink
feat: affiche page 404 si l'url de page demandée possède un datastore…
Browse files Browse the repository at this point in the history
…Id qui n'existe pas ou l'utilisateur n'en est pas membre
  • Loading branch information
ocruze committed Sep 18, 2024
1 parent 90b9a71 commit 80effd6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
9 changes: 8 additions & 1 deletion assets/components/Layout/DatastoreLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ import { BreadcrumbProps } from "@codegouvfr/react-dsfr/Breadcrumb";
import { useQuery } from "@tanstack/react-query";
import { FC, PropsWithChildren, memo, useMemo } from "react";

import { Datastore } from "../../@types/app";
import { datastoreNavItems } from "../../config/datastoreNavItems";
import api from "../../entrepot/api";
import RQKeys from "../../modules/entrepot/RQKeys";
import { CartesApiException } from "../../modules/jsonFetch";
import PageNotFound from "../../pages/error/PageNotFound";
import AppLayout from "./AppLayout";

type DatastoreLayoutProps = {
Expand All @@ -13,14 +16,18 @@ type DatastoreLayoutProps = {
customBreadcrumbProps?: BreadcrumbProps;
};
const DatastoreLayout: FC<PropsWithChildren<DatastoreLayoutProps>> = ({ datastoreId, documentTitle, customBreadcrumbProps, children }) => {
const datastoreQuery = useQuery({
const datastoreQuery = useQuery<Datastore, CartesApiException>({
queryKey: RQKeys.datastore(datastoreId),
queryFn: ({ signal }) => api.datastore.get(datastoreId, { signal }),
staleTime: 3600000,
});

const navItems = useMemo(() => datastoreNavItems(datastoreQuery.data), [datastoreQuery.data]);

if (datastoreQuery?.error?.code === 404 || datastoreQuery.failureReason?.code === 404) {
return <PageNotFound />;
}

return (
<AppLayout navItems={navItems} documentTitle={documentTitle} customBreadcrumbProps={customBreadcrumbProps}>
{children}
Expand Down
16 changes: 10 additions & 6 deletions src/Controller/Entrepot/DatastoreController.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,17 @@ public function __construct(
#[Route('/{datastoreId}', name: 'get', methods: ['GET'])]
public function getDatastore(string $datastoreId): JsonResponse
{
$datastore = $this->datastoreApiService->get($datastoreId);
$datastore['is_sandbox'] = $this->sandboxService->isSandboxDatastore($datastore['_id']);
if (true === $datastore['is_sandbox']) {
$datastore['name'] = 'Découverte';
}
try {
$datastore = $this->datastoreApiService->get($datastoreId);
$datastore['is_sandbox'] = $this->sandboxService->isSandboxDatastore($datastore['_id']);
if (true === $datastore['is_sandbox']) {
$datastore['name'] = 'Découverte';
}

return $this->json($datastore);
return $this->json($datastore);
} catch (ApiException $ex) {
throw new CartesApiException($ex->getMessage(), $ex->getStatusCode(), $ex->getDetails(), $ex);
}
}

#[Route('/{datastoreId}/endpoints', name: 'get_endpoints', methods: ['GET'])]
Expand Down

0 comments on commit 80effd6

Please sign in to comment.