migrate redux store

Summary: Migrating redux stores to TypeScript

Reviewed By: passy

Differential Revision: D16579796

fbshipit-source-id: e3e507f17f1bdd57eb45e30cb0b28aaee6c4521c
This commit is contained in:
Daniel Büchele
2019-08-08 08:01:55 -07:00
committed by Facebook Github Bot
parent 2c95ef6b25
commit 64cefd0f84
62 changed files with 241 additions and 245 deletions

View File

@@ -9,7 +9,6 @@ import React from 'react';
import {FlexColumn, FlexRow} from 'flipper';
import {connect} from 'react-redux';
import WelcomeScreen from './chrome/WelcomeScreen.tsx';
// $FlowFixMe T47375728
import TitleBar from './chrome/TitleBar.tsx';
import MainSidebar from './chrome/MainSidebar.js';
import BugReporterDialog from './chrome/BugReporterDialog.js';
@@ -23,6 +22,8 @@ import Sheet from './chrome/Sheet.js';
import {ipcRenderer, remote} from 'electron';
import PluginDebugger from './chrome/PluginDebugger.js';
import {
ShareType,
ActiveSheet,
ACTIVE_SHEET_BUG_REPORTER,
ACTIVE_SHEET_PLUGIN_DEBUGGER,
ACTIVE_SHEET_SHARE_DATA,
@@ -30,12 +31,10 @@ import {
ACTIVE_SHEET_SHARE_DATA_IN_FILE,
ACTIVE_SHEET_SELECT_PLUGINS_TO_EXPORT,
ACTIVE_SHEET_PLUGIN_SHEET,
} from './reducers/application.js';
import type {ShareType} from './reducers/application.js';
} from './reducers/application.tsx';
import type {Logger} from './fb-interfaces/Logger.js';
import type BugReporter from './fb-stubs/BugReporter.js';
import type BaseDevice from './devices/BaseDevice.js';
import type {ActiveSheet} from './reducers/application.js';
const version = remote.app.getVersion();
type OwnProps = {|

View File

@@ -9,17 +9,17 @@ import type {FlipperPlugin, FlipperBasePlugin} from './plugin.js';
import type BaseDevice from './devices/BaseDevice.js';
import type {App} from './App.js';
import type {Logger} from './fb-interfaces/Logger.js';
import type {Store} from './reducers/index.js';
import type {Store} from './reducers/index.tsx';
import type {OS} from './devices/BaseDevice.js';
import {FlipperDevicePlugin} from './plugin.js';
import {setPluginState} from './reducers/pluginStates.js';
import {setPluginState} from './reducers/pluginStates.tsx';
import {ReactiveSocket, PartialResponder} from 'rsocket-core';
// $FlowFixMe perf_hooks is a new API in node
import {performance} from 'perf_hooks';
import {reportPlatformFailures} from './utils/metrics';
import {reportPluginFailures} from './utils/metrics';
import {default as isProduction} from './utils/isProduction.js';
import {registerPlugins} from './reducers/plugins';
import {registerPlugins} from './reducers/plugins.tsx';
import createTableNativePlugin from './plugins/TableNativePlugin';
const EventEmitter = require('events');
@@ -71,7 +71,7 @@ const handleError = (store: Store, deviceSerial: ?string, error: ErrorType) => {
name: 'Plugin Error',
reason: JSON.stringify(error),
};
// $FlowFixMe: We checked persistedStateReducer exists
const newPluginState = crashReporterPlugin.persistedStateReducer(
persistedState,
'flipper-crash-report',

View File

@@ -12,8 +12,8 @@ import {
setActiveSheet,
setSelectPluginsToExportActiveSheet,
ACTIVE_SHEET_SHARE_DATA,
} from './reducers/application';
import type {Store} from './reducers/';
} from './reducers/application.tsx';
import type {Store} from './reducers/index.tsx';
import electron from 'electron';
import {ENABLE_SHAREABLE_LINK} from 'flipper';
export type DefaultKeyboardAction = 'clear' | 'goToBottom' | 'createPaste';

View File

@@ -11,7 +11,7 @@ import type {
FlipperPlugin,
Device,
} from 'flipper';
import type {PluginNotification} from './reducers/notifications';
import type {PluginNotification} from './reducers/notifications.tsx';
import type {Logger} from './fb-interfaces/Logger';
import {
@@ -35,8 +35,8 @@ import {
clearAllNotifications,
updatePluginBlacklist,
updateCategoryBlacklist,
} from './reducers/notifications';
import {selectPlugin} from './reducers/connections';
} from './reducers/notifications.tsx';
import {selectPlugin} from './reducers/connections.tsx';
import {textContent} from './utils/index';
import createPaste from './fb-stubs/createPaste';

View File

@@ -8,7 +8,7 @@ import type {FlipperPlugin, FlipperDevicePlugin} from './plugin.js';
import type {Logger} from './fb-interfaces/Logger';
import BaseDevice from './devices/BaseDevice.js';
import type {Props as PluginProps} from './plugin';
import {pluginKey as getPluginKey} from './reducers/pluginStates';
import {pluginKey as getPluginKey} from './reducers/pluginStates.tsx';
import Client from './Client.js';
import {
ErrorBoundary,
@@ -21,8 +21,8 @@ import {
} from 'flipper';
import React from 'react';
import {connect} from 'react-redux';
import {setPluginState} from './reducers/pluginStates.js';
import {selectPlugin} from './reducers/connections';
import {setPluginState} from './reducers/pluginStates.tsx';
import {selectPlugin} from './reducers/connections.tsx';
import NotificationsHub from './NotificationsHub';
import {activateMenuItems} from './MenuBar.js';

View File

@@ -8,7 +8,7 @@ import React from 'react';
import {App} from '../App.js';
import {Provider} from 'react-redux';
import renderer from 'react-test-renderer';
import reducers from '../reducers/index.js';
import reducers from '../reducers/index.tsx';
import configureStore from 'redux-mock-store';
import {init as initLogger} from '../fb-stubs/Logger';
import BugReporter from '../fb-stubs/BugReporter.js';

View File

@@ -7,7 +7,7 @@
import Server from '../server.js';
import {init as initLogger} from '../fb-stubs/Logger';
import reducers from '../reducers/index.js';
import reducers from '../reducers/index.tsx';
import {createStore} from 'redux';
import path from 'path';
import os from 'os';

View File

@@ -7,7 +7,7 @@
import {init as initLogger} from '../fb-stubs/Logger';
import Server from '../server';
import reducers from '../reducers/index.js';
import reducers from '../reducers/index.tsx';
import configureStore from 'redux-mock-store';
import path from 'path';
import os from 'os';

View File

@@ -9,7 +9,7 @@ import React from 'react';
import ReactDOM from 'react-dom';
import Sidebar from '../ui/components/Sidebar';
import {connect} from 'react-redux';
import {toggleRightSidebarAvailable} from '../reducers/application.js';
import {toggleRightSidebarAvailable} from '../reducers/application.tsx';
type OwnProps = {|
children: any,

View File

@@ -9,7 +9,7 @@ import {Component, Button, styled} from 'flipper';
import {connect} from 'react-redux';
import {spawn} from 'child_process';
import {dirname} from 'path';
import {selectDevice, preferDevice} from '../reducers/connections.js';
import {selectDevice, preferDevice} from '../reducers/connections.tsx';
import {default as which} from 'which';
import {promisify} from 'util';
import {showOpenDialog} from '../utils/exportData';

View File

@@ -6,17 +6,17 @@
*/
import {Component, connect} from 'flipper';
import type {ShareType} from '../reducers/application.js';
import type {State as PluginState} from '../reducers/plugins.js';
import type {State as PluginStatesState} from '../reducers/pluginStates.js';
import type {ActiveSheet} from '../reducers/application.js';
import {selectedPlugins as actionForSelectedPlugins} from '../reducers/plugins.js';
import type {ShareType} from '../reducers/application.tsx';
import type {State as PluginState} from '../reducers/plugins.tsx';
import type {State as PluginStatesState} from '../reducers/pluginStates.tsx';
import type {ActiveSheet} from '../reducers/application.tsx';
import {selectedPlugins as actionForSelectedPlugins} from '../reducers/plugins.tsx';
import {getActivePersistentPlugins} from '../utils/pluginUtils';
import {
ACTIVE_SHEET_SHARE_DATA,
setActiveSheet as getActiveSheetAction,
setExportDataToFileActiveSheet as getExportDataToFileActiveSheetAction,
} from '../reducers/application.js';
} from '../reducers/application.tsx';
import SelectPluginSheet from './SelectPluginSheet';
type OwnProps = {|

View File

@@ -10,8 +10,8 @@ import config from '../fb-stubs/config';
import type BaseDevice from '../devices/BaseDevice.js';
import type Client from '../Client.js';
import type {UninitializedClient} from '../UninitializedClient.js';
import type {PluginNotification} from '../reducers/notifications';
import type {ActiveSheet} from '../reducers/application';
import type {PluginNotification} from '../reducers/notifications.tsx';
import type {ActiveSheet} from '../reducers/application.tsx';
import {
PureComponent,
@@ -31,8 +31,8 @@ import {
} from 'flipper';
import React from 'react';
import NotificationsHub from '../NotificationsHub.js';
import {selectPlugin} from '../reducers/connections.js';
import {setActiveSheet} from '../reducers/application.js';
import {selectPlugin} from '../reducers/connections.tsx';
import {setActiveSheet} from '../reducers/application.tsx';
import UserAccount from './UserAccount.tsx';
import {connect} from 'react-redux';

View File

@@ -17,7 +17,10 @@ import {
Spacer,
Input,
} from 'flipper';
import {setExportStatusComponent, unsetShare} from '../reducers/application';
import {
setExportStatusComponent,
unsetShare,
} from '../reducers/application.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import {Idler} from '../utils/Idler';
import {shareFlipperData} from '../fb-stubs/user';

View File

@@ -15,7 +15,10 @@ import {
FlexRow,
Spacer,
} from 'flipper';
import {setExportStatusComponent, unsetShare} from '../reducers/application';
import {
setExportStatusComponent,
unsetShare,
} from '../reducers/application.tsx';
import {reportPlatformFailures} from '../utils/metrics';
import CancellableExportStatus from './CancellableExportStatus';
// $FlowFixMe: Missing type defs for node built-in.

View File

@@ -7,13 +7,13 @@
import {Component} from 'react';
import {Transition} from 'react-transition-group';
import {setActiveSheet} from '../reducers/application.js';
import {setActiveSheet} from '../reducers/application.tsx';
import {connect} from 'react-redux';
import {styled} from 'flipper';
import {PLUGIN_SHEET_ELEMENT_ID} from '../ui/components/Sheet';
import {ACTIVE_SHEET_PLUGIN_SHEET} from '../reducers/application';
import {ACTIVE_SHEET_PLUGIN_SHEET} from '../reducers/application.tsx';
import type {ActiveSheet} from '../reducers/application';
import type {ActiveSheet} from '../reducers/application.tsx';
const DialogContainer = styled('div')(({state}) => ({
transform: `translate(-50%, ${

View File

@@ -18,7 +18,7 @@ import {
colors,
} from 'flipper';
import {writeKeychain, getUser} from '../fb-stubs/user';
import {login} from '../reducers/user';
import {login} from '../reducers/user.tsx';
import {connect} from 'react-redux';
const Container = styled(FlexColumn)({

View File

@@ -5,8 +5,16 @@
* @format
*/
import {ActiveSheet, LauncherMsg, ShareType} from '../reducers/application.js';
import {
ActiveSheet,
LauncherMsg,
ShareType,
setActiveSheet,
toggleLeftSidebarVisible,
toggleRightSidebarVisible,
ACTIVE_SHEET_BUG_REPORTER,
setFlipperRating,
} from '../reducers/application';
import {
colors,
Button,
@@ -18,13 +26,6 @@ import {
LoadingIndicator,
} from 'flipper';
import {connect} from 'react-redux';
import {
setActiveSheet,
toggleLeftSidebarVisible,
toggleRightSidebarVisible,
ACTIVE_SHEET_BUG_REPORTER,
setFlipperRating,
} from '../reducers/application.js';
import RatingButton from './RatingButton.js';
import DevicesButton from './DevicesButton.js';
import ScreenCaptureButtons from './ScreenCaptureButtons.js';
@@ -35,6 +36,7 @@ import {isAutoUpdaterEnabled} from '../utils/argvUtils.js';
import isProduction from '../utils/isProduction.js';
import {clipboard} from 'electron';
import React from 'react';
import {State} from 'src/reducers';
const AppTitleBar = styled(FlexRow)(({focused}) => ({
background: focused
@@ -118,7 +120,7 @@ const Importing = styled(FlexRow)({
function statusMessageComponent(
downloadingImportData: boolean,
statusComponent?: React.ReactElement<any> | undefined,
statusComponent?: React.ReactNode | undefined,
) {
if (downloadingImportData) {
return (
@@ -192,9 +194,7 @@ class TitleBar extends React.Component<Props, StateFromProps> {
}
}
// @TODO: TS_MIGRATION
type Store = any;
export default connect<StateFromProps, DispatchFromProps, OwnProps, Store>(
export default connect<StateFromProps, DispatchFromProps, OwnProps, State>(
({
application: {
windowIsFocused,

View File

@@ -5,9 +5,9 @@
* @format
*/
import {LauncherMsg} from '../reducers/application.js';
import {LauncherMsg} from '../reducers/application';
import {colors, FlexRow, Glyph, styled} from 'flipper';
import React, {Component} from 'react';
import React from 'react';
const Container = styled(FlexRow)({
alignItems: 'center',
@@ -27,7 +27,7 @@ function getSeverityColor(severity: 'warning' | 'error'): string {
}
}
export default class UpdateIndicator extends Component<Props> {
export default class UpdateIndicator extends React.Component<Props> {
render() {
if (this.props.launcherMsg.message.length == 0) {
return null;

View File

@@ -10,7 +10,7 @@ import {ActiveSheet} from '../reducers/application';
import {styled, FlexRow, Glyph, Text, colors} from 'flipper';
import {logout} from '../reducers/user';
import {setActiveSheet, ACTIVE_SHEET_SIGN_IN} from '../reducers/application.js';
import {setActiveSheet, ACTIVE_SHEET_SIGN_IN} from '../reducers/application';
import {connect} from 'react-redux';
import electron from 'electron';
import {findDOMNode} from 'react-dom';

View File

@@ -5,10 +5,9 @@
* @format
*/
// $FlowFixMe T47375728
import TitleBar from '../TitleBar.tsx';
import renderer from 'react-test-renderer';
import reducers from '../../reducers/index.js';
import reducers from '../../reducers/index.tsx';
import configureStore from 'redux-mock-store';
import {Provider} from 'react-redux';

View File

@@ -14,7 +14,7 @@ import dispatcher, {
import path from 'path';
import {remote} from 'electron';
import {FlipperPlugin} from '../../plugin';
import reducers from '../../reducers/index.js';
import reducers from '../../reducers/index.tsx';
import {init as initLogger} from '../../fb-stubs/Logger.js';
import configureStore from 'redux-mock-store';
import {TEST_PASSING_GK, TEST_FAILING_GK} from '../../fb-stubs/GK';

View File

@@ -7,14 +7,14 @@
import AndroidDevice from '../devices/AndroidDevice';
import child_process from 'child_process';
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type BaseDevice from '../devices/BaseDevice';
import type {Logger} from '../fb-interfaces/Logger.js';
import {registerDeviceCallbackOnPlugins} from '../utils/onRegisterDevice.js';
import {getAdbClient} from '../utils/adbClient';
import {default as which} from 'which';
import {promisify} from 'util';
import type {ServerPorts} from '../reducers/application';
import type {ServerPorts} from '../reducers/application.tsx';
function createDevice(
adbClient: any,

View File

@@ -6,9 +6,9 @@
*/
import {remote, ipcRenderer} from 'electron';
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import {toggleAction} from '../reducers/application';
import {toggleAction} from '../reducers/application.tsx';
import {parseFlipperPorts} from '../utils/environmentVariables';
import {
importDataToStore,
@@ -17,7 +17,7 @@ import {
} from '../utils/exportData';
import {tryCatchReportPlatformFailures} from '../utils/metrics';
import {selectPlugin} from '../reducers/connections';
import {selectPlugin} from '../reducers/connections.tsx';
import qs from 'query-string';
export const uriComponents = (url: string) => {

View File

@@ -5,7 +5,7 @@
* @format
*/
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import MacDevice from '../devices/MacDevice';

View File

@@ -6,7 +6,7 @@
*/
import type {ChildProcess} from 'child_process';
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import type {DeviceType} from '../devices/BaseDevice';
import {promisify} from 'util';

View File

@@ -16,7 +16,7 @@ import plugins from './plugins';
import user from './user';
import type {Logger} from '../fb-interfaces/Logger.js';
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Dispatcher} from './types';
export default function(store: Store, logger: Logger): () => Promise<void> {

View File

@@ -5,18 +5,18 @@
* @format
*/
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import type {PluginNotification} from '../reducers/notifications';
import type {PluginNotification} from '../reducers/notifications.tsx';
import type {FlipperPlugin, FlipperDevicePlugin} from '../plugin.js';
import isHeadless from '../utils/isHeadless.js';
import {ipcRenderer} from 'electron';
import {selectPlugin} from '../reducers/connections';
import {selectPlugin} from '../reducers/connections.tsx';
import {
setActiveNotifications,
updatePluginBlacklist,
updateCategoryBlacklist,
} from '../reducers/notifications';
} from '../reducers/notifications.tsx';
import {textContent} from '../utils/index';
import GK from '../fb-stubs/GK';

View File

@@ -5,10 +5,10 @@
* @format
*/
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import type {FlipperPlugin, FlipperDevicePlugin} from '../plugin.js';
import type {State} from '../reducers/plugins';
import type {State} from '../reducers/plugins.tsx';
import React from 'react';
import ReactDOM from 'react-dom';
@@ -18,7 +18,7 @@ import {
addGatekeepedPlugins,
addDisabledPlugins,
addFailedPlugins,
} from '../reducers/plugins';
} from '../reducers/plugins.tsx';
import {remote} from 'electron';
import GK from '../fb-stubs/GK';
import {FlipperBasePlugin} from '../plugin.js';

View File

@@ -7,7 +7,7 @@
import Server from '../server.js';
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import type Client from '../Client.js';
import type {UninitializedClient} from '../UninitializedClient';

View File

@@ -9,7 +9,7 @@ import {ipcRenderer} from 'electron';
// $FlowFixMe perf_hooks is a new API in node
import {performance} from 'perf_hooks';
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import type Client from '../Client';

View File

@@ -4,7 +4,7 @@
* LICENSE file in the root directory of this source tree.
* @format
*/
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger';
export type Dispatcher = (store: Store, logger: Logger) => ?() => Promise<void>;

View File

@@ -5,9 +5,9 @@
* @format
*/
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import type {Logger} from '../fb-interfaces/Logger.js';
import {login} from '../reducers/user';
import {login} from '../reducers/user.tsx';
import {getUser, logoutUser} from '../fb-stubs/user';
export default (store: Store, logger: Logger) => {

View File

@@ -7,7 +7,7 @@
import type {Logger} from '../fb-interfaces/Logger';
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
export default class BugReporter {
constructor(logManager: Logger, store: Store) {}

View File

@@ -6,7 +6,7 @@
*/
import type {TrackType, Logger} from '../fb-interfaces/Logger';
import type {Store} from '../reducers/index';
import type {Store} from '../reducers/index.tsx';
import ScribeLogger from './ScribeLogger';
let instance: ?StubLogger = null;

View File

@@ -24,10 +24,10 @@ export {clipboard} from 'electron';
export * from './fb-stubs/constants.js';
export * from './fb-stubs/createPaste.js';
export {connect} from 'react-redux';
export {selectPlugin} from './reducers/connections';
export {selectPlugin} from './reducers/connections.tsx';
export {getPluginKey, getPersistedState} from './utils/pluginUtils.js';
export {default as BaseDevice} from './devices/BaseDevice.js';
export type {Store, MiddlewareAPI} from './reducers/index.js';
export type {Store, MiddlewareAPI} from './reducers/index.tsx';
export {
default as SidebarExtensions,

View File

@@ -15,7 +15,7 @@ import BugReporter from './fb-stubs/BugReporter.js';
import setupPrefetcher from './fb-stubs/Prefetcher.js';
import {createStore} from 'redux';
import {persistStore} from 'redux-persist';
import reducers from './reducers/index.js';
import reducers from './reducers/index.tsx';
import dispatcher from './dispatcher/index.js';
import TooltipProvider from './ui/components/TooltipProvider.js';
import config from './utils/processConfig.js';

View File

@@ -9,7 +9,7 @@ import type {KeyboardActions} from './MenuBar.js';
import type {App} from './App.js';
import type {Logger} from './fb-interfaces/Logger.js';
import type Client from './Client.js';
import type {Store, MiddlewareAPI} from './reducers/index.js';
import type {Store, MiddlewareAPI} from './reducers/index.tsx';
import type {MetricType} from './utils/exportMetrics.js';
import React from 'react';
import type {Node} from 'react';

View File

@@ -7,7 +7,7 @@
import reducer from '../connections';
import BaseDevice from '../../devices/BaseDevice';
import type {State} from '../connections';
import {State} from '../connections';
test('REGISTER_DEVICE doesnt remove error', () => {
const initialState: State = reducer(undefined, {

View File

@@ -5,7 +5,7 @@
* @format
*/
import type {State} from '../notifications';
import {State} from '../notifications';
import {
default as reducer,

View File

@@ -5,8 +5,7 @@
* @format
*/
import {default as reducer, setPluginState} from '../pluginStates';
import type {Action} from '../pluginStates';
import {default as reducer, setPluginState, Action} from '../pluginStates';
test('reduce setPluginState', () => {
const result = reducer(

View File

@@ -83,7 +83,6 @@ test('do not add other classes', () => {
disabledPlugins: [],
selectedPlugins: [],
},
// $FlowFixMe testing wrong classes on purpose here
registerPlugins([testBasePlugin]),
);
expect(res.devicePlugins.size).toEqual(0);

View File

@@ -8,7 +8,7 @@
import {default as reducer, login, logout} from '../user';
test('login', () => {
const userData = {username: 'Jane Doe'};
const userData = {name: 'Jane Doe'};
const res = reducer({}, login(userData));
expect(res).toEqual(userData);
});
@@ -16,7 +16,7 @@ test('login', () => {
test('logout', () => {
const res = reducer(
{
username: 'Jane Doe',
name: 'Jane Doe',
},
logout(),
);

View File

@@ -7,8 +7,7 @@
import {remote} from 'electron';
import uuidv1 from 'uuid/v1';
import {type Element as ReactElement} from 'react';
import CancellableExportStatus from '../chrome/CancellableExportStatus';
export const ACTIVE_SHEET_PLUGIN_SHEET: 'PLUGIN_SHEET' = 'PLUGIN_SHEET';
export const ACTIVE_SHEET_BUG_REPORTER: 'BUG_REPORTER' = 'BUG_REPORTER';
export const ACTIVE_SHEET_PLUGIN_DEBUGGER: 'PLUGIN_DEBUGGER' =
@@ -42,12 +41,16 @@ export type ServerPorts = {
secure: number,
};
type SubShareType = {type: 'file', file: string} | {type: 'link'};
type SubShareType =
| {
type: 'file',
file: string,
}
| {type: 'link'};
export type ShareType = {
statusComponent?: ReactElement<typeof CancellableExportStatus>,
...SubShareType,
};
statusComponent?: React.ReactNode,
} & SubShareType;
export type State = {
leftSidebarVisible: boolean,
@@ -55,12 +58,12 @@ export type State = {
rightSidebarAvailable: boolean,
windowIsFocused: boolean,
activeSheet: ActiveSheet,
share: ?ShareType,
sessionId: ?string,
share: ShareType | null,
sessionId: string | null,
serverPorts: ServerPorts,
downloadingImportData: boolean,
launcherMsg: LauncherMsg,
flipperRating: ?number,
flipperRating: number | null,
};
type BooleanActionType =
@@ -108,11 +111,11 @@ export type Action =
},
}
| {
type: typeof UNSET_SHARE,
type: 'UNSET_SHARE',
}
| {
type: typeof SET_EXPORT_STATUS_MESSAGE,
payload: ReactElement<typeof CancellableExportStatus>,
type: 'SET_EXPORT_STATUS_MESSAGE',
payload: React.ReactNode,
};
const initialState: () => State = () => ({
@@ -195,7 +198,6 @@ export default function reducer(state: State, action: Action): State {
const {share} = state;
return {
...state,
//$FlowFixMe: T48110490, its not able to understand for which case it needs to apply the changes
share: {...share, statusComponent: action.payload},
};
}
@@ -215,17 +217,6 @@ export const toggleAction = (
payload,
});
export const unsetShare = (): Action => ({
type: UNSET_SHARE,
});
export const setExportStatusComponent = (
payload: ReactElement<typeof CancellableExportStatus>,
): Action => ({
type: SET_EXPORT_STATUS_MESSAGE,
payload,
});
export const setSelectPluginsToExportActiveSheet = (
payload: ShareType,
): Action => ({

View File

@@ -5,33 +5,32 @@
* @format
*/
import type BaseDevice from '../devices/BaseDevice';
import BaseDevice from '../devices/BaseDevice';
import MacDevice from '../devices/MacDevice';
import type Client from '../Client';
import type {UninitializedClient} from '../UninitializedClient';
import Client from '../Client';
import {UninitializedClient} from '../UninitializedClient';
import {isEqual} from 'lodash';
import iosUtil from '../fb-stubs/iOSContainerUtility';
// $FlowFixMe perf_hooks is a new API in node
import {performance} from 'perf_hooks';
export type State = {|
export type State = {
devices: Array<BaseDevice>,
androidEmulators: Array<string>,
selectedDevice: ?BaseDevice,
selectedPlugin: ?string,
selectedApp: ?string,
userPreferredDevice: ?string,
userPreferredPlugin: ?string,
userPreferredApp: ?string,
error: ?string,
selectedDevice: null | BaseDevice,
selectedPlugin: null | string,
selectedApp: null | string,
userPreferredDevice: null | string,
userPreferredPlugin: null | string,
userPreferredApp: null | string,
error: null | string,
clients: Array<Client>,
uninitializedClients: Array<{
client: UninitializedClient,
deviceId?: string,
errorMessage?: string,
}>,
deepLinkPayload: ?string,
|};
deepLinkPayload: null | string,
};
export type Action =
| {
@@ -52,11 +51,11 @@ export type Action =
}
| {
type: 'SELECT_PLUGIN',
payload: {|
selectedPlugin: ?string,
selectedApp: ?string,
deepLinkPayload: ?string,
|},
payload: {
selectedPlugin: null | string,
selectedApp?: null | string,
deepLinkPayload: null | string,
},
}
| {
type: 'SELECT_USER_PREFERRED_PLUGIN',
@@ -64,7 +63,7 @@ export type Action =
}
| {
type: 'SERVER_ERROR',
payload: ?string,
payload: null | string,
}
| {
type: 'NEW_CLIENT',
@@ -138,7 +137,7 @@ const reducer = (state: State = INITAL_STATE, action: Action): State => {
let {selectedDevice, selectedPlugin} = state;
// select the default plugin
let selection = {
let selection: Partial<State> = {
selectedApp: null,
selectedPlugin: DEFAULT_PLUGIN,
};
@@ -270,7 +269,7 @@ const reducer = (state: State = INITAL_STATE, action: Action): State => {
case 'CLIENT_REMOVED': {
const {payload} = action;
const selected = {};
const selected: Partial<State> = {};
if (state.selectedApp === payload) {
selected.selectedApp = null;
selected.selectedPlugin = DEFAULT_PLUGIN;
@@ -374,11 +373,11 @@ export const preferDevice = (payload: string): Action => ({
payload,
});
export const selectPlugin = (payload: {|
selectedPlugin: ?string,
selectedApp?: ?string,
deepLinkPayload: ?string,
|}): Action => ({
export const selectPlugin = (payload: {
selectedPlugin: null | string,
selectedApp?: null | string,
deepLinkPayload: null | string,
}): Action => ({
type: 'SELECT_PLUGIN',
payload,
});

View File

@@ -5,42 +5,33 @@
* @format
*/
import {combineReducers} from 'redux';
import application from './application.js';
import connections from './connections.js';
import pluginStates from './pluginStates.js';
import notifications from './notifications.js';
import plugins from './plugins.js';
import user from './user.js';
import {combineReducers, Dispatch} from 'redux';
import application, {
State as ApplicationState,
Action as ApplicationAction,
} from './application';
import connections, {
State as DevicesState,
Action as DevicesAction,
} from './connections';
import pluginStates, {
State as PluginStatesState,
Action as PluginStatesAction,
} from './pluginStates';
import notifications, {
State as NotificationsState,
Action as NotificationsAction,
} from './notifications';
import plugins, {
State as PluginsState,
Action as PluginsAction,
} from './plugins';
import user, {State as UserState, Action as UserAction} from './user';
import {persistReducer} from 'redux-persist';
import storage from 'redux-persist/lib/storage/index.js';
import type {
State as ApplicationState,
Action as ApplicationAction,
} from './application.js';
import type {
State as DevicesState,
Action as DevicesAction,
} from './connections.js';
import type {
State as PluginStatesState,
Action as PluginStatesAction,
} from './pluginStates.js';
import type {
State as NotificationsState,
Action as NotificationsAction,
} from './notifications.js';
import type {
State as PluginsState,
Action as PluginsAction,
} from './plugins.js';
import type {State as UserState, Action as UserAction} from './user.js';
import type {
Store as ReduxStore,
MiddlewareAPI as ReduxMiddlewareAPI,
} from 'redux';
import {Store as ReduxStore, MiddlewareAPI as ReduxMiddlewareAPI} from 'redux';
type Actions =
| ApplicationAction
@@ -49,21 +40,21 @@ type Actions =
| NotificationsAction
| PluginsAction
| UserAction
| {|type: 'INIT'|};
| {type: 'INIT'};
export type State = {|
export type State = {
application: ApplicationState,
connections: DevicesState,
pluginStates: PluginStatesState,
notifications: NotificationsState,
plugins: PluginsState,
user: UserState,
|};
};
export type Store = ReduxStore<State, Actions>;
export type MiddlewareAPI = ReduxMiddlewareAPI<State, Actions>;
export type MiddlewareAPI = ReduxMiddlewareAPI<Dispatch<Actions>, State>;
export default combineReducers<_, Actions>({
export default combineReducers<State, Actions>({
application: persistReducer(
{
key: 'application',

View File

@@ -4,13 +4,13 @@
* LICENSE file in the root directory of this source tree.
* @format
*/
import type {Notification} from '../plugin';
import {Notification} from '../plugin';
export type PluginNotification = {|
export type PluginNotification = {
notification: Notification,
pluginId: string,
client: ?string,
|};
client: null | string,
};
export type State = {
activeNotifications: Array<PluginNotification>,
@@ -24,7 +24,7 @@ type ActiveNotificationsAction = {
type: 'SET_ACTIVE_NOTIFICATIONS',
payload: {
notifications: Array<Notification>,
client: ?string,
client: null | string,
pluginId: string,
},
};
@@ -37,7 +37,7 @@ export type Action =
type: 'SET_ACTIVE_NOTIFICATIONS',
payload: {
notifications: Array<Notification>,
client: ?string,
client: null | string,
pluginId: string,
},
}
@@ -139,7 +139,7 @@ function activeNotificationsReducer(
export function setActiveNotifications(payload: {
notifications: Array<Notification>,
client: ?string,
client: null | string,
pluginId: string,
}): Action {
return {
@@ -154,14 +154,14 @@ export function clearAllNotifications(): Action {
};
}
export function updatePluginBlacklist(payload: Array<string>) {
export function updatePluginBlacklist(payload: Array<string>): Action {
return {
type: 'UPDATE_PLUGIN_BLACKLIST',
payload,
};
}
export function updateCategoryBlacklist(payload: Array<string>) {
export function updateCategoryBlacklist(payload: Array<string>): Action {
return {
type: 'UPDATE_CATEGORY_BLACKLIST',
payload,

View File

@@ -6,19 +6,18 @@
*/
import {FlipperPlugin, FlipperDevicePlugin} from '../plugin.js';
import type {PluginDefinition} from '../dispatcher/plugins';
import {PluginDefinition} from '../dispatcher/plugins';
export type State = {
devicePlugins: Map<string, Class<FlipperDevicePlugin<>>>,
clientPlugins: Map<string, Class<FlipperPlugin<>>>,
devicePlugins: Map<string, typeof FlipperDevicePlugin>,
clientPlugins: Map<string, typeof FlipperPlugin>,
gatekeepedPlugins: Array<PluginDefinition>,
disabledPlugins: Array<PluginDefinition>,
failedPlugins: Array<[PluginDefinition, string]>,
selectedPlugins: Array<string>,
};
type P = Class<FlipperPlugin<> | FlipperDevicePlugin<>>;
type P = typeof FlipperPlugin | typeof FlipperDevicePlugin;
export type Action =
| {

View File

@@ -8,7 +8,7 @@
import type {SecureServerConfig} from './utils/CertificateProvider';
import type {Logger} from './fb-interfaces/Logger';
import type {ClientQuery} from './Client.js';
import type {Store} from './reducers/index.js';
import type {Store} from './reducers/index.tsx';
import CertificateProvider from './utils/CertificateProvider';
import {RSocketServer, ReactiveSocket} from 'rsocket-core';

View File

@@ -11,9 +11,9 @@ import {connect} from 'react-redux';
import {
ACTIVE_SHEET_PLUGIN_SHEET,
setActiveSheet,
} from '../../reducers/application.js';
} from '../../reducers/application.tsx';
import type {ActiveSheet} from '../../reducers/application';
import type {ActiveSheet} from '../../reducers/application.tsx';
export const PLUGIN_SHEET_ELEMENT_ID = 'pluginSheetContents';

View File

@@ -6,11 +6,11 @@
*/
import {getPersistentPlugins, getActivePersistentPlugins} from '../pluginUtils';
import type {State as PluginsState} from '../../reducers/plugins.js';
import type {State as PluginStatesState} from '../../reducers/pluginStates.js';
import type {State as PluginsState} from '../../reducers/plugins.tsx';
import type {State as PluginStatesState} from '../../reducers/pluginStates.tsx';
import type {PluginDefinition} from '../../dispatcher/plugins';
import {FlipperBasePlugin} from '../../..';
import type {MiddlewareAPI} from '../../reducers/index.js';
import type {MiddlewareAPI} from '../../reducers/index.tsx';
class MockFlipperPluginWithDefaultPersistedState extends FlipperBasePlugin<
*,
*,
@@ -46,15 +46,11 @@ function mockPluginState(
): PluginsState {
return {
devicePlugins: new Map([
//$FlowFixMe: Just for testing
['DevicePlugin1', MockFlipperPluginWithDefaultPersistedState],
//$FlowFixMe: Just for testing
['DevicePlugin2', MockFlipperPluginWithDefaultPersistedState],
]),
clientPlugins: new Map([
//$FlowFixMe: Just for testing
['ClientPlugin1', MockFlipperPluginWithDefaultPersistedState],
//$FlowFixMe: Just for testing
['ClientPlugin2', MockFlipperPluginWithDefaultPersistedState],
]),
gatekeepedPlugins,
@@ -95,15 +91,11 @@ test('getPersistentPlugins with no plugins getting excluded', () => {
test('getPersistentPlugins, where the plugins with exportPersistedState not getting excluded', () => {
const state: PluginsState = {
devicePlugins: new Map([
//$FlowFixMe: Just for testing
['DevicePlugin1', MockFlipperPluginWithExportPersistedState],
//$FlowFixMe: Just for testing
['DevicePlugin2', MockFlipperPluginWithExportPersistedState],
]),
clientPlugins: new Map([
//$FlowFixMe: Just for testing
['ClientPlugin1', MockFlipperPluginWithExportPersistedState],
//$FlowFixMe: Just for testing
['ClientPlugin2', MockFlipperPluginWithExportPersistedState],
]),
gatekeepedPlugins: [],
@@ -123,15 +115,11 @@ test('getPersistentPlugins, where the plugins with exportPersistedState not gett
test('getPersistentPlugins, where the non persistent plugins getting excluded', () => {
const state: PluginsState = {
devicePlugins: new Map([
//$FlowFixMe: Just for testing
['DevicePlugin1', MockFlipperPluginWithNoPersistedState],
//$FlowFixMe: Just for testing
['DevicePlugin2', MockFlipperPluginWithDefaultPersistedState],
]),
clientPlugins: new Map([
//$FlowFixMe: Just for testing
['ClientPlugin1', MockFlipperPluginWithDefaultPersistedState],
//$FlowFixMe: Just for testing
['ClientPlugin2', MockFlipperPluginWithNoPersistedState],
]),
gatekeepedPlugins: [],
@@ -146,15 +134,11 @@ test('getPersistentPlugins, where the non persistent plugins getting excluded',
test('getActivePersistentPlugins, where the non persistent plugins getting excluded', () => {
const state: PluginsState = {
devicePlugins: new Map([
//$FlowFixMe: Just for testing
['DevicePlugin1', MockFlipperPluginWithNoPersistedState],
//$FlowFixMe: Just for testing
['DevicePlugin2', MockFlipperPluginWithDefaultPersistedState],
]),
clientPlugins: new Map([
//$FlowFixMe: Just for testing
['ClientPlugin1', MockFlipperPluginWithDefaultPersistedState],
//$FlowFixMe: Just for testing
['ClientPlugin2', MockFlipperPluginWithNoPersistedState],
]),
gatekeepedPlugins: [],
@@ -175,15 +159,11 @@ test('getActivePersistentPlugins, where the non persistent plugins getting exclu
test('getActivePersistentPlugins, where the plugins not in pluginState gets excluded', () => {
const state: PluginsState = {
devicePlugins: new Map([
//$FlowFixMe: Just for testing
['DevicePlugin1', MockFlipperPluginWithDefaultPersistedState],
//$FlowFixMe: Just for testing
['DevicePlugin2', MockFlipperPluginWithDefaultPersistedState],
]),
clientPlugins: new Map([
//$FlowFixMe: Just for testing
['ClientPlugin1', MockFlipperPluginWithDefaultPersistedState],
//$FlowFixMe: Just for testing
['ClientPlugin2', MockFlipperPluginWithDefaultPersistedState],
]),
gatekeepedPlugins: [],

View File

@@ -5,13 +5,13 @@
* @format
*/
import {getInstance as getLogger} from '../fb-stubs/Logger';
import type {Store, MiddlewareAPI} from '../reducers';
import type {Store, MiddlewareAPI} from '../reducers.tsx';
import type {DeviceExport} from '../devices/BaseDevice';
import type {State as PluginStates} from '../reducers/pluginStates';
import type {PluginNotification} from '../reducers/notifications.js';
import type {State as PluginStates} from '../reducers/pluginStates.tsx';
import type {PluginNotification} from '../reducers/notifications.tsx';
import type {ClientExport} from '../Client.js';
import type {State as PluginStatesState} from '../reducers/pluginStates';
import {pluginKey} from '../reducers/pluginStates';
import type {State as PluginStatesState} from '../reducers/pluginStates.tsx';
import {pluginKey} from '../reducers/pluginStates.tsx';
import {FlipperDevicePlugin, FlipperPlugin, callClient} from '../plugin.js';
import {default as BaseDevice} from '../devices/BaseDevice';
import {default as ArchivedDevice} from '../devices/ArchivedDevice';

View File

@@ -6,8 +6,8 @@
*/
import type {FlipperPlugin, FlipperDevicePlugin} from 'flipper';
import {serialize} from './serialization';
import type {State as PluginStatesState} from '../reducers/pluginStates';
import type {Store} from '../reducers';
import type {State as PluginStatesState} from '../reducers/pluginStates.tsx';
import type {Store} from '../reducers/index.tsx';
import fs from 'fs';
import type {ExportType} from './exportData';
import {fetchMetadata, pluginsClassMap} from './exportData';

View File

@@ -6,7 +6,7 @@
*/
import type {ProcessConfig} from './processConfig.js';
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
export function initLauncherHooks(config: ProcessConfig, store: Store) {
if (config.launcherMsg) {

View File

@@ -4,10 +4,10 @@
* LICENSE file in the root directory of this source tree.
* @format
*/
import type {Store} from '../reducers/index.js';
import type {Store} from '../reducers/index.tsx';
import {FlipperPlugin, FlipperDevicePlugin} from '../plugin.js';
import type BaseDevice from '../devices/BaseDevice.js';
import {setPluginState} from '../reducers/pluginStates.js';
import {setPluginState} from '../reducers/pluginStates.tsx';
import {getPersistedState} from '../utils/pluginUtils.js';
export function registerDeviceCallbackOnPlugins(

View File

@@ -6,9 +6,9 @@
*/
import type BaseDevice from '../devices/BaseDevice.js';
import {FlipperDevicePlugin, FlipperPlugin} from '../plugin.js';
import type {State as PluginStatesState} from '../reducers/pluginStates.js';
import type {State as PluginStatesState} from '../reducers/pluginStates.tsx';
import {pluginsClassMap} from './exportData.js';
import type {State as PluginsState} from '../reducers/plugins.js';
import type {State as PluginsState} from '../reducers/plugins.tsx';
import type {PluginDefinition} from '../dispatcher/plugins';
export function getPluginKey(

View File

@@ -4,7 +4,7 @@
* LICENSE file in the root directory of this source tree.
* @format
*/
import type {State} from '../reducers/index';
import {State} from '../reducers/index.tsx';
import type {DeviceExport} from '../devices/BaseDevice';
export const stateSanitizer = (state: State) => {