From 67e87c2fa54c2bf8b6c6ec0b70c06ac9d29fbc61 Mon Sep 17 00:00:00 2001 From: Michel Weststrate Date: Thu, 4 Mar 2021 05:59:40 -0800 Subject: [PATCH] Fix gray screen crash that might happen when gathering usage stats Reviewed By: jknoxville Differential Revision: D26814271 fbshipit-source-id: bd857a42ae6b2528e42c96d0865ae2c532ea345f --- desktop/app/src/dispatcher/tracking.tsx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/desktop/app/src/dispatcher/tracking.tsx b/desktop/app/src/dispatcher/tracking.tsx index 0975d984f..10f8d1f47 100644 --- a/desktop/app/src/dispatcher/tracking.tsx +++ b/desktop/app/src/dispatcher/tracking.tsx @@ -11,7 +11,7 @@ import {ipcRenderer, remote} from 'electron'; import {performance} from 'perf_hooks'; import {EventEmitter} from 'events'; -import {Store} from '../reducers/index'; +import {State, Store} from '../reducers/index'; import {Logger} from '../fb-interfaces/Logger'; import Client from '../Client'; import { @@ -121,8 +121,19 @@ export default (store: Store, logger: Logger) => { ); } - ipcRenderer.on('trackUsage', (_e, ...args: any[]) => { - const state = store.getState(); + ipcRenderer.on('trackUsage', (event, ...args: any[]) => { + let state: State; + try { + state = store.getState(); + } catch (e) { + // if trackUsage is called (indirectly) through a reducer, this will utterly die Flipper. Let's prevent that and log an error instead + console.error( + 'trackUsage triggered indirectly as side effect of a reducer. Event: ', + event.type, + event, + ); + return; + } const { selectedDevice, selectedPlugin,