From 1b377aeb8eededf6c82a21b6b0459d1329cd6959 Mon Sep 17 00:00:00 2001 From: Omar Chehab Date: Fri, 3 Jul 2020 13:37:56 -0400 Subject: [PATCH] [FIX] Cannot open admin when server uses ROOT_URL with subpath (#18105) Closes: #18105 Related: #17801 Steps to reproduce: 1. Start server with ROOT_URL http://localhost:3000/rc 2. Navigate to /rc/admin Before: 3. Observe admin closes After: 3. Observe admin remains open Additional test cases: 1. Start server with ROOT_URL http://localhost:3000 2. Navigate to /admin 3. Observer admin remains open --- client/admin/sidebar/AdminSidebar.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client/admin/sidebar/AdminSidebar.js b/client/admin/sidebar/AdminSidebar.js index e0f334ada8a11..2c4ca26dbc316 100644 --- a/client/admin/sidebar/AdminSidebar.js +++ b/client/admin/sidebar/AdminSidebar.js @@ -9,6 +9,7 @@ import { useReactiveValue } from '../../hooks/useReactiveValue'; import { useSettings } from '../../contexts/SettingsContext'; import { useTranslation } from '../../contexts/TranslationContext'; import { useRoutePath, useCurrentRoute } from '../../contexts/RouterContext'; +import { useAbsoluteUrl } from '../../contexts/ServerContext'; import { useAtLeastOnePermission } from '../../contexts/AuthorizationContext'; import SettingsProvider from '../../providers/SettingsProvider'; import { sidebarItems } from '../sidebarItems'; @@ -175,12 +176,14 @@ export default React.memo(function AdminSidebar() { const currentRoute = useCurrentRoute(); const currentPath = useRoutePath(...currentRoute); + const absoluteUrl = useAbsoluteUrl(); useEffect(() => { - if (!currentPath.startsWith('/admin/')) { + const { pathname: adminPath } = new URL(absoluteUrl('admin/')); + if (!currentPath.startsWith(adminPath)) { SideNav.closeFlex(); } - }, [currentRoute, currentPath]); + }, [absoluteUrl, currentPath]); // TODO: uplift this provider return