Strictify exportData.tsx

Summary: As per title.

Reviewed By: jknoxville

Differential Revision: D17269583

fbshipit-source-id: efb67acade677f26ce3d2a547d0ab97329d80196
This commit is contained in:
Pritesh Nandgaonkar
2019-09-10 08:48:54 -07:00
committed by Facebook Github Bot
parent a492ddaae8
commit d8cd69666e

View File

@@ -9,7 +9,7 @@ import {Store, MiddlewareAPI} from '../reducers';
import {DeviceExport} from '../devices/BaseDevice'; import {DeviceExport} from '../devices/BaseDevice';
import {State as PluginStatesState} from '../reducers/pluginStates'; import {State as PluginStatesState} from '../reducers/pluginStates';
import {PluginNotification} from '../reducers/notifications'; import {PluginNotification} from '../reducers/notifications';
import {ClientExport} from '../Client.js'; import {ClientExport, ClientQuery} from '../Client.js';
import {State as PluginsState} from '../reducers/plugins'; import {State as PluginsState} from '../reducers/plugins';
import {pluginKey} from '../reducers/pluginStates'; import {pluginKey} from '../reducers/pluginStates';
import { import {
@@ -23,7 +23,7 @@ import {default as ArchivedDevice} from '../devices/ArchivedDevice';
import {default as Client} from '../Client'; import {default as Client} from '../Client';
import fs from 'fs'; import fs from 'fs';
import uuid from 'uuid'; import uuid from 'uuid';
import {remote} from 'electron'; import {remote, OpenDialogOptions} from 'electron';
import {serialize, deserialize} from './serialization'; import {serialize, deserialize} from './serialization';
import {readCurrentRevision} from './packageMetadata'; import {readCurrentRevision} from './packageMetadata';
import {tryCatchReportPlatformFailures} from './metrics'; import {tryCatchReportPlatformFailures} from './metrics';
@@ -38,7 +38,7 @@ export type PluginStatesExportState = {
}; };
export type ExportType = { export type ExportType = {
fileVersion: string; fileVersion: string;
flipperReleaseRevision: string | null; flipperReleaseRevision: string | undefined;
clients: Array<ClientExport>; clients: Array<ClientExport>;
device: DeviceExport | null; device: DeviceExport | null;
store: { store: {
@@ -125,7 +125,11 @@ export function processPluginStates(
for (const key in allPluginStates) { for (const key in allPluginStates) {
const keyArray = key.split('#'); const keyArray = key.split('#');
const pluginName = keyArray.pop(); const pluginName = keyArray.pop();
if (selectedPlugins.length > 0 && !selectedPlugins.includes(pluginName)) { if (
pluginName &&
selectedPlugins.length > 0 &&
!selectedPlugins.includes(pluginName)
) {
continue; continue;
} }
const filteredClients = clients.filter(client => { const filteredClients = clients.filter(client => {
@@ -134,7 +138,7 @@ export function processPluginStates(
}); });
if ( if (
filteredClients.length > 0 || filteredClients.length > 0 ||
(devicePlugins.has(pluginName) && serial === keyArray[0]) (pluginName && devicePlugins.has(pluginName) && serial === keyArray[0])
) { ) {
// There need not be any client for device Plugins // There need not be any client for device Plugins
pluginStates = {...pluginStates, [key]: allPluginStates[key]}; pluginStates = {...pluginStates, [key]: allPluginStates[key]};
@@ -187,7 +191,7 @@ const serializePluginStates = async (
const pluginName = keyArray.pop(); const pluginName = keyArray.pop();
statusUpdate && statusUpdate(`Serialising ${pluginName}...`); statusUpdate && statusUpdate(`Serialising ${pluginName}...`);
const pluginClass = pluginsMap.get(pluginName); const pluginClass = pluginName ? pluginsMap.get(pluginName) : null;
if (pluginClass) { if (pluginClass) {
pluginExportState[key] = await pluginClass.serializePersistedState( pluginExportState[key] = await pluginClass.serializePersistedState(
pluginStates[key], pluginStates[key],
@@ -215,9 +219,15 @@ const deserializePluginStates = (
for (const key in pluginStatesExportState) { for (const key in pluginStatesExportState) {
const keyArray = key.split('#'); const keyArray = key.split('#');
const pluginName = keyArray.pop(); const pluginName = keyArray.pop();
pluginsState[key] = pluginsMap if (!pluginName || !pluginsMap.get(pluginName)) {
.get(pluginName) continue;
.deserializePersistedState(pluginStatesExportState[key]); }
const pluginClass = pluginsMap.get(pluginName);
if (pluginClass) {
pluginsState[key] = pluginClass.deserializePersistedState(
pluginStatesExportState[key],
);
}
} }
return pluginsState; return pluginsState;
}; };
@@ -257,7 +267,7 @@ const addSaltToDeviceSerial = async (
statusUpdate( statusUpdate(
'Adding salt to the selected device id in the plugin states...', 'Adding salt to the selected device id in the plugin states...',
); );
const updatedPluginStates = {}; const updatedPluginStates: PluginStatesExportState = {};
for (let key in pluginStates) { for (let key in pluginStates) {
if (!key.includes(serial)) { if (!key.includes(serial)) {
throw new Error( throw new Error(
@@ -283,7 +293,7 @@ const addSaltToDeviceSerial = async (
} }
return {...notif, client: notif.client.replace(serial, newSerial)}; return {...notif, client: notif.client.replace(serial, newSerial)};
}); });
const revision: string | null = await readCurrentRevision(); const revision: string | undefined = await readCurrentRevision();
return { return {
fileVersion: remote.app.getVersion(), fileVersion: remote.app.getVersion(),
flipperReleaseRevision: revision, flipperReleaseRevision: revision,
@@ -393,6 +403,7 @@ export async function fetchMetadata(
const pluginClass: const pluginClass:
| typeof FlipperDevicePlugin | typeof FlipperDevicePlugin
| typeof FlipperPlugin | typeof FlipperPlugin
| undefined
| null = plugin ? pluginsMap.get(plugin) : null; | null = plugin ? pluginsMap.get(plugin) : null;
const exportState = pluginClass ? pluginClass.exportPersistedState : null; const exportState = pluginClass ? pluginClass.exportPersistedState : null;
if (exportState) { if (exportState) {
@@ -485,11 +496,7 @@ export function exportStore(
statusUpdate, statusUpdate,
idler, idler,
); );
if (!exportData) { if (exportData != null) {
console.error('Make sure a device is connected');
reject(new Error('No device is selected'));
}
try {
statusUpdate && statusUpdate('Serializing Flipper data...'); statusUpdate && statusUpdate('Serializing Flipper data...');
const serializedString = await serialize( const serializedString = await serialize(
exportData, exportData,
@@ -500,8 +507,9 @@ export function exportStore(
reject(new Error('Serialize function returned empty string')); reject(new Error('Serialize function returned empty string'));
} }
resolve({serializedString, errorArray}); resolve({serializedString, errorArray});
} catch (e) { } else {
reject(e); console.error('Make sure a device is connected');
reject(new Error('No device is selected'));
} }
} catch (e) { } catch (e) {
reject(e); reject(e);
@@ -577,7 +585,7 @@ export function importDataToStore(data: string, store: Store) {
}, },
}); });
}); });
clients.forEach(client => { clients.forEach((client: {id: string; query: ClientQuery}) => {
const clientPlugins: Array<string> = keys const clientPlugins: Array<string> = keys
.filter(key => { .filter(key => {
const arr = key.split('#'); const arr = key.split('#');
@@ -585,10 +593,7 @@ export function importDataToStore(data: string, store: Store) {
const clientPlugin = arr.join('#'); const clientPlugin = arr.join('#');
return client.id === clientPlugin; return client.id === clientPlugin;
}) })
.map(client => { .map(client => client.split('#').pop() || '');
const elem = client.split('#').pop();
return elem || '';
});
store.dispatch({ store.dispatch({
type: 'NEW_CLIENT', type: 'NEW_CLIENT',
payload: new Client( payload: new Client(
@@ -614,19 +619,15 @@ export const importFileToStore = (file: string, store: Store) => {
}; };
export function showOpenDialog(store: Store) { export function showOpenDialog(store: Store) {
remote.dialog.showOpenDialog( const options: OpenDialogOptions = {
{
properties: ['openFile'], properties: ['openFile'],
filters: [ filters: [{extensions: ['flipper', 'json', 'txt'], name: 'Flipper files'}],
{extensions: ['flipper', 'json', 'txt'], name: 'Flipper files'}, };
], remote.dialog.showOpenDialog(options, (filePaths?: Array<string>) => {
}, if (filePaths !== undefined && filePaths.length > 0) {
(files: Array<string>) => {
if (files !== undefined && files.length > 0) {
tryCatchReportPlatformFailures(() => { tryCatchReportPlatformFailures(() => {
importFileToStore(files[0], store); importFileToStore(filePaths[0], store);
}, `${IMPORT_FLIPPER_TRACE_EVENT}:UI`); }, `${IMPORT_FLIPPER_TRACE_EVENT}:UI`);
} }
}, });
);
} }