From 2adb22db52abecdd142204282ee1437cd0d8a42b Mon Sep 17 00:00:00 2001 From: Kibana Machine <42973632+kibanamachine@users.noreply.github.com> Date: Tue, 2 Jan 2024 13:15:39 -0500 Subject: [PATCH] [8.12] [Security Solution] Adds feature flag to enable/disable ESQL in timeline (#174029) (#174110) # Backport This will backport the following commits from `main` to `8.12`: - [[Security Solution] Adds feature flag to enable/disable ESQL in timeline (#174029)](https://github.com/elastic/kibana/pull/174029) ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) Co-authored-by: Jatin Kathuria --- .../security_solution/common/experimental_features.ts | 5 +++++ .../public/assistant/send_to_timeline/index.tsx | 10 ++++++++++ .../hooks/timeline/use_init_timeline_url_param.ts | 11 +++++++++-- .../components/timeline/tabs_content/index.tsx | 4 +++- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/plugins/security_solution/common/experimental_features.ts index fdbeaabb08f2e..22c71d4715f8f 100644 --- a/x-pack/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/plugins/security_solution/common/experimental_features.ts @@ -153,6 +153,11 @@ export const allowedExperimentalValues = Object.freeze({ * version and the latest available version. */ jsonPrebuiltRulesDiffingEnabled: true, + /* + * Disables discover esql tab within timeline + * + */ + timelineEsqlTabDisabled: false, }); type ExperimentalConfigKeys = Array; diff --git a/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx b/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx index 114d5deb5f3ec..b544e6f90e52a 100644 --- a/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx +++ b/x-pack/plugins/security_solution/public/assistant/send_to_timeline/index.tsx @@ -36,6 +36,7 @@ import { } from '../../timelines/store/timeline/actions'; import { useDiscoverInTimelineContext } from '../../common/components/discover_in_timeline/use_discover_in_timeline_context'; import { useShowTimeline } from '../../common/utils/timeline/use_show_timeline'; +import { useIsExperimentalFeatureEnabled } from '../../common/hooks/use_experimental_features'; export interface SendToTimelineButtonProps { asEmptyButton: boolean; @@ -60,6 +61,8 @@ export const SendToTimelineButton: React.FunctionComponent sourcererSelectors.getSourcererDataViewsSelector(), [] @@ -226,6 +229,13 @@ export const SendToTimelineButton: React.FunctionComponent { const dispatch = useDispatch(); + const isEsqlTabDisabled = useIsExperimentalFeatureEnabled('timelineEsqlTabDisabled'); + const onInitialize = useCallback( (initialState: TimelineUrl | null) => { if (initialState != null) { queryTimelineById({ - activeTimelineTab: initialState.activeTab, + activeTimelineTab: + initialState.activeTab === TimelineTabs.esql && isEsqlTabDisabled + ? TimelineTabs.query + : initialState.activeTab, duplicate: false, graphEventId: initialState.graphEventId, timelineId: initialState.id, @@ -38,7 +45,7 @@ export const useInitTimelineFromUrlParam = () => { }); } }, - [dispatch] + [dispatch, isEsqlTabDisabled] ); useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx index 4deaf849b6272..255ca11890e63 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/timeline/tabs_content/index.tsx @@ -15,6 +15,7 @@ import { useDispatch } from 'react-redux'; import styled from 'styled-components'; import { FormattedMessage } from '@kbn/i18n-react'; +import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features'; import { useKibana } from '../../../../common/lib/kibana'; import { useAssistantTelemetry } from '../../../../assistant/use_assistant_telemetry'; import { useConversationStore } from '../../../../assistant/use_conversation_store'; @@ -290,6 +291,7 @@ const TabsContentComponent: React.FC = ({ sessionViewConfig, timelineDescription, }) => { + const isEsqlTabInTimelineDisabled = useIsExperimentalFeatureEnabled('timelineEsqlTabDisabled'); const isEsqlSettingEnabled = useKibana().services.configSettings.ESQLEnabled; const { hasAssistantPrivilege } = useAssistantAvailability(); const dispatch = useDispatch(); @@ -404,7 +406,7 @@ const TabsContentComponent: React.FC = ({ {i18n.QUERY_TAB} {showTimeline && } - {isEsqlSettingEnabled && ( + {!isEsqlTabInTimelineDisabled && isEsqlSettingEnabled && (