Files
pp-tcms/frontend/utils/useGetCurrentIds.ts
2024-05-19 21:04:45 +09:00

40 lines
1.2 KiB
TypeScript

'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;