Plugin Marketplace: Download plugin updates in background
Summary: Download updated plugins in background. This is implemented by periodical polling of Marketplace GraphQL API (interval 5 min by default). The feature is under GK flipper_plugin_auto_update, so for now it is enabled only for me. Reviewed By: mweststrate Differential Revision: D21863057 fbshipit-source-id: 51d8223ad4b2a928f7571ea480c10ba2efd9935d
This commit is contained in:
committed by
Facebook GitHub Bot
parent
ab84bd563a
commit
f981a772ec
39
desktop/app/src/__mocks__/console.tsx
Normal file
39
desktop/app/src/__mocks__/console.tsx
Normal file
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
/*
|
||||
* mock-fs library has issues with calls to console.log in jest tests which are not resolved yet,
|
||||
* so this console log can be used as a workaround in jest tests with fs-mocks:
|
||||
* const realConsole = global.console;
|
||||
* global.console = consoleMock as any;
|
||||
* afterAll(() => {
|
||||
* global.console = realConsole;
|
||||
* });
|
||||
* See details: https://github.com/tschaub/mock-fs/issues/234
|
||||
*/
|
||||
|
||||
function format(entry: any) {
|
||||
if (typeof entry === 'object') {
|
||||
try {
|
||||
return JSON.stringify(entry);
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
function log(...msgs: any) {
|
||||
process.stdout.write(msgs.map(format).join(' ') + '\n');
|
||||
}
|
||||
|
||||
export default {
|
||||
log,
|
||||
warn: log,
|
||||
error: log,
|
||||
};
|
||||
12
desktop/app/src/dispatcher/fb-stubs/pluginAutoUpdate.tsx
Normal file
12
desktop/app/src/dispatcher/fb-stubs/pluginAutoUpdate.tsx
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
export default () => {
|
||||
// Auto-updates of plugins not implemented in public version of Flipper
|
||||
};
|
||||
@@ -20,6 +20,7 @@ import plugins from './plugins';
|
||||
import user from './user';
|
||||
import pluginManager from './pluginManager';
|
||||
import reactNative from './reactNative';
|
||||
import pluginAutoUpdate from './fb-stubs/pluginAutoUpdate';
|
||||
|
||||
import {Logger} from '../fb-interfaces/Logger';
|
||||
import {Store} from '../reducers/index';
|
||||
@@ -46,6 +47,7 @@ export default function (store: Store, logger: Logger): () => Promise<void> {
|
||||
user,
|
||||
pluginManager,
|
||||
reactNative,
|
||||
pluginAutoUpdate,
|
||||
].filter(notNull);
|
||||
const globalCleanup = dispatchers
|
||||
.map((dispatcher) => dispatcher(store, logger))
|
||||
|
||||
@@ -190,6 +190,7 @@ export const requirePlugin = (
|
||||
}
|
||||
|
||||
plugin.id = plugin.id || pluginDefinition.id;
|
||||
plugin.packageName = pluginDefinition.name;
|
||||
|
||||
// set values from package.json as static variables on class
|
||||
Object.keys(pluginDefinition).forEach((key) => {
|
||||
|
||||
@@ -96,6 +96,7 @@ export abstract class FlipperBasePlugin<
|
||||
static title: string | null = null;
|
||||
static category: string | null = null;
|
||||
static id: string = '';
|
||||
static packageName: string = '';
|
||||
static version: string = '';
|
||||
static icon: string | null = null;
|
||||
static gatekeeper: string | null = null;
|
||||
|
||||
Reference in New Issue
Block a user