Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ import { useSourcererDataView } from '../../sourcerer/containers';
import { useDiscoverState } from '../../timelines/components/timeline/tabs/esql/use_discover_state';
import { useKibana } from '../../common/lib/kibana';
import { useIsExperimentalFeatureEnabled } from '../../common/hooks/use_experimental_features';
import { useDataViewSpec } from '../../data_view_manager/hooks/use_data_view_spec';
import { useDataView } from '../../data_view_manager/hooks/use_data_view';

export interface SendToTimelineButtonProps {
asEmptyButton: boolean;
Expand Down Expand Up @@ -67,10 +67,10 @@ export const SendToTimelineButton: FC<PropsWithChildren<SendToTimelineButtonProp
const { dataViewId: oldTimelineDataViewId } = useSourcererDataView(SourcererScopeName.timeline);
const newDataViewPickerEnabled = useIsExperimentalFeatureEnabled('newDataViewPickerEnabled');

const { dataViewSpec } = useDataViewSpec(SourcererScopeName.timeline);
const { dataView } = useDataView(SourcererScopeName.timeline);

const timelineDataViewId = newDataViewPickerEnabled
? dataViewSpec?.id ?? null
? dataView?.id ?? null
: oldTimelineDataViewId;

const { setDiscoverAppState } = useDiscoverState();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import React from 'react';
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
import { DataViewPicker } from '.';
import { useDataViewSpec } from '../../hooks/use_data_view_spec';
import { useDataView } from '../../hooks/use_data_view';
import { DEFAULT_SECURITY_SOLUTION_DATA_VIEW_ID, DataViewManagerScopeName } from '../../constants';
import { sharedDataViewManagerSlice } from '../../redux/slices';
import { useDispatch } from 'react-redux';
Expand All @@ -24,8 +24,8 @@ jest.mock('../../../common/utils/global_query_string', () => ({
useUpdateUrlParam: jest.fn(),
}));

jest.mock('../../hooks/use_data_view_spec', () => ({
useDataViewSpec: jest.fn(),
jest.mock('../../hooks/use_data_view', () => ({
useDataView: jest.fn(),
}));

jest.mock('../../hooks/use_select_data_view', () => ({
Expand Down Expand Up @@ -79,11 +79,11 @@ describe('DataViewPicker', () => {
beforeEach(() => {
jest.mocked(useUpdateUrlParam).mockReturnValue(jest.fn());

jest.mocked(useDataViewSpec).mockReturnValue({
dataViewSpec: {
jest.mocked(useDataView).mockReturnValue({
dataView: {
id: DEFAULT_SECURITY_SOLUTION_DATA_VIEW_ID,
name: 'Default Security Data View',
},
} as unknown as DataView,
status: 'ready',
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ import type { SourcererUrlState } from '../../../sourcerer/store/model';
import { useUpdateUrlParam } from '../../../common/utils/global_query_string';
import { URL_PARAM_KEY } from '../../../common/hooks/use_url_state';
import { useKibana } from '../../../common/lib/kibana';
import { useDataViewSpec } from '../../hooks/use_data_view_spec';
import { sharedStateSelector } from '../../redux/selectors';
import { sharedDataViewManagerSlice } from '../../redux/slices';
import { useSelectDataView } from '../../hooks/use_select_data_view';
import { DataViewManagerScopeName } from '../../constants';
import { useManagedDataViews } from '../../hooks/use_managed_data_views';
import { useSavedDataViews } from '../../hooks/use_saved_data_views';
import { LOADING } from './translations';
import { DEFAULT_SECURITY_DATA_VIEW, LOADING } from './translations';
import { DATA_VIEW_PICKER_TEST_ID } from './constants';
import { useDataView } from '../../hooks/use_data_view';

interface DataViewPickerProps {
/**
Expand Down Expand Up @@ -55,7 +55,7 @@ export const DataViewPicker = memo(({ scope, onClosePopover, disabled }: DataVie
const closeDataViewEditor = useRef<() => void | undefined>();
const closeFieldEditor = useRef<() => void | undefined>();

const { dataViewSpec, status } = useDataViewSpec(scope);
const { dataView, status } = useDataView(scope);

const { adhocDataViews: adhocDataViewSpecs, defaultDataViewId } =
useSelector(sharedStateSelector);
Expand All @@ -69,7 +69,7 @@ export const DataViewPicker = memo(({ scope, onClosePopover, disabled }: DataVie
const isDefaultSourcerer = scope === DataViewManagerScopeName.default;
const updateUrlParam = useUpdateUrlParam<SourcererUrlState>(URL_PARAM_KEY.sourcerer);

const dataViewId = dataViewSpec?.id;
const dataViewId = dataView?.id;

// NOTE: this function is called in response to user interaction with the picker,
// hence - it is the only place where we should update the url param for the data view selection.
Expand Down Expand Up @@ -154,10 +154,16 @@ export const DataViewPicker = memo(({ scope, onClosePopover, disabled }: DataVie
return { label: LOADING };
}

if (dataView?.id === defaultDataViewId) {
return {
label: DEFAULT_SECURITY_DATA_VIEW,
};
}

return {
label: dataViewSpec?.name || dataViewSpec?.id || 'Data view',
label: dataView?.name || dataView?.id || 'Data view',
};
}, [dataViewSpec?.name, dataViewSpec?.id, status]);
}, [dataView?.id, dataView?.name, defaultDataViewId, status]);

return (
<div data-test-subj={DATA_VIEW_PICKER_TEST_ID}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ export interface UseDataViewSpecResult {

/**
* Returns an object with the dataViewSpec and status values for the given scopeName.
* IMPORTANT: If fields are not required, make sure to pass `includeFields = false`.
*/
export const useDataViewSpec = (
scopeName: DataViewManagerScopeName = DataViewManagerScopeName.default
scopeName: DataViewManagerScopeName = DataViewManagerScopeName.default,
includeFields = true
): UseDataViewSpecResult => {
const { dataView, status } = useDataView(scopeName);

Expand All @@ -42,6 +44,6 @@ export const useDataViewSpec = (
};
}

return { dataViewSpec: dataView?.toSpec?.(), status };
}, [dataView, status]);
return { dataViewSpec: dataView?.toSpec?.(includeFields), status };
}, [dataView, includeFields, status]);
};
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ import { defaultUdtHeaders } from '../components/timeline/body/column_headers/de
import { timelineDefaults } from '../store/defaults';
import { useSelectDataView } from '../../data_view_manager/hooks/use_select_data_view';
import { DataViewManagerScopeName } from '../../data_view_manager/constants';
import { useDataViewSpec } from '../../data_view_manager/hooks/use_data_view_spec';
import { useSelectedPatterns } from '../../data_view_manager/hooks/use_selected_patterns';
import { sourcererActions, sourcererSelectors } from '../../sourcerer/store';
import { SourcererScopeName } from '../../sourcerer/store/model';
import { useEnableExperimental } from '../../common/hooks/use_experimental_features';
import { useDataView } from '../../data_view_manager/hooks/use_data_view';

export interface UseCreateTimelineParams {
/**
Expand Down Expand Up @@ -59,14 +59,12 @@ export const useCreateTimeline = ({
) ?? { id: '', patternList: [] };

const { newDataViewPickerEnabled } = useEnableExperimental();
const { dataViewSpec: experimentalDataViewSpec } = useDataViewSpec(
DataViewManagerScopeName.default
);
const { dataView: experimentalDataView } = useDataView(DataViewManagerScopeName.default);
const experimentalSelectedPatterns = useSelectedPatterns(DataViewManagerScopeName.default);

const dataViewId = useMemo(
() => (newDataViewPickerEnabled ? experimentalDataViewSpec.id ?? '' : oldDataViewId),
[experimentalDataViewSpec.id, newDataViewPickerEnabled, oldDataViewId]
() => (newDataViewPickerEnabled ? experimentalDataView?.id ?? '' : oldDataViewId),
[experimentalDataView?.id, newDataViewPickerEnabled, oldDataViewId]
);
const selectedPatterns = useMemo(
() => (newDataViewPickerEnabled ? experimentalSelectedPatterns : oldSelectedPatterns),
Expand Down