Add Opt-in Switch to Sandy UI

Summary:
With the new design from vpileggi, this diff separated a new app UI to the current one.

This diffs show the toggle switch to enable Sandy UI for devs who are in `flipper_sandy` GK. When toggled, it will bring Sandy UI up.

Reviewed By: mweststrate

Differential Revision: D23599398

fbshipit-source-id: d85c707e0fe7726a418b3551cedb36e455fb7d14
This commit is contained in:
Chaiwat Ekkaewnumchai
2020-09-10 02:10:30 -07:00
committed by Facebook GitHub Bot
parent deeb7a75d5
commit 1efb682737
5 changed files with 81 additions and 38 deletions

View File

@@ -25,6 +25,7 @@ import KeyboardShortcutInput from './settings/KeyboardShortcutInput';
import {isEqual} from 'lodash';
import restartFlipper from '../utils/restartFlipper';
import LauncherSettingsPanel from '../fb-stubs/LauncherSettingsPanel';
import SandySettingsPanel from '../fb-stubs/SandySettingsPanel';
import {reportUsage} from '../utils/metrics';
const Container = styled(FlexColumn)({
@@ -183,6 +184,17 @@ class SettingsSheet extends Component<Props, State> {
});
}}
/>
<SandySettingsPanel
toggled={this.state.updatedSettings.enableSandy}
onChange={(v) => {
this.setState({
updatedSettings: {
...this.state.updatedSettings,
enableSandy: v,
},
});
}}
/>
<ToggledSection
label="React Native keyboard shortcuts"
toggled={reactNative.shortcuts.enabled}

View File

@@ -0,0 +1,38 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import React from 'react';
import {useState, useEffect} from 'react';
import FlipperApp from '../App';
import WarningEmployee from '../chrome/WarningEmployee';
import fbConfig from '../fb-stubs/config';
import {isFBEmployee} from '../utils/fbEmployee';
import {Logger} from '../fb-interfaces/Logger';
type Props = {logger: Logger};
export default function App(props: Props) {
const [warnEmployee, setWarnEmployee] = useState(false);
useEffect(() => {
if (fbConfig.warnFBEmployees) {
isFBEmployee().then((isEmployee) => {
setWarnEmployee(isEmployee);
});
}
}, []);
return warnEmployee ? (
<WarningEmployee
onClick={() => {
setWarnEmployee(false);
}}
/>
) : (
<FlipperApp logger={props.logger} />
);
}

View File

@@ -0,0 +1,15 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
export default function (_props: {
toggled: boolean;
onChange: (value: boolean) => void;
}) {
return null;
}

View File

@@ -9,12 +9,11 @@
import {Provider} from 'react-redux';
import ReactDOM from 'react-dom';
import {useState, useEffect} from 'react';
import ContextMenuProvider from './ui/components/ContextMenuProvider';
import GK from './fb-stubs/GK';
import {init as initLogger} from './fb-stubs/Logger';
import App from './App';
import App from './fb-stubs/App';
import setupPrefetcher from './fb-stubs/Prefetcher';
import {persistStore} from 'redux-persist';
import {Store} from './reducers/index';
@@ -22,9 +21,6 @@ import dispatcher from './dispatcher/index';
import TooltipProvider from './ui/components/TooltipProvider';
import config from './utils/processConfig';
import {initLauncherHooks} from './utils/launcher';
import fbConfig from './fb-stubs/config';
import {isFBEmployee} from './utils/fbEmployee';
import WarningEmployee from './chrome/WarningEmployee';
import {setPersistor} from './utils/persistor';
import React from 'react';
import path from 'path';
@@ -59,38 +55,19 @@ enableMapSet();
GK.init();
const AppFrame = () => {
const [warnEmployee, setWarnEmployee] = useState(false);
useEffect(() => {
if (fbConfig.warnFBEmployees) {
isFBEmployee().then((isEmployee) => {
setWarnEmployee(isEmployee);
});
}
}, []);
return (
<TooltipProvider>
<PopoverProvider>
<ContextMenuProvider>
<Provider store={store}>
<CacheProvider value={cache}>
{warnEmployee ? (
<WarningEmployee
onClick={() => {
setWarnEmployee(false);
}}
/>
) : (
<App logger={logger} />
)}
</CacheProvider>
</Provider>
</ContextMenuProvider>
</PopoverProvider>
</TooltipProvider>
);
};
const AppFrame = () => (
<TooltipProvider>
<PopoverProvider>
<ContextMenuProvider>
<Provider store={store}>
<CacheProvider value={cache}>
<App logger={logger} />
</CacheProvider>
</Provider>
</ContextMenuProvider>
</PopoverProvider>
</TooltipProvider>
);
function setProcessState(store: Store) {
const settings = store.getState().settingsState;
@@ -116,7 +93,6 @@ function init() {
initializeFlipperLibImplementation(store, logger);
ReactDOM.render(<AppFrame />, document.getElementById('root'));
initLauncherHooks(config(), store);
const sessionId = store.getState().application.sessionId;
registerRecordingHooks(store);
enableConsoleHook();
window.flipperGlobalStoreDispatch = store.dispatch;

View File

@@ -43,6 +43,7 @@ export type Settings = {
openDevMenu: string;
};
};
enableSandy: boolean;
};
export type Action =
@@ -75,6 +76,7 @@ const initialState: Settings = {
openDevMenu: 'Alt+Shift+D',
},
},
enableSandy: false,
};
export default function reducer(