Make integration of new groups simpler

Summary: This diff simplifies the way new groups can be added into the Support form. Users will have to just make an entry in constants folder, thats it. It will automatically be added into the support form.

Reviewed By: jknoxville

Differential Revision: D21257033

fbshipit-source-id: 8823855c7a7732862a964fc17fa7311512b861db
This commit is contained in:
Pritesh Nandgaonkar
2020-04-29 05:39:17 -07:00
committed by Facebook GitHub Bot
parent 38186c8995
commit 513414de04
3 changed files with 55 additions and 69 deletions

View File

@@ -9,12 +9,7 @@
import {remote, ipcRenderer, IpcRendererEvent} from 'electron'; import {remote, ipcRenderer, IpcRendererEvent} from 'electron';
import {toggleAction} from '../reducers/application'; import {toggleAction} from '../reducers/application';
import { import {Group, SUPPORTED_GROUPS} from '../reducers/supportForm';
Group,
GRAPHQL_ANDROID_GROUP,
GRAPHQL_IOS_GROUP,
LITHO_GROUP,
} from '../reducers/supportForm';
import {Store} from '../reducers/index'; import {Store} from '../reducers/index';
import {Logger} from '../fb-interfaces/Logger'; import {Logger} from '../fb-interfaces/Logger';
import {parseFlipperPorts} from '../utils/environmentVariables'; import {parseFlipperPorts} from '../utils/environmentVariables';
@@ -111,18 +106,15 @@ export default (store: Store, _logger: Logger) => {
}, },
); );
function deeplinkFormParamToGroups(formParam: string | null): Group | null { function deeplinkFormParamToGroups(
formParam: string | null,
): Group | undefined {
if (!formParam) { if (!formParam) {
return null; return undefined;
} }
if (formParam.toLowerCase() === 'litho') { return SUPPORTED_GROUPS.find((grp) => {
return LITHO_GROUP; return grp.deeplinkSuffix.toLowerCase() === formParam.toLowerCase();
} else if (formParam.toLowerCase() === 'graphql_android') { });
return GRAPHQL_ANDROID_GROUP;
} else if (formParam.toLowerCase() === 'graphql_ios') {
return GRAPHQL_IOS_GROUP;
}
return null;
} }
ipcRenderer.on( ipcRenderer.on(

View File

@@ -7,6 +7,8 @@
* @format * @format
*/ */
import {OS} from '../devices/BaseDevice';
export default Object.freeze({ export default Object.freeze({
GRAPH_APP_ID: '', GRAPH_APP_ID: '',
GRAPH_CLIENT_TOKEN: '', GRAPH_CLIENT_TOKEN: '',
@@ -29,8 +31,14 @@ export default Object.freeze({
FEEDBACK_GROUP_LINK: 'https://github.com/facebook/flipper/issues', FEEDBACK_GROUP_LINK: 'https://github.com/facebook/flipper/issues',
// Workplace Group ID's // Workplace Group ID's
LITHO_SUPPORT_GROUP_ID: 0, DEFAULT_SUPPORT_GROUP: {
GRAPHQL_ANDROID_SUPPORT_GROUP_ID: 0, name: 'Default Support Group',
GRAPHQL_IOS_SUPPORT_GROUP_ID: 0, workplaceGroupID: 0,
COMPONENTKIT_GROUP_ID: 0, requiredPlugins: ['Inspector'],
defaultPlugins: ['DeviceLogs'],
supportedOS: ['Android'] as Array<OS>,
deeplinkSuffix: 'default',
},
SUPPORT_GROUPS: [],
}); });

View File

@@ -26,12 +26,8 @@ import {State as PluginMessageQueueState} from '../reducers/pluginMessageQueue';
import Client from '../Client'; import Client from '../Client';
import {OS} from '../devices/BaseDevice'; import {OS} from '../devices/BaseDevice';
const { const {DEFAULT_SUPPORT_GROUP} = constants;
GRAPHQL_IOS_SUPPORT_GROUP_ID,
GRAPHQL_ANDROID_SUPPORT_GROUP_ID,
LITHO_SUPPORT_GROUP_ID,
COMPONENTKIT_GROUP_ID,
} = constants;
type SubmediaType = type SubmediaType =
| {uploadID: string; status: 'Uploaded'} | {uploadID: string; status: 'Uploaded'}
| {status: 'NotUploaded' | 'Uploading'}; | {status: 'NotUploaded' | 'Uploading'};
@@ -47,23 +43,26 @@ export type GroupValidationErrors = {
export class Group { export class Group {
constructor( constructor(
name: GroupNames, name: string,
workplaceGroupID: number, workplaceGroupID: number,
requiredPlugins: Array<string>, requiredPlugins: Array<string>,
defaultPlugins: Array<string>, defaultPlugins: Array<string>,
supportedOS: Array<OS>, supportedOS: Array<OS>,
deeplinkSuffix: string,
) { ) {
this.name = name; this.name = name;
this.requiredPlugins = requiredPlugins; this.requiredPlugins = requiredPlugins;
this.defaultPlugins = defaultPlugins; this.defaultPlugins = defaultPlugins;
this.workplaceGroupID = workplaceGroupID; this.workplaceGroupID = workplaceGroupID;
this.supportedOS = supportedOS; this.supportedOS = supportedOS;
this.deeplinkSuffix = deeplinkSuffix;
} }
readonly name: GroupNames; readonly name: string;
requiredPlugins: Array<string>; requiredPlugins: Array<string>;
defaultPlugins: Array<string>; defaultPlugins: Array<string>;
workplaceGroupID: number; workplaceGroupID: number;
supportedOS: Array<OS>; supportedOS: Array<OS>;
deeplinkSuffix: string;
getPluginsToSelect(): Array<string> { getPluginsToSelect(): Array<string> {
return Array.from( return Array.from(
@@ -252,49 +251,36 @@ export class Group {
} }
} }
export type GroupNames = const DEFAULT_GROUP = new Group(
| 'Litho Support' DEFAULT_SUPPORT_GROUP.name,
| 'GraphQL Android Support' DEFAULT_SUPPORT_GROUP.workplaceGroupID,
| 'GraphQL iOS Support' DEFAULT_SUPPORT_GROUP.requiredPlugins,
| 'ComponentKit'; DEFAULT_SUPPORT_GROUP.defaultPlugins,
DEFAULT_SUPPORT_GROUP.supportedOS,
export const LITHO_GROUP = new Group( DEFAULT_SUPPORT_GROUP.deeplinkSuffix,
'Litho Support',
LITHO_SUPPORT_GROUP_ID,
['Inspector'],
['Sections', 'DeviceLogs'],
['Android'],
);
export const GRAPHQL_ANDROID_GROUP = new Group(
'GraphQL Android Support',
GRAPHQL_ANDROID_SUPPORT_GROUP_ID,
['GraphQL', 'Network'],
['DeviceLogs'],
['Android'],
);
export const GRAPHQL_IOS_GROUP = new Group(
'GraphQL iOS Support',
GRAPHQL_IOS_SUPPORT_GROUP_ID,
['GraphQL', 'Network'],
['DeviceLogs'],
['iOS'],
);
export const COMPONENTKIT_GROUP = new Group(
'ComponentKit',
COMPONENTKIT_GROUP_ID,
['Inspector'],
['Sections', 'DeviceLogs'],
['iOS'],
); );
export const SUPPORTED_GROUPS: Array<Group> = [ export const SUPPORTED_GROUPS: Array<Group> = [
LITHO_GROUP, DEFAULT_GROUP,
GRAPHQL_ANDROID_GROUP, ...constants.SUPPORT_GROUPS.map(
GRAPHQL_IOS_GROUP, ({
COMPONENTKIT_GROUP, name,
workplaceGroupID,
requiredPlugins,
defaultPlugins,
supportedOS,
deeplinkSuffix,
}) => {
return new Group(
name,
workplaceGroupID,
requiredPlugins,
defaultPlugins,
supportedOS,
deeplinkSuffix,
);
},
),
]; ];
export type MediaType = Array<MediaObject>; export type MediaType = Array<MediaObject>;
@@ -347,7 +333,7 @@ export const initialState: () => State = () => ({
].join('\n'), ].join('\n'),
commitHash: '', commitHash: '',
appName: '', appName: '',
selectedGroup: LITHO_GROUP, selectedGroup: DEFAULT_GROUP,
}, },
}); });
export default function reducer( export default function reducer(