Only show left sidebar toggle if there is a sidebar

Summary:
^

Not all selections have a left sidebar. If the current selection doesn't have one, it doesn't make sense to have the toggle sidebar button, so hide it.

Reviewed By: LukeDefeo

Differential Revision: D47593545

fbshipit-source-id: 940d59536e26bd1ab341d2038df431c67e0a5442
This commit is contained in:
Lorenzo Blasa
2023-07-20 04:48:20 -07:00
committed by Facebook GitHub Bot
parent 459f16022e
commit f566fed761
3 changed files with 30 additions and 11 deletions

View File

@@ -37,6 +37,7 @@ export type ShareType = {
} & SubShareType;
export type State = {
hasLeftSidebar: boolean;
leftSidebarVisible: boolean;
rightSidebarVisible: boolean;
rightSidebarAvailable: boolean;
@@ -48,6 +49,7 @@ export type State = {
};
type BooleanActionType =
| 'hasLeftSidebar'
| 'leftSidebarVisible'
| 'rightSidebarVisible'
| 'rightSidebarAvailable';
@@ -78,6 +80,7 @@ export type Action =
};
export const initialState: () => State = () => ({
hasLeftSidebar: true,
leftSidebarVisible: true,
rightSidebarVisible: true,
rightSidebarAvailable: false,
@@ -110,6 +113,7 @@ export default function reducer(
): State {
state = state || initialState();
if (
action.type === 'hasLeftSidebar' ||
action.type === 'leftSidebarVisible' ||
action.type === 'rightSidebarVisible' ||
action.type === 'rightSidebarAvailable'
@@ -175,6 +179,11 @@ export const toggleLeftSidebarVisible = (payload?: boolean): Action => ({
payload,
});
export const toggleHasLeftSidebar = (payload?: boolean): Action => ({
type: 'hasLeftSidebar',
payload,
});
export const toggleRightSidebarVisible = (payload?: boolean): Action => ({
type: 'rightSidebarVisible',
payload,

View File

@@ -246,10 +246,12 @@ function NotificationButton({
function LeftSidebarToggleButton() {
const dispatch = useDispatch();
const hasMainMenu = useStore((state) => state.application.hasLeftSidebar);
const mainMenuVisible = useStore(
(state) => state.application.leftSidebarVisible,
);
if (hasMainMenu) {
return (
<NavbarButton
label="Toggle Sidebar"
@@ -260,6 +262,9 @@ function LeftSidebarToggleButton() {
}}
/>
);
}
return null;
}
function RightSidebarToggleButton() {

View File

@@ -24,7 +24,10 @@ import {Navbar} from './Navbar';
import {useStore, useDispatch} from '../utils/useStore';
import {FlipperDevTools} from '../chrome/FlipperDevTools';
import {setStaticView} from '../reducers/connections';
import {toggleLeftSidebarVisible} from '../reducers/application';
import {
toggleHasLeftSidebar,
toggleLeftSidebarVisible,
} from '../reducers/application';
import {AppInspect} from './appinspect/AppInspect';
import PluginContainer from '../PluginContainer';
import {ContentContainer} from './ContentContainer';
@@ -79,6 +82,8 @@ export function SandyApp() {
// toggle sidebar visibility if needed
const hasLeftSidebar =
newSelection === 'appinspect' || newSelection === 'notification';
dispatch(toggleHasLeftSidebar(hasLeftSidebar));
if (hasLeftSidebar) {
if (newSelection === toplevelSelection) {
dispatch(toggleLeftSidebarVisible());