Small optimization for faster loading (gaining ~80ms - average time of a click) It might seem a little over-engineered but there are a lot of edge cases and I couldn't find a simpler solution I also tried to tackle Link Chips but it's more complex so this will be for another PR
56 lines
2.2 KiB
TypeScript
56 lines
2.2 KiB
TypeScript
import { useOpenRecordsSearchPageInCommandMenu } from '@/command-menu/hooks/useOpenRecordsSearchPageInCommandMenu';
|
|
import { SettingsPath } from '@/types/SettingsPath';
|
|
import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem';
|
|
import { isNavigationDrawerExpandedState } from '@/ui/navigation/states/isNavigationDrawerExpanded';
|
|
import { navigationDrawerExpandedMemorizedState } from '@/ui/navigation/states/navigationDrawerExpandedMemorizedState';
|
|
import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState';
|
|
import { useLingui } from '@lingui/react/macro';
|
|
import { useLocation, useNavigate } from 'react-router-dom';
|
|
import { useRecoilState, useSetRecoilState } from 'recoil';
|
|
import { IconSearch, IconSettings } from 'twenty-ui/display';
|
|
import { useIsMobile } from 'twenty-ui/utilities';
|
|
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
|
|
|
|
export const MainNavigationDrawerFixedItems = () => {
|
|
const isMobile = useIsMobile();
|
|
const location = useLocation();
|
|
const setNavigationMemorizedUrl = useSetRecoilState(
|
|
navigationMemorizedUrlState,
|
|
);
|
|
|
|
const [isNavigationDrawerExpanded, setIsNavigationDrawerExpanded] =
|
|
useRecoilState(isNavigationDrawerExpandedState);
|
|
const setNavigationDrawerExpandedMemorized = useSetRecoilState(
|
|
navigationDrawerExpandedMemorizedState,
|
|
);
|
|
|
|
const navigate = useNavigate();
|
|
|
|
const { t } = useLingui();
|
|
|
|
const { openRecordsSearchPage } = useOpenRecordsSearchPageInCommandMenu();
|
|
return (
|
|
!isMobile && (
|
|
<>
|
|
<NavigationDrawerItem
|
|
label={t`Search`}
|
|
Icon={IconSearch}
|
|
onClick={openRecordsSearchPage}
|
|
keyboard={['/']}
|
|
/>
|
|
<NavigationDrawerItem
|
|
label={t`Settings`}
|
|
to={getSettingsPath(SettingsPath.ProfilePage)}
|
|
onClick={() => {
|
|
setNavigationDrawerExpandedMemorized(isNavigationDrawerExpanded);
|
|
setIsNavigationDrawerExpanded(true);
|
|
setNavigationMemorizedUrl(location.pathname + location.search);
|
|
navigate(getSettingsPath(SettingsPath.ProfilePage));
|
|
}}
|
|
Icon={IconSettings}
|
|
/>
|
|
</>
|
|
)
|
|
);
|
|
};
|