Skip to content

Commit

Permalink
review X
Browse files Browse the repository at this point in the history
  • Loading branch information
XavierM committed May 5, 2020
1 parent 5bd15e8 commit 7a6f237
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 54 deletions.
34 changes: 18 additions & 16 deletions x-pack/plugins/siem/public/components/open_timeline/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,20 @@ export const StatefulOpenTimelineComponent = React.memo<OpenTimelineOwnProps>(
const [sortField, setSortField] = useState(DEFAULT_SORT_FIELD);

const { timelineTypes, timelineTabs, timelineFilters } = useTimelineTypes();
const { fetchAllTimeline, timelines, loading, totalCount, refetch } = useGetAllTimeline();
const { fetchAllTimeline, timelines, loading, totalCount } = useGetAllTimeline();

const refetch = useCallback(() => {
fetchAllTimeline({
pageInfo: {
pageIndex: pageIndex + 1,
pageSize,
},
search,
sort: { sortField: sortField as SortFieldTimeline, sortOrder: sortDirection as Direction },
onlyUserFavorite: onlyFavorites,
timelineTypes,
});
}, [pageIndex, pageSize, search, sortField, sortDirection, timelineTypes, onlyFavorites]);

/** Invoked when the user presses enters to submit the text in the search input */
const onQueryChange: OnQueryChange = useCallback((query: EuiSearchBarQuery) => {
Expand Down Expand Up @@ -139,8 +152,6 @@ export const StatefulOpenTimelineComponent = React.memo<OpenTimelineOwnProps>(

const deleteTimelines: DeleteTimelines = useCallback(
async (timelineIds: string[]) => {
const existingTimelines = [...timelines];
const existingTimelinesCount = totalCount;
if (timelineIds.includes(timeline.savedObjectId || '')) {
createNewTimeline({ id: 'timeline-1', columns: defaultHeaders, show: false });
}
Expand All @@ -153,9 +164,9 @@ export const StatefulOpenTimelineComponent = React.memo<OpenTimelineOwnProps>(
fetchPolicy: 'no-cache',
variables: { id: timelineIds },
});
refetch(existingTimelines, existingTimelinesCount);
refetch();
},
[apolloClient, createNewTimeline, refetch, timeline, timelines, totalCount]
[apolloClient, createNewTimeline, refetch, timeline]
);

const onDeleteOneTimeline: OnDeleteOneTimeline = useCallback(
Expand Down Expand Up @@ -235,17 +246,8 @@ export const StatefulOpenTimelineComponent = React.memo<OpenTimelineOwnProps>(
}, []);

useEffect(() => {
fetchAllTimeline({
pageInfo: {
pageIndex: pageIndex + 1,
pageSize,
},
search,
sort: { sortField: sortField as SortFieldTimeline, sortOrder: sortDirection as Direction },
onlyUserFavorite: onlyFavorites,
timelineTypes,
});
}, [pageIndex, pageSize, search, sortField, sortDirection, timelineTypes, onlyFavorites]);
refetch();
}, [refetch]);

return !isModal ? (
<OpenTimeline
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export const useTimelineTypes = (): {
tabName === TimelineType.default || tabName === TimelineType.template ? tabName : null
);

const getTabs: (timelineTabsStyle: TimelineTabsStyle) => TimelineTab[] = (
const getFilterOrTabs: (timelineTabsStyle: TimelineTabsStyle) => TimelineTab[] = (
timelineTabsStyle: TimelineTabsStyle
) => [
{
Expand Down Expand Up @@ -65,7 +65,7 @@ export const useTimelineTypes = (): {
return (
<>
<EuiTabs>
{getTabs(TimelineTabsStyle.tab).map((tab: TimelineTab) => (
{getFilterOrTabs(TimelineTabsStyle.tab).map((tab: TimelineTab) => (
<EuiTab
isSelected={tab.id === tabName}
disabled={tab.disabled}
Expand All @@ -80,12 +80,12 @@ export const useTimelineTypes = (): {
<EuiSpacer size="m" />
</>
);
}, [getTabs, tabName]);
}, [tabName]);

const timelineFilters = useMemo(() => {
return (
<>
{getTabs(TimelineTabsStyle.tab).map((tab: TimelineTab) => (
{getFilterOrTabs(TimelineTabsStyle.tab).map((tab: TimelineTab) => (
<EuiFilterButton
hasActiveFilters={tab.id === timelineTypes}
key={`timeline-${TimelineTabsStyle.filter}-${tab.id}`}
Expand All @@ -96,7 +96,7 @@ export const useTimelineTypes = (): {
))}
</>
);
}, [getTabs, timelineTypes]);
}, [timelineTypes]);

return {
timelineTypes,
Expand Down
19 changes: 3 additions & 16 deletions x-pack/plugins/siem/public/containers/timeline/all/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ export interface AllTimelinesArgs {
timelines: OpenTimelineResult[];
loading: boolean;
totalCount: number;
refetch: (existingTimelines?: OpenTimelineResult[], existingTotalCount?: number) => void;
}

export interface AllTimelinesVariables {
Expand Down Expand Up @@ -86,12 +85,10 @@ export const getAllTimeline = memoizeOne(
export const useGetAllTimeline = (): AllTimelinesArgs => {
const dispatch = useDispatch();
const apolloClient = useApolloClient();
const refetch = useRef<inputsModel.Refetch>();
const [, dispatchToaster] = useStateToaster();
const [allTimelines, setAllTimelines] = useState<AllTimelinesArgs>({
fetchAllTimeline: noop,
loading: false,
refetch: refetch.current ?? noop,
totalCount: 0,
timelines: [],
});
Expand All @@ -101,16 +98,11 @@ export const useGetAllTimeline = (): AllTimelinesArgs => {
let didCancel = false;
const abortCtrl = new AbortController();

const fetchData = async (
existingTimelines?: OpenTimelineResult[],
existingTotalCount?: number
) => {
const fetchData = async () => {
try {
if (apolloClient != null) {
setAllTimelines({
...allTimelines,
timelines: existingTimelines ?? allTimelines.timelines,
totalCount: existingTotalCount ?? allTimelines.totalCount,
loading: true,
});

Expand Down Expand Up @@ -142,15 +134,13 @@ export const useGetAllTimeline = (): AllTimelinesArgs => {
inputId: 'global',
id: ALL_TIMELINE_QUERY_ID,
loading: false,
refetch: refetch?.current?.bind(null, timelines, totalCount) ?? noop,
refetch: fetchData,
inspect: null,
})
);

setAllTimelines({
fetchAllTimeline,
loading: false,
refetch: refetch?.current?.bind(null, timelines, totalCount) ?? noop,
totalCount,
timelines: getAllTimeline(JSON.stringify(variables), timelines as TimelineResult[]),
});
Expand All @@ -166,21 +156,19 @@ export const useGetAllTimeline = (): AllTimelinesArgs => {
setAllTimelines({
fetchAllTimeline,
loading: false,
refetch: noop,
totalCount: 0,
timelines: [],
});
}
}
};
refetch.current = fetchData;
fetchData();
return () => {
didCancel = true;
abortCtrl.abort();
};
},
[apolloClient, allTimelines, refetch]
[apolloClient, allTimelines]
);

useEffect(() => {
Expand All @@ -192,6 +180,5 @@ export const useGetAllTimeline = (): AllTimelinesArgs => {
return {
...allTimelines,
fetchAllTimeline,
refetch: refetch.current ?? noop,
};
};
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,7 @@ export const pickSavedTimeline = (
savedTimeline.templateTimelineVersion = null;
}

console.log('pickSavedTimeline', JSON.stringify(savedTimeline));

return savedTimeline;
};
Original file line number Diff line number Diff line change
Expand Up @@ -119,35 +119,36 @@ export const importTimelinesRoute = (
return null;
}
const {
savedObjectId,
savedObjectId = null,
pinnedEventIds,
globalNotes,
eventNotes,
templateTimelineId,
templateTimelineVersion,
timelineType,
version = null,
} = parsedTimeline;
const parsedTimelineObject = omit(
timelineSavedObjectOmittedFields,
parsedTimeline
);
console.log('parsedTimeline', JSON.stringify(parsedTimeline));
console.log('parsedTimelineObject', JSON.stringify(parsedTimelineObject));
let newTimeline = null;
try {
const templateTimeline =
templateTimelineId != null
? await getTemplateTimeline(frameworkRequest, templateTimelineId)
: null;

const timeline =
templateTimeline?.savedObjectId != null || savedObjectId != null
? await getTimeline(
frameworkRequest,
templateTimeline?.savedObjectId ?? savedObjectId
)
: null;
savedObjectId != null &&
(await getTimeline(frameworkRequest, savedObjectId));
const isHandlingTemplateTimeline = timelineType === TimelineType.template;

if (
(timeline == null && !isHandlingTemplateTimeline) ||
(templateTimeline == null && isHandlingTemplateTimeline)
(timeline == null && templateTimeline == null && isHandlingTemplateTimeline)
) {
// create timeline / template timeline
newTimeline = await createTimelines(
Expand All @@ -165,15 +166,16 @@ export const importTimelinesRoute = (
status_code: 200,
});
} else if (
timeline &&
timeline != null &&
templateTimeline != null &&
isHandlingTemplateTimeline
) {
// update template timeline
const errorObj = checkIsFailureCases(
isHandlingTemplateTimeline,
timeline.version,
templateTimeline.templateTimelineVersion ?? null,
version,
templateTimelineVersion ?? null,
timeline,
templateTimeline
);
Expand All @@ -198,16 +200,16 @@ export const importTimelinesRoute = (
} else {
resolve(
createBulkErrorObject({
id: savedObjectId,
id: savedObjectId ?? 'unknown',
statusCode: 409,
message: `timeline_id: "${timeline?.savedObjectId}" already exists`,
message: `timeline_id: "${savedObjectId}" already exists`,
})
);
}
} catch (err) {
resolve(
createBulkErrorObject({
id: savedObjectId,
id: savedObjectId ?? 'unknown',
statusCode: 400,
message: err.message,
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ export interface ImportTimelinesSchema {
}

export type ImportedTimeline = SavedTimeline & {
savedObjectId: string;
savedObjectId: string | null;
version: string | null;
pinnedEventIds: string[];
globalNotes: NoteResult[];
eventNotes: NoteResult[];
Expand Down Expand Up @@ -90,12 +91,9 @@ export const timelineSavedObjectOmittedFields = [
'globalNotes',
'eventNotes',
'pinnedEventIds',
'version',
'savedObjectId',
'created',
'createdBy',
'updated',
'updatedBy',
'templateTimelineId',
'templateTimelineVersion',
];

0 comments on commit 7a6f237

Please sign in to comment.