Filter displayed plugins by selected device

Summary: Now that android devices know their own serial, we can filter plugins by the selected device.

Reviewed By: passy

Differential Revision: D9481461

fbshipit-source-id: 4a53eea1e61caa09c3d63ca0076fbc1b6dceb99f
This commit is contained in:
John Knox
2018-08-31 07:58:03 -07:00
committed by Facebook Github Bot
parent edff177c3f
commit 0f08b04571

View File

@@ -198,31 +198,41 @@ class MainSidebar extends Component<MainSidebarProps> {
plugin={plugin}
/>
))}
{clients.map((client: Client) => (
<React.Fragment key={client.id}>
<SidebarHeader>{client.query.app}</SidebarHeader>
{plugins
.filter(
(p: Class<SonarPlugin<>>) => client.plugins.indexOf(p.id) > -1,
)
.map((plugin: Class<SonarPlugin<>>) => (
<PluginSidebarListItem
key={plugin.id}
isActive={
plugin.id === selectedPlugin && selectedApp === client.id
}
onClick={() =>
selectPlugin({
selectedPlugin: plugin.id,
selectedApp: client.id,
})
}
plugin={plugin}
app={client.query.app}
/>
))}
</React.Fragment>
))}
{clients
.filter(
(client: Client) =>
(selectedDevice &&
client.query.device_id === selectedDevice.serial) ||
// Old android sdk versions don't know their device_id
// Display their plugins under all selected devices until they die out
client.query.device_id === 'unknown',
)
.map((client: Client) => (
<React.Fragment key={client.id}>
<SidebarHeader>{client.query.app}</SidebarHeader>
{plugins
.filter(
(p: Class<SonarPlugin<>>) =>
client.plugins.indexOf(p.id) > -1,
)
.map((plugin: Class<SonarPlugin<>>) => (
<PluginSidebarListItem
key={plugin.id}
isActive={
plugin.id === selectedPlugin && selectedApp === client.id
}
onClick={() =>
selectPlugin({
selectedPlugin: plugin.id,
selectedApp: client.id,
})
}
plugin={plugin}
app={client.query.app}
/>
))}
</React.Fragment>
))}
</Sidebar>
);
}