From 7a28ed1fe53a39d4e7fe04a856941758b85ae06c Mon Sep 17 00:00:00 2001 From: Ranesh Saha Date: Tue, 15 Nov 2022 03:23:55 -0800 Subject: [PATCH] Pipe through --updater/--no-updater flag for flipper.exe (#4277) Summary: In our organization, Flipper is distributed in a version controlled way. As a result, we do not want users to manually update or receive prompts to update when a new version is available. There is already a `--updater` flag in the command line arguments for flipper.exe, but it isn't piped through. This change pipes it through and disables all update related UI when `--no-updater` is passed in. ## Changelog Support --updater and --no-updater options for flipper.exe Pull Request resolved: https://github.com/facebook/flipper/pull/4277 Test Plan: Ran `yarn build --win` in flipper/desktop, and launched flipper.exe from flipper/dist/win-unpacked with the `--updater`, `--no-updater` and no flags and ensured the proper behavior was observed (update UI shows by default or when `--updater` is specified, and doesn't show when `--no-updater` is specified). Reviewed By: passy Differential Revision: D41298321 Pulled By: mweststrate fbshipit-source-id: 5ddfede2700954f0fdd6a111b20d0836fab25565 --- desktop/flipper-common/src/settings.tsx | 3 ++- .../src/utils/__tests__/processConfig.node.tsx | 3 +++ desktop/flipper-server-core/src/utils/processConfig.tsx | 2 ++ desktop/flipper-ui-core/src/chrome/UpdateIndicator.tsx | 1 + .../src/dispatcher/handleOpenPluginDeeplink.tsx | 7 ++++++- desktop/scripts/jest-setup-after.tsx | 1 + 6 files changed, 15 insertions(+), 2 deletions(-) diff --git a/desktop/flipper-common/src/settings.tsx b/desktop/flipper-common/src/settings.tsx index de730cc13..9568d7680 100644 --- a/desktop/flipper-common/src/settings.tsx +++ b/desktop/flipper-common/src/settings.tsx @@ -77,7 +77,7 @@ export type LauncherSettings = { }; // Settings that primarily only apply to Electron atm -// TODO: further separte between flipper-ui config and Electron config +// TODO: further separate between flipper-ui config and Electron config export type ProcessConfig = { disabledPlugins: string[]; lastWindowPosition: { @@ -90,6 +90,7 @@ export type ProcessConfig = { launcherMsg: string | null; // Controls whether to delegate to the launcher if present. launcherEnabled: boolean; + updaterEnabled: boolean; // Control whether to suppress "update available" notifications suppressPluginUpdateNotifications?: boolean; }; diff --git a/desktop/flipper-server-core/src/utils/__tests__/processConfig.node.tsx b/desktop/flipper-server-core/src/utils/__tests__/processConfig.node.tsx index 0f41b8865..5e4a3d0f4 100644 --- a/desktop/flipper-server-core/src/utils/__tests__/processConfig.node.tsx +++ b/desktop/flipper-server-core/src/utils/__tests__/processConfig.node.tsx @@ -18,6 +18,7 @@ test('config is decoded from env', () => { screenCapturePath: '/my/screenshot/path', launcherEnabled: false, suppressPluginUpdateNotifications: true, + updaterEnabled: true, }), }); @@ -28,6 +29,7 @@ test('config is decoded from env', () => { screenCapturePath: '/my/screenshot/path', launcherEnabled: false, suppressPluginUpdateNotifications: true, + updaterEnabled: true, }); }); @@ -39,5 +41,6 @@ test('config is decoded from env with defaults', () => { screenCapturePath: undefined, launcherEnabled: true, suppressPluginUpdateNotifications: false, + updaterEnabled: true, }); }); diff --git a/desktop/flipper-server-core/src/utils/processConfig.tsx b/desktop/flipper-server-core/src/utils/processConfig.tsx index 547be1755..a71904453 100644 --- a/desktop/flipper-server-core/src/utils/processConfig.tsx +++ b/desktop/flipper-server-core/src/utils/processConfig.tsx @@ -18,6 +18,8 @@ export function loadProcessConfig(env: NodeJS.ProcessEnv): ProcessConfig { screenCapturePath: json.screenCapturePath, launcherEnabled: typeof json.launcherEnabled === 'boolean' ? json.launcherEnabled : true, + updaterEnabled: + typeof json.updaterEnabled === 'boolean' ? json.updaterEnabled : true, suppressPluginUpdateNotifications: typeof json.suppressPluginUpdateNotifications === 'boolean' ? json.suppressPluginUpdateNotifications diff --git a/desktop/flipper-ui-core/src/chrome/UpdateIndicator.tsx b/desktop/flipper-ui-core/src/chrome/UpdateIndicator.tsx index caf69eb71..cebab7698 100644 --- a/desktop/flipper-ui-core/src/chrome/UpdateIndicator.tsx +++ b/desktop/flipper-ui-core/src/chrome/UpdateIndicator.tsx @@ -85,6 +85,7 @@ export default function UpdateIndicator() { } } else if ( version && + config.updaterEnabled && !config.suppressPluginUpdateNotifications && isProduction() ) { diff --git a/desktop/flipper-ui-core/src/dispatcher/handleOpenPluginDeeplink.tsx b/desktop/flipper-ui-core/src/dispatcher/handleOpenPluginDeeplink.tsx index 50f420686..efa2ae416 100644 --- a/desktop/flipper-ui-core/src/dispatcher/handleOpenPluginDeeplink.tsx +++ b/desktop/flipper-ui-core/src/dispatcher/handleOpenPluginDeeplink.tsx @@ -284,7 +284,12 @@ async function waitForLogin(store: Store) { async function verifyFlipperIsUpToDate(title: string) { const config = getRenderHostInstance().serverConfig.processConfig; - if (!isProduction() || isTest() || config.suppressPluginUpdateNotifications) { + if ( + !isProduction() || + isTest() || + !config.updaterEnabled || + config.suppressPluginUpdateNotifications + ) { return; } const currentVersion = getAppVersion(); diff --git a/desktop/scripts/jest-setup-after.tsx b/desktop/scripts/jest-setup-after.tsx index 313e9ce92..1fd69331f 100644 --- a/desktop/scripts/jest-setup-after.tsx +++ b/desktop/scripts/jest-setup-after.tsx @@ -137,6 +137,7 @@ function createStubRenderHost(): RenderHost { launcherEnabled: false, launcherMsg: null, screenCapturePath: `/dev/null`, + updaterEnabled: true, suppressPluginUpdateNotifications: false, }, settings: {