get current project id and folder id

This commit is contained in:
Takeshi Kimata
2024-02-19 20:36:27 +09:00
parent 31c74ae769
commit 60d5b6f031
4 changed files with 50 additions and 7 deletions

View File

@@ -2,13 +2,13 @@
import { Button } from "@nextui-org/react"; import { Button } from "@nextui-org/react";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
export default function Page() { export default function Page({ params }: { params: { projectId: string, folderId: string } }) {
const router = useRouter(); const router = useRouter();
return ( return (
<> <>
<Button <Button
className="ms-5 mt-3" className="ms-5 mt-3"
onClick={() => router.push(`/projects/1/folders/1/cases/`)} onClick={() => router.push(`/projects/${params.projectId}/folders/${params.folderId}/cases/`)}
> >
Back Back
</Button> </Button>

View File

@@ -32,7 +32,7 @@ async function fetchCases(url) {
} }
} }
export default function Page({ params }: { params: { folderId: string } }) { export default function Page({ params }: { params: { projectId: string, folderId: string } }) {
const router = useRouter(); const router = useRouter();
const [cases, setCases] = useState([]); const [cases, setCases] = useState([]);
const url = `${apiServer}/cases?folderId=${params.folderId}`; const url = `${apiServer}/cases?folderId=${params.folderId}`;
@@ -57,7 +57,7 @@ export default function Page({ params }: { params: { folderId: string } }) {
key={index} key={index}
onClick={() => onClick={() =>
router.push( router.push(
`/projects/1/folders/${params.folderId}/cases/${testCase.id}` `/projects/${params.projectId}/folders/${params.folderId}/cases/${testCase.id}`
) )
} }
> >

View File

@@ -2,8 +2,10 @@
import { Menu, MenuItem } from "@nextui-org/react"; import { Menu, MenuItem } from "@nextui-org/react";
import { HomeIcon, PagesIcon, PlayIcon } from "@/components/icons"; import { HomeIcon, PagesIcon, PlayIcon } from "@/components/icons";
import { useRouter } from "next/navigation"; import { useRouter } from "next/navigation";
import useGetCurrentIds from "@/utils/useGetCurrentIds";
export default function Sidebar() { export default function Sidebar() {
const { projectId } = useGetCurrentIds();
const router = useRouter(); const router = useRouter();
return ( return (
<div className="w-64 bg-white border-r-1"> <div className="w-64 bg-white border-r-1">
@@ -11,21 +13,21 @@ export default function Sidebar() {
<MenuItem <MenuItem
startContent={<HomeIcon size={28} />} startContent={<HomeIcon size={28} />}
className="p-3" className="p-3"
onClick={() => router.push("/projects/1/home")} onClick={() => router.push(`/projects/${projectId}/home`)}
> >
Home Home
</MenuItem> </MenuItem>
<MenuItem <MenuItem
startContent={<PagesIcon size={28} />} startContent={<PagesIcon size={28} />}
className="p-3" className="p-3"
onClick={() => router.push("/projects/1/folders")} onClick={() => router.push(`/projects/${projectId}/folders`)}
> >
Test Cases Test Cases
</MenuItem> </MenuItem>
<MenuItem <MenuItem
startContent={<PlayIcon size={28} />} startContent={<PlayIcon size={28} />}
className="p-3" className="p-3"
onClick={() => router.push("/projects/1/runs")} onClick={() => router.push(`/projects/${projectId}/runs`)}
> >
Test Runs Test Runs
</MenuItem> </MenuItem>

View File

@@ -0,0 +1,41 @@
'use client'
import { usePathname } from 'next/navigation'
import { useState, useEffect } from "react";
type ProjectFolderIds = {
projectId: number | null;
folderId: number | null;
};
/**
* Custom hook that extracts projectId and folderId from the current path.
* Example: For the path '/projects/1/folders/3/cases', projectId would be 1 and folderId would be 3.
*/
const useGetCurrentIds = (): ProjectFolderIds => {
const pathname = usePathname()
const [projectId, setProjectId] = useState<number | null>(null);
const [folderId, setFolderId] = useState<number | null>(null);
useEffect(() => {
const currentPath = pathname;
const pathSegments = currentPath.split("/").filter(Boolean);
const projectIdIndex = pathSegments.indexOf("projects") + 1;
const folderIdIndex = pathSegments.indexOf("folders") + 1;
const newProjectId =
projectIdIndex !== -1 ? parseInt(pathSegments[projectIdIndex], 10) : null;
const newFolderId =
folderIdIndex !== -1 ? parseInt(pathSegments[folderIdIndex], 10) : null;
setProjectId(newProjectId);
setFolderId(newFolderId);
}, [pathname]);
return {
projectId,
folderId,
};
};
export default useGetCurrentIds;