Strictify exportData.tsx
Summary: As per title. Reviewed By: jknoxville Differential Revision: D17269583 fbshipit-source-id: efb67acade677f26ce3d2a547d0ab97329d80196
This commit is contained in:
committed by
Facebook Github Bot
parent
a492ddaae8
commit
d8cd69666e
@@ -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`);
|
||||||
}
|
}
|
||||||
},
|
});
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user