Make sure Sandy Devices Plugins are loaded in Flipper devices

Summary:
This diff makes sure that devices will actually instantiate applicable sandy device plugins. Similar to how client plugins are owned by Client, device plugins are directly owned by BaseDevice, which significantly simplifies life cycle management and doesn't dispatch updates to all Redux connect components whenever something irrelevant changes.

Also made sure `device.teardown()` is called. That API already existed, but wasn't used or implemented before.

Updated Flipper test utils to support testing device plugins as well (both Sandy and classic ones)

Reviewed By: passy, nikoant

Differential Revision: D22693929

fbshipit-source-id: 73b2b8666ef7a0e748ea89360db84734d37eb5be
This commit is contained in:
Michel Weststrate
2020-08-04 07:05:57 -07:00
committed by Facebook GitHub Bot
parent 1e956e1bf5
commit 489dd1521e
11 changed files with 180 additions and 33 deletions

View File

@@ -19,7 +19,6 @@ import {
ContextMenu,
clipboard,
Button,
FlipperPlugin,
getPluginKey,
getPersistedState,
BaseDevice,
@@ -239,10 +238,14 @@ export function parseCrashLogAndUpdateState(
| typeof FlipperBasePlugin
| undefined = store
.getState()
.plugins.devicePlugins.get(CrashReporterPlugin.id);
.plugins.devicePlugins.get(CrashReporterPlugin.id) as any;
if (!persistingPlugin) {
return;
}
if (!persistingPlugin.persistedStateReducer) {
console.error('CrashReporterPlugin is incompatible');
return;
}
const pluginStates = store.getState().pluginStates;
const persistedState = getPersistedState(
pluginKey,