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:
committed by
Facebook Github Bot
parent
2a1e939a0b
commit
0bf905e02f
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
|
||||
import {Actions} from '.';
|
||||
import {deconstructPluginKey} from '../utils/clientUtils';
|
||||
|
||||
export type State = {
|
||||
[pluginKey: string]: Object;
|
||||
@@ -53,8 +54,9 @@ export default function reducer(
|
||||
return Object.keys(state).reduce((newState: State, pluginKey) => {
|
||||
// Only add the pluginState, if its from a plugin other than the one that
|
||||
// was removed. pluginKeys are in the form of ${clientID}#${pluginID}.
|
||||
const clientId = pluginKey.slice(0, pluginKey.lastIndexOf('#'));
|
||||
const pluginId = pluginKey.split('#').pop();
|
||||
const plugin = deconstructPluginKey(pluginKey);
|
||||
const clientId = plugin.client;
|
||||
const pluginId = plugin.pluginName;
|
||||
if (
|
||||
clientId !== payload.clientId ||
|
||||
(pluginId && payload.devicePlugins.has(pluginId))
|
||||
|
||||
Reference in New Issue
Block a user