Replace all manual pluginKey parsing with a utility

Summary:
Ok this diff got a bit bigger than expected, but I think it makes it easier to understand what "plugin keys" are, and makes them less prone to error.

Previously pluginKeys were composed of: clientId#pluginName, where clientId was itself: app#os#device#device_id

But also, there were some plugin keys where the clientId was a device_id.

Now you deconstruct a plugin key, and will get a tagged object with type: 'device' or 'client', and the properties that they each have.

There is now no custom parsing of these afaik, let's keep it that way.

Since it took me a while to figure out what all these IDs are, I've documented it a bit in clientUtils.

Reviewed By: passy

Differential Revision: D18811848

fbshipit-source-id: eed2e2b5eedafb9e27900dbcf79a389fcaffae95
This commit is contained in:
John Knox
2019-12-05 07:36:18 -08:00
committed by Facebook Github Bot
parent 2a1e939a0b
commit 0bf905e02f
6 changed files with 104 additions and 44 deletions

View File

@@ -13,6 +13,7 @@ import {State as PluginStatesState} from '../reducers/pluginStates';
import {pluginsClassMap} from './exportData';
import {State as PluginsState} from '../reducers/plugins';
import {PluginDefinition} from '../dispatcher/plugins';
import {deconstructPluginKey} from './clientUtils';
export function getPluginKey(
selectedApp: string | null,
@@ -53,13 +54,15 @@ export function getActivePersistentPlugins(
string,
typeof FlipperDevicePlugin | typeof FlipperPlugin
> = pluginsClassMap(plugins);
return getPersistentPlugins(plugins).filter(plugin => {
const pluginClass = pluginsMap.get(plugin);
const keys = Object.keys(pluginsState).map(key => key.split('#').pop());
return getPersistentPlugins(plugins).filter(pluginName => {
const pluginClass = pluginsMap.get(pluginName);
const pluginNames = Object.keys(pluginsState).map(
pluginKey => deconstructPluginKey(pluginKey).pluginName,
);
return (
(pluginClass && pluginClass.exportPersistedState != undefined) ||
plugin == 'DeviceLogs' ||
keys.includes(plugin)
pluginName == 'DeviceLogs' ||
pluginNames.includes(pluginName)
);
});
}