Add --launcher-msg option to pass to desktop app

Summary:
Allows the launcher to provide messages to the user. Currently, in the form
of the red notification bar at the bottom. This is just meant as a temporary measure
during the alpha to have some clearly noticeable way of getting the user's attention.

I consider removing this a blocker for the release as this mechanism is not well
suited for this in many ways.

The current use case for this is providing a warning if a cached version is used
instead of the requested one, e.g. "Could not fetch requested Flipper version 'deadbeef', using cached version instead."

Reviewed By: jknoxville, priteshrnandgaonkar

Differential Revision: D14073687

fbshipit-source-id: 85630347027063103315eeb1286731fe2478e261
This commit is contained in:
Pascal Hartig
2019-02-14 05:59:54 -08:00
committed by Facebook Github Bot
parent 3caa0da887
commit c0b5f10693
6 changed files with 34 additions and 0 deletions

View File

@@ -18,6 +18,8 @@ import {persistStore} from 'redux-persist';
import reducers from './reducers/index.js';
import dispatcher from './dispatcher/index.js';
import TooltipProvider from './ui/components/TooltipProvider.js';
import config from './utils/processConfig.js';
import {initLauncherHooks} from './utils/launcher.js';
const path = require('path');
const store = createStore(
@@ -55,6 +57,8 @@ function init() {
(r.installing || r.active).postMessage({precachedIcons});
})
.catch(console.error);
initLauncherHooks(config(), store);
}
// make init function callable from outside

View File

@@ -16,6 +16,7 @@ test('config is decoded from env', () => {
disabledPlugins: ['pluginA', 'pluginB', 'pluginC'],
pluginPaths: ['/a/path', 'b/path'],
lastWindowPosition: {x: 4, y: 8, width: 15, height: 16},
launcherMsg: 'wubba lubba dub dub',
updaterEnabled: false,
screenCapturePath: '/my/screenshot/path',
launcherEnabled: false,
@@ -25,6 +26,7 @@ test('config is decoded from env', () => {
disabledPlugins: new Set(['pluginA', 'pluginB', 'pluginC']),
pluginPaths: ['/a/path', 'b/path'],
lastWindowPosition: {x: 4, y: 8, width: 15, height: 16},
launcherMsg: 'wubba lubba dub dub',
updaterEnabled: false,
screenCapturePath: '/my/screenshot/path',
launcherEnabled: false,
@@ -38,6 +40,7 @@ test('config is decoded from env with defaults', () => {
disabledPlugins: new Set([]),
pluginPaths: [],
lastWindowPosition: undefined,
launcherMsg: undefined,
updaterEnabled: true,
screenCapturePath: undefined,
launcherEnabled: true,

19
src/utils/launcher.js Normal file
View File

@@ -0,0 +1,19 @@
/**
* Copyright 2018-present Facebook.
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
* @format
*/
import type {ProcessConfig} from './processConfig.js';
import type {Store} from '../reducers/index.js';
export function initLauncherHooks(config: ProcessConfig, store: Store) {
// TODO(T40488739): This must be replaced with a proper display before launching this.
if (config.launcherMsg) {
store.dispatch({
type: 'SERVER_ERROR',
payload: config.launcherMsg,
});
}
}

View File

@@ -12,6 +12,7 @@ export type ProcessConfig = {|
pluginPaths: Array<string>,
lastWindowPosition: ?{x: number, y: number, width: number, height: number},
screenCapturePath: ?string,
launcherMsg: ?string,
updaterEnabled: boolean,
// Controls whether to delegate to the launcher if present.
launcherEnabled: boolean,
@@ -28,6 +29,7 @@ export default function config(): ProcessConfig {
disabledPlugins: new Set(json.disabledPlugins || []),
pluginPaths: json.pluginPaths || [],
lastWindowPosition: json.lastWindowPosition,
launcherMsg: json.launcherMsg,
updaterEnabled:
typeof json.updaterEnabled === 'boolean' ? json.updaterEnabled : true,
screenCapturePath: json.screenCapturePath,

View File

@@ -48,6 +48,11 @@ const argv = yargs
describe: 'Toggle delegating to the update launcher on startup.',
type: 'boolean',
})
.option('launcher-msg', {
describe:
'[Internal] Used to provide a user message from the launcher to the user.',
type: 'string',
})
.version(global.__VERSION__)
.help().argv;

View File

@@ -76,6 +76,7 @@ module.exports = function(argv) {
config = {
...config,
updaterEnabled: argv.updater,
launcherMsg: argv.launcherMsg,
};
return {config, configPath, flipperDir};