From 789284da445ccb42eb7286ad3cbf851c62d91543 Mon Sep 17 00:00:00 2001 From: lgestc Date: Thu, 9 Jan 2025 12:18:49 +0100 Subject: [PATCH 1/3] remove unused fields from the sourcerer hook result --- .../public/sourcerer/containers/index.tsx | 18 +--------- .../containers/field_types_provider.tsx | 8 +++-- .../components/barchart/field_selector.tsx | 25 +++++++------ .../components/barchart/wrapper.tsx | 8 +---- .../indicators/components/table/table.tsx | 3 +- .../indicators/hooks/use_fields.test.ts | 35 +++++++++++++++++++ .../modules/indicators/hooks/use_fields.ts | 19 ++++++++++ .../hooks/use_sourcerer_data_view.ts | 17 ++------- .../modules/indicators/pages/indicators.tsx | 4 +-- .../threat_intelligence/public/types.ts | 14 ++------ 10 files changed, 79 insertions(+), 72 deletions(-) create mode 100644 x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.test.ts create mode 100644 x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.ts diff --git a/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/index.tsx b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/index.tsx index 9643e9272f8be..2ad961fac3c42 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/index.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/sourcerer/containers/index.tsx @@ -119,28 +119,12 @@ export const useSourcererDataView = ( () => ({ browserFields: browserFields(), dataViewId: sourcererDataView.id, - indexPattern: { - fields: Object.values(sourcererDataView.fields || {}), - title: selectedPatterns.join(','), - getName: () => selectedPatterns.join(','), - }, indicesExist, loading: loading || sourcererDataView.loading, - // all active & inactive patterns in DATA_VIEW - patternList: sourcererDataView.title.split(','), // selected patterns in DATA_VIEW including filter selectedPatterns, - // if we have to do an update to data view, tell us which patterns are active - ...(legacyPatterns.length > 0 ? { activePatterns: sourcererDataView.patternList } : {}), sourcererDataView: sourcererDataView.dataView, }), - [ - browserFields, - sourcererDataView, - selectedPatterns, - indicesExist, - loading, - legacyPatterns.length, - ] + [browserFields, sourcererDataView, selectedPatterns, indicesExist, loading] ); }; diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/containers/field_types_provider.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/field_types_provider.tsx index bff41a2a4ef01..ef3c72cd0ba0d 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/containers/field_types_provider.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/containers/field_types_provider.tsx @@ -16,16 +16,18 @@ export const FieldTypesContext = createContext> = ({ children }) => { - const { indexPattern } = useSourcererDataView(); + const { + sourcererDataView: { fields = {} }, + } = useSourcererDataView(); // field name to field type map to allow the cell_renderer to format dates const fieldTypes: FieldTypesContextValue = useMemo( () => - indexPattern.fields.reduce((acc, field) => { + Object.values(fields).reduce((acc, field) => { acc[field.name] = field.type; return acc; }, {} as FieldTypesContextValue), - [indexPattern.fields] + [fields] ); return {children}; diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx index cceccc918ba37..1e5eb549e1afe 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx @@ -7,16 +7,15 @@ import React, { memo, useCallback, useMemo, useState } from 'react'; import { EuiComboBox } from '@elastic/eui'; -import { DataViewField } from '@kbn/data-views-plugin/common'; +import { FieldSpec } from '@kbn/data-views-plugin/common'; import { EuiComboBoxOptionOption } from '@elastic/eui/src/components/combo_box/types'; -import { SecuritySolutionDataViewBase } from '../../../../types'; import { RawIndicatorFieldId } from '../../../../../common/types/indicator'; import { useStyles } from './styles'; import { DROPDOWN_TEST_ID } from './test_ids'; import { COMBOBOX_PREPEND_LABEL } from './translations'; +import { useFields } from '../../hooks/use_fields'; export interface IndicatorsFieldSelectorProps { - indexPattern: SecuritySolutionDataViewBase; valueChange: (value: EuiComboBoxOptionOption) => void; defaultStackByValue?: RawIndicatorFieldId; } @@ -25,10 +24,12 @@ const DEFAULT_STACK_BY_VALUE = RawIndicatorFieldId.Feed; const COMBOBOX_SINGLE_SELECTION = { asPlainText: true }; export const IndicatorsFieldSelector = memo( - ({ indexPattern, valueChange, defaultStackByValue = DEFAULT_STACK_BY_VALUE }) => { + ({ valueChange, defaultStackByValue = DEFAULT_STACK_BY_VALUE }) => { + const rawFields = useFields(); + const styles = useStyles(); - const defaultStackByValueInfo = indexPattern.fields.find( - (f: DataViewField) => f.name === defaultStackByValue + const defaultStackByValueInfo = rawFields.find( + (f: FieldSpec) => f.name === defaultStackByValue ); const [selectedField, setSelectedField] = useState>>([ { @@ -38,13 +39,11 @@ export const IndicatorsFieldSelector = memo( ]); const fields: Array> = useMemo( () => - indexPattern - ? indexPattern.fields.map((f: DataViewField) => ({ - label: f.name, - value: f.type, - })) - : [], - [indexPattern] + rawFields.map((f: FieldSpec) => ({ + label: f.name, + value: f.type, + })), + [rawFields] ); const selectedFieldChange = useCallback( diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx index 1a2f04f59cb85..7df328e04bb94 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.tsx @@ -18,7 +18,6 @@ import { import { FormattedMessage } from '@kbn/i18n-react'; import { TimeRange } from '@kbn/es-query'; import { TimeRangeBounds } from '@kbn/data-plugin/common'; -import { SecuritySolutionDataViewBase } from '../../../../types'; import { RawIndicatorFieldId } from '../../../../../common/types/indicator'; import { IndicatorsFieldSelector } from './field_selector'; import { IndicatorsBarChart } from './barchart'; @@ -36,10 +35,6 @@ export interface IndicatorsBarChartWrapperProps { * From and to values received from the KQL bar and passed down to the hook to query data. */ timeRange?: TimeRange; - /** - * List of fields coming from the Security Solution sourcerer data view, passed down to the {@link IndicatorsFieldSelector} to populate the dropdown. - */ - indexPattern: SecuritySolutionDataViewBase; series: ChartSeries[]; @@ -61,7 +56,7 @@ export interface IndicatorsBarChartWrapperProps { * and handles retrieving aggregated indicator data. */ export const IndicatorsBarChartWrapper = memo( - ({ timeRange, indexPattern, isLoading, isFetching, series, dateRange, field, onFieldChange }) => { + ({ timeRange, isLoading, isFetching, series, dateRange, field, onFieldChange }) => { if (isLoading) { return ( @@ -89,7 +84,6 @@ export const IndicatorsBarChartWrapper = memo( diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx index fa7de6647187c..2fc5c93739d4d 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.tsx @@ -25,7 +25,7 @@ import { import { CellActions } from './cell_actions'; import { cellPopoverRendererFactory } from './cell_popover_renderer'; import { cellRendererFactory } from './cell_renderer'; -import { BrowserFields, SecuritySolutionDataViewBase } from '../../../../types'; +import { BrowserFields } from '../../../../types'; import { Indicator, RawIndicatorFieldId } from '../../../../../common/types/indicator'; import { EmptyState } from '../../../../components/empty_state'; import { IndicatorsTableContext, IndicatorsTableContextValue } from '../../hooks/use_table_context'; @@ -48,7 +48,6 @@ export interface IndicatorsTableProps { */ isLoading?: boolean; isFetching?: boolean; - indexPattern: SecuritySolutionDataViewBase; browserFields: BrowserFields; columnSettings: ColumnSettingsValue; } diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.test.ts new file mode 100644 index 0000000000000..8fd2b5901a0bd --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.test.ts @@ -0,0 +1,35 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { renderHook } from '@testing-library/react'; +import { useFields } from './use_fields'; +import { useSourcererDataView } from './use_sourcerer_data_view'; + +jest.mock('./use_sourcerer_data_view'); + +describe('useFields', () => { + it('should return fields from sourcererDataView', () => { + const mockFields = { field1: {}, field2: {} }; + (useSourcererDataView as jest.Mock).mockReturnValue({ + sourcererDataView: { fields: mockFields }, + }); + + const { result } = renderHook(() => useFields()); + + expect(result.current).toEqual(Object.values(mockFields)); + }); + + it('should return an empty array if fields are undefined', () => { + (useSourcererDataView as jest.Mock).mockReturnValue({ + sourcererDataView: { fields: undefined }, + }); + + const { result } = renderHook(() => useFields()); + + expect(result.current).toEqual([]); + }); +}); diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.ts new file mode 100644 index 0000000000000..1bb76926c9456 --- /dev/null +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useMemo } from 'react'; +import { FieldSpec } from '@kbn/data-views-plugin/common'; +import { useSourcererDataView } from './use_sourcerer_data_view'; + +/** + * Custom hook to retrieve fields from the sourcerer data view. + */ +export const useFields = (): FieldSpec[] => { + const { sourcererDataView } = useSourcererDataView(); + + return useMemo(() => Object.values(sourcererDataView.fields ?? {}), [sourcererDataView.fields]); +}; diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts index d2e12d545036c..e5998c00c99fe 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_sourcerer_data_view.ts @@ -7,7 +7,6 @@ import { useMemo } from 'react'; import { RawIndicatorFieldId } from '../../../../common/types/indicator'; -import { SecuritySolutionDataViewBase } from '../../../types'; import { useSecurityContext } from '../../../hooks/use_security_context'; import { DESCRIPTION } from './translations'; @@ -27,17 +26,6 @@ const indicatorNameField = { export const useSourcererDataView = () => { const { sourcererDataView } = useSecurityContext(); - const updatedPattern = useMemo(() => { - const fields = [...sourcererDataView.indexPattern.fields, indicatorNameField]; - - return { - ...sourcererDataView.indexPattern, - fields, - } as SecuritySolutionDataViewBase; - }, [sourcererDataView.indexPattern]); - - const indexPatterns = useMemo(() => [updatedPattern], [updatedPattern]); - const browserFields = useMemo(() => { const { threat = { fields: {} } } = sourcererDataView.browserFields; @@ -55,10 +43,9 @@ export const useSourcererDataView = () => { return useMemo( () => ({ ...sourcererDataView, - indexPatterns, - indexPattern: updatedPattern, browserFields, + patternList: sourcererDataView.selectedPatterns, }), - [browserFields, indexPatterns, sourcererDataView, updatedPattern] + [browserFields, sourcererDataView] ); }; diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx index f2a7b566bd5d6..8e5321aab5a2e 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/pages/indicators.tsx @@ -37,7 +37,7 @@ const IndicatorsPageProviders: FC> = ({ children }) = const IndicatorsPageContent: VFC = () => { const { blockListIndicatorValue } = useBlockListContext(); - const { browserFields, indexPattern, sourcererDataView } = useSourcererDataView(); + const { sourcererDataView, browserFields } = useSourcererDataView(); const columnSettings = useColumnSettings(); @@ -91,7 +91,6 @@ const IndicatorsPageContent: VFC = () => { dateRange={dateRange} series={series} timeRange={timeRange} - indexPattern={indexPattern} field={selectedField} onFieldChange={onFieldChange} isFetching={isFetchingAggregatedIndicators} @@ -100,7 +99,6 @@ const IndicatorsPageContent: VFC = () => { ; -} - // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface ThreatIntelligencePluginSetup {} @@ -66,7 +57,6 @@ export type BrowserFields = Readonly>>; export interface SelectedDataView { sourcererDataView: DataViewSpec; - indexPattern: SecuritySolutionDataViewBase; browserFields: BrowserFields; selectedPatterns: string[]; loading: boolean; From 899f80adba91c46ed4e7cee5a608e9f2b502701b Mon Sep 17 00:00:00 2001 From: lgestc Date: Tue, 14 Jan 2025 14:22:27 +0100 Subject: [PATCH 2/3] fix types --- .../barchart/field_selector.stories.tsx | 18 +----------------- .../barchart/field_selector.test.tsx | 16 ---------------- .../components/barchart/wrapper.stories.tsx | 17 ----------------- .../components/barchart/wrapper.test.tsx | 17 ----------------- .../components/table/table.stories.tsx | 7 ------- .../indicators/components/table/table.test.tsx | 2 -- 6 files changed, 1 insertion(+), 76 deletions(-) diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx index bef2d16f033a6..494c90cd4a711 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.stories.tsx @@ -7,24 +7,10 @@ import React from 'react'; import { Story } from '@storybook/react'; -import { DataView, DataViewField } from '@kbn/data-views-plugin/common'; import { EuiComboBoxOptionOption } from '@elastic/eui'; import { RawIndicatorFieldId } from '../../../../../common/types/indicator'; import { IndicatorsFieldSelector } from './field_selector'; -const mockIndexPattern: DataView = { - fields: [ - { - name: '@timestamp', - type: 'date', - } as DataViewField, - { - name: 'threat.feed.name', - type: 'string', - } as DataViewField, - ], -} as DataView; - export default { component: IndicatorsFieldSelector, title: 'IndicatorsFieldSelector', @@ -33,7 +19,6 @@ export default { export const Default: Story = () => { return ( ) => window.alert(`${label} selected`) } @@ -44,7 +29,6 @@ export const Default: Story = () => { export const WithDefaultValue: Story = () => { return ( ) => window.alert(`${label} selected`) } @@ -54,5 +38,5 @@ export const WithDefaultValue: Story = () => { }; export const NoData: Story = () => { - return {}} />; + return {}} />; }; diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx index afb47dbfbedd5..880d242c74bbf 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.test.tsx @@ -7,31 +7,16 @@ import React from 'react'; import { render } from '@testing-library/react'; -import { DataView, DataViewField } from '@kbn/data-views-plugin/common'; import { TestProvidersComponent } from '../../../../mocks/test_providers'; import { IndicatorsFieldSelector } from './field_selector'; import { EuiComboBoxOptionOption } from '@elastic/eui'; import { DROPDOWN_TEST_ID } from './test_ids'; -const mockIndexPattern: DataView = { - fields: [ - { - name: '@timestamp', - type: 'date', - } as DataViewField, - { - name: 'threat.feed.name', - type: 'string', - } as DataViewField, - ], -} as DataView; - describe('', () => { it('should handle empty array of indexPatterns', () => { const { getByTestId } = render( ) => console.log(value)} /> @@ -45,7 +30,6 @@ describe('', () => { const { getByTestId } = render( ) => console.log(value)} /> diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx index a69c9e2386e3d..4c7cbdf8fa258 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/wrapper.stories.tsx @@ -10,7 +10,6 @@ import React from 'react'; import { MemoryRouter } from 'react-router-dom'; import { of } from 'rxjs'; import { Story } from '@storybook/react'; -import { DataView, DataViewField } from '@kbn/data-views-plugin/common'; import { TimeRange } from '@kbn/es-query'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { IUiSettingsClient } from '@kbn/core/public'; @@ -28,19 +27,6 @@ export default { const mockTimeRange: TimeRange = { from: '', to: '' }; -const mockIndexPattern: DataView = { - fields: [ - { - name: '@timestamp', - type: 'date', - } as DataViewField, - { - name: 'threat.feed.name', - type: 'string', - } as DataViewField, - ], -} as DataView; - const validDate: string = '1 Jan 2022 00:00:00 GMT'; const numberOfDays: number = 1; const aggregation1: Aggregation = { @@ -135,7 +121,6 @@ export const Default: Story = () => { = () => { = () => { ', () => { series={[]} field={mockField} onFieldChange={jest.fn()} - indexPattern={mockIndexPattern} timeRange={mockTimeRange} isFetching={false} isLoading={false} @@ -70,7 +55,6 @@ describe('', () => { series={[]} field={mockField} onFieldChange={jest.fn()} - indexPattern={mockIndexPattern} timeRange={mockTimeRange} isFetching={false} isLoading={true} @@ -92,7 +76,6 @@ describe('', () => { series={[]} field={mockField} onFieldChange={jest.fn()} - indexPattern={mockIndexPattern} timeRange={mockTimeRange} isFetching={true} isLoading={false} diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx index 579f409fc94e6..da44f8bd7513e 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.stories.tsx @@ -6,7 +6,6 @@ */ import React from 'react'; -import { DataView } from '@kbn/data-views-plugin/common'; import { mockIndicatorsFiltersContext } from '../../../../mocks/mock_indicators_filters_context'; import { StoryProvidersComponent } from '../../../../mocks/story_providers'; import { generateMockIndicator, Indicator } from '../../../../../common/types/indicator'; @@ -19,8 +18,6 @@ export default { title: 'IndicatorsTable', }; -const mockIndexPattern: DataView = undefined as unknown as DataView; - const stub = () => void 0; const columnSettings = { @@ -54,7 +51,6 @@ export function IndicatorsFullyLoaded() { onChangePage={stub} onChangeItemsPerPage={stub} indicatorCount={indicatorsFixture.length * 2} - indexPattern={mockIndexPattern} columnSettings={columnSettings} /> @@ -77,7 +73,6 @@ export function FirstLoad() { onChangeItemsPerPage={stub} indicatorCount={0} isLoading={true} - indexPattern={mockIndexPattern} columnSettings={columnSettings} /> @@ -103,7 +98,6 @@ export function DataUpdateInProgress() { onChangePage={stub} onChangeItemsPerPage={stub} indicatorCount={indicatorsFixture.length * 2} - indexPattern={mockIndexPattern} columnSettings={columnSettings} /> @@ -126,7 +120,6 @@ export function WithNoIndicators() { onChangeItemsPerPage={stub} indicatorCount={0} isLoading={false} - indexPattern={mockIndexPattern} columnSettings={columnSettings} /> diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx index 2a2f9e61852be..86196706c882e 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/table/table.test.tsx @@ -11,7 +11,6 @@ import { IndicatorsTable, IndicatorsTableProps } from './table'; import { TestProvidersComponent } from '../../../../mocks/test_providers'; import { generateMockIndicator, Indicator } from '../../../../../common/types/indicator'; import { BUTTON_TEST_ID, TABLE_UPDATE_PROGRESS_TEST_ID } from './test_ids'; -import { SecuritySolutionDataViewBase } from '../../../../types'; import { INDICATORS_FLYOUT_TITLE_TEST_ID } from '../flyout/test_ids'; const stub = () => {}; @@ -24,7 +23,6 @@ const tableProps: IndicatorsTableProps = { indicatorCount: 0, isLoading: false, browserFields: {}, - indexPattern: { fields: [], title: '' } as SecuritySolutionDataViewBase, columnSettings: { columnVisibility: { visibleColumns: [], From d9f9212560575b4a824913aae69e3748f9a0bba8 Mon Sep 17 00:00:00 2001 From: lgestc Date: Wed, 15 Jan 2025 16:33:24 +0100 Subject: [PATCH 3/3] naming --- .../indicators/components/barchart/field_selector.tsx | 4 ++-- ..._fields.test.ts => use_current_data_view_fields.test.ts} | 6 +++--- .../{use_fields.ts => use_current_data_view_fields.ts} | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) rename x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/{use_fields.test.ts => use_current_data_view_fields.test.ts} (82%) rename x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/{use_fields.ts => use_current_data_view_fields.ts} (91%) diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx index 1e5eb549e1afe..c6d8fa096d675 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/components/barchart/field_selector.tsx @@ -13,7 +13,7 @@ import { RawIndicatorFieldId } from '../../../../../common/types/indicator'; import { useStyles } from './styles'; import { DROPDOWN_TEST_ID } from './test_ids'; import { COMBOBOX_PREPEND_LABEL } from './translations'; -import { useFields } from '../../hooks/use_fields'; +import { useCurrentDataViewFields } from '../../hooks/use_current_data_view_fields'; export interface IndicatorsFieldSelectorProps { valueChange: (value: EuiComboBoxOptionOption) => void; @@ -25,7 +25,7 @@ const COMBOBOX_SINGLE_SELECTION = { asPlainText: true }; export const IndicatorsFieldSelector = memo( ({ valueChange, defaultStackByValue = DEFAULT_STACK_BY_VALUE }) => { - const rawFields = useFields(); + const rawFields = useCurrentDataViewFields(); const styles = useStyles(); const defaultStackByValueInfo = rawFields.find( diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.test.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_current_data_view_fields.test.ts similarity index 82% rename from x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.test.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_current_data_view_fields.test.ts index 8fd2b5901a0bd..fe0407137907a 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.test.ts +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_current_data_view_fields.test.ts @@ -6,7 +6,7 @@ */ import { renderHook } from '@testing-library/react'; -import { useFields } from './use_fields'; +import { useCurrentDataViewFields } from './use_current_data_view_fields'; import { useSourcererDataView } from './use_sourcerer_data_view'; jest.mock('./use_sourcerer_data_view'); @@ -18,7 +18,7 @@ describe('useFields', () => { sourcererDataView: { fields: mockFields }, }); - const { result } = renderHook(() => useFields()); + const { result } = renderHook(() => useCurrentDataViewFields()); expect(result.current).toEqual(Object.values(mockFields)); }); @@ -28,7 +28,7 @@ describe('useFields', () => { sourcererDataView: { fields: undefined }, }); - const { result } = renderHook(() => useFields()); + const { result } = renderHook(() => useCurrentDataViewFields()); expect(result.current).toEqual([]); }); diff --git a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.ts b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_current_data_view_fields.ts similarity index 91% rename from x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.ts rename to x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_current_data_view_fields.ts index 1bb76926c9456..e332dae52fac1 100644 --- a/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_fields.ts +++ b/x-pack/solutions/security/plugins/threat_intelligence/public/modules/indicators/hooks/use_current_data_view_fields.ts @@ -12,7 +12,7 @@ import { useSourcererDataView } from './use_sourcerer_data_view'; /** * Custom hook to retrieve fields from the sourcerer data view. */ -export const useFields = (): FieldSpec[] => { +export const useCurrentDataViewFields = (): FieldSpec[] => { const { sourcererDataView } = useSourcererDataView(); return useMemo(() => Object.values(sourcererDataView.fields ?? {}), [sourcererDataView.fields]);