Fixed issue with reseting logs
Summary: Noticed that subsequent `adb logcat` invocations are stateful, and we didn't clear it's state when clearing the logs in memory. This is a bandaid to get back to the previous behavior. I am wondering whether it wouldn't be just much more intuitive to always clear the logs (`adb logcat -c`) before we start the streaming log listener, so that users are never shown old logs from before flipper was connected? Also fixed a leak in cleaning up the log listeners that was revealed by the possibility to disable the log plugin Reviewed By: nikoant Differential Revision: D26450262 fbshipit-source-id: 5b426e2d0e1fafdbc512d48d22b7bd4f30b61309
This commit is contained in:
committed by
Facebook GitHub Bot
parent
d50c253159
commit
d37f1c282a
@@ -76,7 +76,9 @@ export const LaunchEmulatorDialog = withTrackingScope(
|
||||
}, [iosEnabled, getSimulators, store]);
|
||||
|
||||
const items = [
|
||||
...(androidEmulators.length > 0 ? [<AndroidOutlined />] : []),
|
||||
...(androidEmulators.length > 0
|
||||
? [<AndroidOutlined key="android logo" />]
|
||||
: []),
|
||||
...androidEmulators.map((name) => {
|
||||
const launch = (coldBoot: boolean) => {
|
||||
launchEmulator(name, coldBoot)
|
||||
@@ -111,7 +113,7 @@ export const LaunchEmulatorDialog = withTrackingScope(
|
||||
</Dropdown.Button>
|
||||
);
|
||||
}),
|
||||
...(iosEmulators.length > 0 ? [<AppleOutlined />] : []),
|
||||
...(iosEmulators.length > 0 ? [<AppleOutlined key="ios logo" />] : []),
|
||||
...iosEmulators.map((device) => (
|
||||
<Button
|
||||
key={device.udid}
|
||||
|
||||
@@ -115,6 +115,7 @@ export abstract class BasePluginInstance {
|
||||
importHandler?: StateImportHandler;
|
||||
|
||||
menuEntries: NormalizedMenuEntry[] = [];
|
||||
logListeners: Symbol[] = [];
|
||||
|
||||
constructor(
|
||||
flipperLib: FlipperLib,
|
||||
@@ -139,9 +140,9 @@ export abstract class BasePluginInstance {
|
||||
return realDevice.connected.get();
|
||||
},
|
||||
deviceType: realDevice.deviceType,
|
||||
|
||||
onLogEntry(cb) {
|
||||
onLogEntry: (cb) => {
|
||||
const handle = realDevice.addLogListener(cb);
|
||||
this.logListeners.push(handle);
|
||||
return () => {
|
||||
realDevice.removeLogListener(handle);
|
||||
};
|
||||
@@ -265,6 +266,9 @@ export abstract class BasePluginInstance {
|
||||
destroy() {
|
||||
this.assertNotDestroyed();
|
||||
this.deactivate();
|
||||
this.logListeners.splice(0).forEach((handle) => {
|
||||
this.device.realDevice.removeLogListener(handle);
|
||||
});
|
||||
this.events.emit('destroy');
|
||||
this.destroyed = true;
|
||||
}
|
||||
|
||||
@@ -497,6 +497,8 @@ export function devicePlugin(client: DevicePluginClient) {
|
||||
}
|
||||
|
||||
function clearLogs() {
|
||||
// Non public Android specific api
|
||||
(client.device.realDevice as any)?.clearLogs?.();
|
||||
entries.set([]);
|
||||
rows.set([]);
|
||||
highlightedRows.set(new Set());
|
||||
|
||||
Reference in New Issue
Block a user