diff --git a/packages/twenty-front/src/hooks/useIsMatchingLocation.ts b/packages/twenty-front/src/hooks/useIsMatchingLocation.ts index 456efaf1a..70c175e3e 100644 --- a/packages/twenty-front/src/hooks/useIsMatchingLocation.ts +++ b/packages/twenty-front/src/hooks/useIsMatchingLocation.ts @@ -2,27 +2,31 @@ import { matchPath, useLocation } from 'react-router-dom'; import { AppBasePath } from '@/types/AppBasePath'; import { isNonEmptyString } from '@sniptt/guards'; +import { useCallback } from 'react'; import { isDefined } from 'twenty-shared/utils'; +const addTrailingSlash = (path: string) => + path.endsWith('/') ? path : path + '/'; + +const getConstructedPath = (path: string, basePath?: AppBasePath) => { + if (!isNonEmptyString(basePath)) return path; + + return addTrailingSlash(basePath) + path; +}; + export const useIsMatchingLocation = () => { const location = useLocation(); - const addTrailingSlash = (path: string) => - path.endsWith('/') ? path : path + '/'; - - const getConstructedPath = (path: string, basePath?: AppBasePath) => { - if (!isNonEmptyString(basePath)) return path; - - return addTrailingSlash(basePath) + path; - }; - - const isMatchingLocation = (path: string, basePath?: AppBasePath) => { - const match = matchPath( - getConstructedPath(path, basePath), - location.pathname, - ); - return isDefined(match); - }; + const isMatchingLocation = useCallback( + (path: string, basePath?: AppBasePath) => { + const match = matchPath( + getConstructedPath(path, basePath), + location.pathname, + ); + return isDefined(match); + }, + [location.pathname], + ); return { isMatchingLocation,