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:
committed by
Facebook Github Bot
parent
3caa0da887
commit
c0b5f10693
@@ -18,6 +18,8 @@ import {persistStore} from 'redux-persist';
|
|||||||
import reducers from './reducers/index.js';
|
import reducers from './reducers/index.js';
|
||||||
import dispatcher from './dispatcher/index.js';
|
import dispatcher from './dispatcher/index.js';
|
||||||
import TooltipProvider from './ui/components/TooltipProvider.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 path = require('path');
|
||||||
|
|
||||||
const store = createStore(
|
const store = createStore(
|
||||||
@@ -55,6 +57,8 @@ function init() {
|
|||||||
(r.installing || r.active).postMessage({precachedIcons});
|
(r.installing || r.active).postMessage({precachedIcons});
|
||||||
})
|
})
|
||||||
.catch(console.error);
|
.catch(console.error);
|
||||||
|
|
||||||
|
initLauncherHooks(config(), store);
|
||||||
}
|
}
|
||||||
|
|
||||||
// make init function callable from outside
|
// make init function callable from outside
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ test('config is decoded from env', () => {
|
|||||||
disabledPlugins: ['pluginA', 'pluginB', 'pluginC'],
|
disabledPlugins: ['pluginA', 'pluginB', 'pluginC'],
|
||||||
pluginPaths: ['/a/path', 'b/path'],
|
pluginPaths: ['/a/path', 'b/path'],
|
||||||
lastWindowPosition: {x: 4, y: 8, width: 15, height: 16},
|
lastWindowPosition: {x: 4, y: 8, width: 15, height: 16},
|
||||||
|
launcherMsg: 'wubba lubba dub dub',
|
||||||
updaterEnabled: false,
|
updaterEnabled: false,
|
||||||
screenCapturePath: '/my/screenshot/path',
|
screenCapturePath: '/my/screenshot/path',
|
||||||
launcherEnabled: false,
|
launcherEnabled: false,
|
||||||
@@ -25,6 +26,7 @@ test('config is decoded from env', () => {
|
|||||||
disabledPlugins: new Set(['pluginA', 'pluginB', 'pluginC']),
|
disabledPlugins: new Set(['pluginA', 'pluginB', 'pluginC']),
|
||||||
pluginPaths: ['/a/path', 'b/path'],
|
pluginPaths: ['/a/path', 'b/path'],
|
||||||
lastWindowPosition: {x: 4, y: 8, width: 15, height: 16},
|
lastWindowPosition: {x: 4, y: 8, width: 15, height: 16},
|
||||||
|
launcherMsg: 'wubba lubba dub dub',
|
||||||
updaterEnabled: false,
|
updaterEnabled: false,
|
||||||
screenCapturePath: '/my/screenshot/path',
|
screenCapturePath: '/my/screenshot/path',
|
||||||
launcherEnabled: false,
|
launcherEnabled: false,
|
||||||
@@ -38,6 +40,7 @@ test('config is decoded from env with defaults', () => {
|
|||||||
disabledPlugins: new Set([]),
|
disabledPlugins: new Set([]),
|
||||||
pluginPaths: [],
|
pluginPaths: [],
|
||||||
lastWindowPosition: undefined,
|
lastWindowPosition: undefined,
|
||||||
|
launcherMsg: undefined,
|
||||||
updaterEnabled: true,
|
updaterEnabled: true,
|
||||||
screenCapturePath: undefined,
|
screenCapturePath: undefined,
|
||||||
launcherEnabled: true,
|
launcherEnabled: true,
|
||||||
|
|||||||
19
src/utils/launcher.js
Normal file
19
src/utils/launcher.js
Normal 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,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,6 +12,7 @@ export type ProcessConfig = {|
|
|||||||
pluginPaths: Array<string>,
|
pluginPaths: Array<string>,
|
||||||
lastWindowPosition: ?{x: number, y: number, width: number, height: number},
|
lastWindowPosition: ?{x: number, y: number, width: number, height: number},
|
||||||
screenCapturePath: ?string,
|
screenCapturePath: ?string,
|
||||||
|
launcherMsg: ?string,
|
||||||
updaterEnabled: boolean,
|
updaterEnabled: boolean,
|
||||||
// Controls whether to delegate to the launcher if present.
|
// Controls whether to delegate to the launcher if present.
|
||||||
launcherEnabled: boolean,
|
launcherEnabled: boolean,
|
||||||
@@ -28,6 +29,7 @@ export default function config(): ProcessConfig {
|
|||||||
disabledPlugins: new Set(json.disabledPlugins || []),
|
disabledPlugins: new Set(json.disabledPlugins || []),
|
||||||
pluginPaths: json.pluginPaths || [],
|
pluginPaths: json.pluginPaths || [],
|
||||||
lastWindowPosition: json.lastWindowPosition,
|
lastWindowPosition: json.lastWindowPosition,
|
||||||
|
launcherMsg: json.launcherMsg,
|
||||||
updaterEnabled:
|
updaterEnabled:
|
||||||
typeof json.updaterEnabled === 'boolean' ? json.updaterEnabled : true,
|
typeof json.updaterEnabled === 'boolean' ? json.updaterEnabled : true,
|
||||||
screenCapturePath: json.screenCapturePath,
|
screenCapturePath: json.screenCapturePath,
|
||||||
|
|||||||
@@ -48,6 +48,11 @@ const argv = yargs
|
|||||||
describe: 'Toggle delegating to the update launcher on startup.',
|
describe: 'Toggle delegating to the update launcher on startup.',
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
})
|
})
|
||||||
|
.option('launcher-msg', {
|
||||||
|
describe:
|
||||||
|
'[Internal] Used to provide a user message from the launcher to the user.',
|
||||||
|
type: 'string',
|
||||||
|
})
|
||||||
.version(global.__VERSION__)
|
.version(global.__VERSION__)
|
||||||
.help().argv;
|
.help().argv;
|
||||||
|
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ module.exports = function(argv) {
|
|||||||
config = {
|
config = {
|
||||||
...config,
|
...config,
|
||||||
updaterEnabled: argv.updater,
|
updaterEnabled: argv.updater,
|
||||||
|
launcherMsg: argv.launcherMsg,
|
||||||
};
|
};
|
||||||
|
|
||||||
return {config, configPath, flipperDir};
|
return {config, configPath, flipperDir};
|
||||||
|
|||||||
Reference in New Issue
Block a user