Skip to content

Commit 87be8c7

Browse files
committed
refactor
1 parent 94cfb98 commit 87be8c7

3 files changed

Lines changed: 30 additions & 20 deletions

File tree

x-pack/solutions/security/plugins/security_solution/public/flyout_v2/shared/components/flyout_provider.tsx

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,45 @@
55
* 2.0.
66
*/
77

8-
import type { ReactElement, ReactNode } from 'react';
9-
import React from 'react';
8+
import type { FC, ReactElement, ReactNode } from 'react';
9+
import React, { useEffect } from 'react';
1010
import type { History } from 'history';
1111
import { Router } from '@kbn/shared-ux-router';
1212
import type { Store } from 'redux';
13-
import { Provider } from 'react-redux';
13+
import { Provider, useStore } from 'react-redux';
1414
import { CellActionsProvider } from '@kbn/cell-actions';
1515
import { ExpandableFlyoutProvider } from '@kbn/expandable-flyout';
1616
import { NavigationProvider } from '@kbn/security-solution-navigation';
1717
import { EntityStoreEuidApiProvider } from '@kbn/entity-store/public';
1818
import type { StartServices } from '../../../types';
1919
import { ReactQueryClientProvider } from '../../../common/containers/query_client/query_client_provider';
20-
import { KibanaContextProvider } from '../../../common/lib/kibana';
20+
import { KibanaContextProvider, useKibana } from '../../../common/lib/kibana';
2121
import { UserPrivilegesProvider } from '../../../common/components/user_privileges/user_privileges_context';
2222
import { UpsellingProvider } from '../../../common/components/upselling_provider';
2323
import { DiscoverInTimelineContextProvider } from '../../../common/components/discover_in_timeline/provider';
2424
import { AssistantProvider } from '../../../assistant/provider';
2525
import { CaseProvider } from '../../../cases/components/provider/provider';
2626
import { MlCapabilitiesProvider } from '../../../common/components/ml/permissions/ml_capabilities_provider';
27+
import { setAbsoluteRangeDatePicker } from '../../../common/store/inputs/actions';
28+
import { InputsModelId } from '../../../common/store/inputs/constants';
29+
30+
/**
31+
* Syncs Kibana's global time filter to the Security Solution Redux store on mount.
32+
* This ensures flyouts opened from outside Security Solution (e.g., Discover) use
33+
* the correct time range for alert queries.
34+
*/
35+
const TimeRangeSync: FC<{ children: ReactNode }> = ({ children }) => {
36+
const { services } = useKibana();
37+
const store = useStore();
38+
39+
useEffect(() => {
40+
const tf = services.data.query.timefilter.timefilter;
41+
const { from, to } = tf.getAbsoluteTime();
42+
store.dispatch(setAbsoluteRangeDatePicker({ id: InputsModelId.global, from, to }));
43+
}, [services, store]);
44+
45+
return <>{children}</>;
46+
};
2747

2848
export const flyoutProviders = ({
2949
services,
@@ -40,10 +60,14 @@ export const flyoutProviders = ({
4060
// TODO remove ExpandableFlyoutProvider when we're ready to drop the expandable flyout
4161
const flyoutContent = history ? (
4262
<Router history={history}>
43-
<ExpandableFlyoutProvider>{children}</ExpandableFlyoutProvider>
63+
<ExpandableFlyoutProvider>
64+
<TimeRangeSync>{children}</TimeRangeSync>
65+
</ExpandableFlyoutProvider>
4466
</Router>
4567
) : (
46-
<ExpandableFlyoutProvider>{children}</ExpandableFlyoutProvider>
68+
<ExpandableFlyoutProvider>
69+
<TimeRangeSync>{children}</TimeRangeSync>
70+
</ExpandableFlyoutProvider>
4771
);
4872

4973
return (

x-pack/solutions/security/plugins/security_solution/public/flyout_v2/shared/components/open_flyout_link.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@ import { useIsInSecurityApp } from '../../../common/hooks/is_in_security_app';
2121
import { documentFlyoutHistoryKey } from '../constants/flyout_history';
2222
import { OPEN_FLYOUT_LINK_TEST_ID } from './test_ids';
2323
import { buildFlyoutContent } from '../utils/build_flyout_content';
24-
import { setAbsoluteRangeDatePicker } from '../../../common/store/inputs/actions';
25-
import { InputsModelId } from '../../../common/store/inputs/constants';
2624

2725
export interface OpenFlyoutLinkProps {
2826
/**
@@ -74,10 +72,6 @@ export const OpenFlyoutLink: FC<OpenFlyoutLinkProps> = ({
7472

7573
const onClick = useCallback(() => {
7674
if (flyoutContent) {
77-
const tf = services.data.query.timefilter.timefilter;
78-
const { from, to } = tf.getAbsoluteTime();
79-
store.dispatch(setAbsoluteRangeDatePicker({ id: InputsModelId.global, from, to }));
80-
8175
const baseFlyoutProperties = asParent
8276
? defaultToolsFlyoutProperties
8377
: defaultDocumentFlyoutProperties;

x-pack/solutions/security/plugins/security_solution/public/one_discover/cell_renderers/host_cell_renderer.tsx

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ import { Host } from '../../flyout_v2/entity/host/main';
1818
import type { StartServices } from '../../types';
1919
import type { SecurityAppStore } from '../../common/store/types';
2020
import { useIsInSecurityApp } from '../../common/hooks/is_in_security_app';
21-
import { setAbsoluteRangeDatePicker } from '../../common/store/inputs/actions';
22-
import { InputsModelId } from '../../common/store/inputs/constants';
2321

2422
export const HOST_CELL_RENDERER_FIELDS = new Set(['host.name', 'host.hostname']);
2523

@@ -61,12 +59,6 @@ export const HostCellRenderer = React.memo<HostCellRendererProps>(
6159

6260
if (!hostName && !entityId) return;
6361

64-
// Sync Kibana's current time range to the Security Solution Redux store so that
65-
// alert queries inside the flyout use the same window Discover is showing.
66-
const tf = services.data.query.timefilter.timefilter;
67-
const { from, to } = tf.getAbsoluteTime();
68-
store.dispatch(setAbsoluteRangeDatePicker({ id: InputsModelId.global, from, to }));
69-
7062
overlays.openSystemFlyout(
7163
flyoutProviders({
7264
services,

0 commit comments

Comments
 (0)