Setup sdk for background plugin
Summary: This diff sets up flipper for running plugins in background. This diff does the following - Adds a function named `runInBackground` to the interface `FlipperPlugin` to make the plugins opt in to be run in background, default is false - Changes the javascript side of the flipper to store the messages received by the plugins in background - Process the stored messages when the plugin in background becomes active - Currently I have just turned on network plugin to be in background mode. - Remove the buffering from the network plugin, as it will run in background - Write a batching layer to batch the messages and send to flipper. Note: I haven't tested the wilde app yet, but the sample app works. I will remove the "[WIP]" from the title once I have tested it in wilde Reviewed By: danielbuechele Differential Revision: D10301403 fbshipit-source-id: 034eebf659a545d6b480a4ac1b73b0aa4b2f9797
This commit is contained in:
committed by
Facebook Github Bot
parent
992ad68517
commit
5bbfa58909
@@ -119,6 +119,9 @@ class PluginContainer extends Component<Props, State> {
|
||||
if (ref && target) {
|
||||
activateMenuItems(ref);
|
||||
ref._init();
|
||||
if (target instanceof Client) {
|
||||
target.readBufferedMessages(ref.constructor.id);
|
||||
}
|
||||
this.props.logger.trackTimeSince(`activePlugin-${ref.constructor.id}`);
|
||||
this.plugin = ref;
|
||||
}
|
||||
@@ -136,7 +139,13 @@ class PluginContainer extends Component<Props, State> {
|
||||
key: pluginKey,
|
||||
logger: this.props.logger,
|
||||
persistedState: pluginStates[pluginKey] || {},
|
||||
setPersistedState: state => setPluginState({pluginKey, state}),
|
||||
setPersistedState: state => {
|
||||
// We are using setTimout here to wait for previous state updated to
|
||||
// finish before triggering a new state update. Otherwise this can
|
||||
// cause race conditions, with multiple state updates happening at the
|
||||
// same time.
|
||||
setTimeout(() => setPluginState({pluginKey, state}), 0);
|
||||
},
|
||||
target,
|
||||
deepLinkPayload: this.props.deepLinkPayload,
|
||||
ref: this.refChanged,
|
||||
|
||||
Reference in New Issue
Block a user