From 8b7b911637a340e99b071ee77a58091895a3f353 Mon Sep 17 00:00:00 2001 From: Pritesh Nandgaonkar Date: Wed, 5 Feb 2020 04:23:09 -0800 Subject: [PATCH] Show warning when exporting empty data Summary: Shows warning when requiredplugin has empty data. It also makes the validation box as an error one, to distinguish between the two boxes. Reviewed By: passy Differential Revision: D19704910 fbshipit-source-id: ffd9413c3cd65c09f8b6019889191decefa6b6f6 --- src/reducers/supportForm.tsx | 40 +++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/src/reducers/supportForm.tsx b/src/reducers/supportForm.tsx index 04dbfa764..2d2a3d653 100644 --- a/src/reducers/supportForm.tsx +++ b/src/reducers/supportForm.tsx @@ -19,8 +19,12 @@ import {addStatusMessage, removeStatusMessage} from './application'; import constants from '../fb-stubs/constants'; import {getInstance} from '../fb-stubs/Logger'; import {logPlatformSuccessRate} from '../utils/metrics'; - +import {getActivePersistentPlugins} from '../utils/pluginUtils'; export const SUPPORT_FORM_PREFIX = 'support-form-v2'; +import {State as PluginStatesState} from './pluginStates'; +import {State as PluginsState} from '../reducers/plugins'; +import {State as PluginMessageQueueState} from '../reducers/pluginMessageQueue'; +import Client from '../Client'; const { GRAPHQL_IOS_SUPPORT_GROUP_ID, @@ -177,6 +181,40 @@ export class Group { : {kind: 'success'}, ); } + + getWarningMessage( + plugins: PluginsState, + pluginsState: PluginStatesState, + pluginsMessageQueue: PluginMessageQueueState, + client: Client, + ): string | null { + const activePersistentPlugins = getActivePersistentPlugins( + pluginsState, + pluginsMessageQueue, + plugins, + client, + ); + const emptyPlugins: Array = []; + for (const plugin of this.requiredPlugins) { + if ( + !activePersistentPlugins.find(o => { + return o.id === plugin; + }) + ) { + emptyPlugins.push(plugin); + } + } + const commonStr = 'Are you sure you want to submit?'; + if (emptyPlugins.length == 1) { + return `There is no data in ${emptyPlugins.pop()} plugin. ${commonStr}`; + } else if (emptyPlugins.length > 1) { + return `The following plugins have no data: ${emptyPlugins.join( + ',', + )}. ${commonStr}`; + } + + return null; + } } export type GroupNames =