mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[Security Solution][Case] Fix bug where push button is not appearing after switching between connectors (#93986)
* Fix bug * PR review
This commit is contained in:
parent
d754b0be68
commit
a563f5a72e
7 changed files with 23 additions and 18 deletions
|
@ -469,7 +469,7 @@ describe('CaseView ', () => {
|
||||||
);
|
);
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
wrapper.find('[data-test-subj="case-refresh"]').first().simulate('click');
|
wrapper.find('[data-test-subj="case-refresh"]').first().simulate('click');
|
||||||
expect(fetchCaseUserActions).toBeCalledWith('1234', undefined);
|
expect(fetchCaseUserActions).toBeCalledWith('1234', 'resilient-2', undefined);
|
||||||
expect(fetchCase).toBeCalled();
|
expect(fetchCase).toBeCalled();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -213,7 +213,7 @@ export const CaseComponent = React.memo<CaseProps>(
|
||||||
const handleUpdateCase = useCallback(
|
const handleUpdateCase = useCallback(
|
||||||
(newCase: Case) => {
|
(newCase: Case) => {
|
||||||
updateCase(newCase);
|
updateCase(newCase);
|
||||||
fetchCaseUserActions(caseId, subCaseId);
|
fetchCaseUserActions(caseId, newCase.connector.id, subCaseId);
|
||||||
},
|
},
|
||||||
[updateCase, fetchCaseUserActions, caseId, subCaseId]
|
[updateCase, fetchCaseUserActions, caseId, subCaseId]
|
||||||
);
|
);
|
||||||
|
@ -283,9 +283,9 @@ export const CaseComponent = React.memo<CaseProps>(
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleRefresh = useCallback(() => {
|
const handleRefresh = useCallback(() => {
|
||||||
fetchCaseUserActions(caseId, subCaseId);
|
fetchCaseUserActions(caseId, caseData.connector.id, subCaseId);
|
||||||
fetchCase();
|
fetchCase();
|
||||||
}, [caseId, fetchCase, fetchCaseUserActions, subCaseId]);
|
}, [caseData.connector.id, caseId, fetchCase, fetchCaseUserActions, subCaseId]);
|
||||||
|
|
||||||
const spyState = useMemo(() => ({ caseTitle: caseData.title }), [caseData.title]);
|
const spyState = useMemo(() => ({ caseTitle: caseData.title }), [caseData.title]);
|
||||||
|
|
||||||
|
@ -388,7 +388,12 @@ export const CaseComponent = React.memo<CaseProps>(
|
||||||
caseUserActions={caseUserActions}
|
caseUserActions={caseUserActions}
|
||||||
connectors={connectors}
|
connectors={connectors}
|
||||||
data={caseData}
|
data={caseData}
|
||||||
fetchUserActions={fetchCaseUserActions.bind(null, caseId, subCaseId)}
|
fetchUserActions={fetchCaseUserActions.bind(
|
||||||
|
null,
|
||||||
|
caseId,
|
||||||
|
caseData.connector.id,
|
||||||
|
subCaseId
|
||||||
|
)}
|
||||||
isLoadingDescription={isLoading && updateKey === 'description'}
|
isLoadingDescription={isLoading && updateKey === 'description'}
|
||||||
isLoadingUserActions={isLoadingUserActions}
|
isLoadingUserActions={isLoadingUserActions}
|
||||||
onShowAlertDetails={showAlert}
|
onShowAlertDetails={showAlert}
|
||||||
|
|
|
@ -167,7 +167,7 @@ export type UpdateKey = keyof Pick<
|
||||||
export interface UpdateByKey {
|
export interface UpdateByKey {
|
||||||
updateKey: UpdateKey;
|
updateKey: UpdateKey;
|
||||||
updateValue: CasePatchRequest[UpdateKey];
|
updateValue: CasePatchRequest[UpdateKey];
|
||||||
fetchCaseUserActions?: (caseId: string, subCaseId?: string) => void;
|
fetchCaseUserActions?: (caseId: string, caseConnectorId: string, subCaseId?: string) => void;
|
||||||
updateCase?: (newCase: Case) => void;
|
updateCase?: (newCase: Case) => void;
|
||||||
caseData: Case;
|
caseData: Case;
|
||||||
onSuccess?: () => void;
|
onSuccess?: () => void;
|
||||||
|
|
|
@ -53,7 +53,7 @@ describe('useGetCaseUserActions', () => {
|
||||||
);
|
);
|
||||||
await waitForNextUpdate();
|
await waitForNextUpdate();
|
||||||
|
|
||||||
result.current.fetchCaseUserActions(basicCase.id);
|
result.current.fetchCaseUserActions(basicCase.id, basicCase.connector.id);
|
||||||
await waitForNextUpdate();
|
await waitForNextUpdate();
|
||||||
expect(spyOnPostCase).toBeCalledWith(basicCase.id, abortCtrl.signal);
|
expect(spyOnPostCase).toBeCalledWith(basicCase.id, abortCtrl.signal);
|
||||||
});
|
});
|
||||||
|
@ -65,7 +65,7 @@ describe('useGetCaseUserActions', () => {
|
||||||
useGetCaseUserActions(basicCase.id, basicCase.connector.id)
|
useGetCaseUserActions(basicCase.id, basicCase.connector.id)
|
||||||
);
|
);
|
||||||
await waitForNextUpdate();
|
await waitForNextUpdate();
|
||||||
result.current.fetchCaseUserActions(basicCase.id);
|
result.current.fetchCaseUserActions(basicCase.id, basicCase.connector.id);
|
||||||
await waitForNextUpdate();
|
await waitForNextUpdate();
|
||||||
expect(result.current).toEqual({
|
expect(result.current).toEqual({
|
||||||
...initialData,
|
...initialData,
|
||||||
|
@ -85,7 +85,7 @@ describe('useGetCaseUserActions', () => {
|
||||||
useGetCaseUserActions(basicCase.id, basicCase.connector.id)
|
useGetCaseUserActions(basicCase.id, basicCase.connector.id)
|
||||||
);
|
);
|
||||||
await waitForNextUpdate();
|
await waitForNextUpdate();
|
||||||
result.current.fetchCaseUserActions(basicCase.id);
|
result.current.fetchCaseUserActions(basicCase.id, basicCase.connector.id);
|
||||||
|
|
||||||
expect(result.current.isLoading).toBe(true);
|
expect(result.current.isLoading).toBe(true);
|
||||||
});
|
});
|
||||||
|
@ -102,7 +102,7 @@ describe('useGetCaseUserActions', () => {
|
||||||
useGetCaseUserActions(basicCase.id, basicCase.connector.id)
|
useGetCaseUserActions(basicCase.id, basicCase.connector.id)
|
||||||
);
|
);
|
||||||
await waitForNextUpdate();
|
await waitForNextUpdate();
|
||||||
result.current.fetchCaseUserActions(basicCase.id);
|
result.current.fetchCaseUserActions(basicCase.id, basicCase.connector.id);
|
||||||
|
|
||||||
expect(result.current).toEqual({
|
expect(result.current).toEqual({
|
||||||
...initialData,
|
...initialData,
|
||||||
|
|
|
@ -46,7 +46,7 @@ export const initialData: CaseUserActionsState = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface UseGetCaseUserActions extends CaseUserActionsState {
|
export interface UseGetCaseUserActions extends CaseUserActionsState {
|
||||||
fetchCaseUserActions: (caseId: string, subCaseId?: string) => void;
|
fetchCaseUserActions: (caseId: string, caseConnectorId: string, subCaseId?: string) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getExternalService = (value: string): CaseExternalService | null =>
|
const getExternalService = (value: string): CaseExternalService | null =>
|
||||||
|
@ -249,7 +249,7 @@ export const useGetCaseUserActions = (
|
||||||
const [, dispatchToaster] = useStateToaster();
|
const [, dispatchToaster] = useStateToaster();
|
||||||
|
|
||||||
const fetchCaseUserActions = useCallback(
|
const fetchCaseUserActions = useCallback(
|
||||||
async (thisCaseId: string, thisSubCaseId?: string) => {
|
async (thisCaseId: string, thisCaseConnectorId: string, thisSubCaseId?: string) => {
|
||||||
try {
|
try {
|
||||||
isCancelledRef.current = false;
|
isCancelledRef.current = false;
|
||||||
abortCtrlRef.current.abort();
|
abortCtrlRef.current.abort();
|
||||||
|
@ -279,7 +279,7 @@ export const useGetCaseUserActions = (
|
||||||
|
|
||||||
setCaseUserActionsState({
|
setCaseUserActionsState({
|
||||||
caseUserActions,
|
caseUserActions,
|
||||||
...getPushedInfo(caseUserActions, caseConnectorId),
|
...getPushedInfo(caseUserActions, thisCaseConnectorId),
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
isError: false,
|
isError: false,
|
||||||
participants,
|
participants,
|
||||||
|
@ -307,12 +307,12 @@ export const useGetCaseUserActions = (
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
[caseConnectorId]
|
[caseUserActionsState]
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isEmpty(caseId)) {
|
if (!isEmpty(caseId)) {
|
||||||
fetchCaseUserActions(caseId, subCaseId);
|
fetchCaseUserActions(caseId, caseConnectorId, subCaseId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
|
|
@ -84,7 +84,7 @@ describe('useUpdateCase', () => {
|
||||||
isError: false,
|
isError: false,
|
||||||
updateCaseProperty: result.current.updateCaseProperty,
|
updateCaseProperty: result.current.updateCaseProperty,
|
||||||
});
|
});
|
||||||
expect(fetchCaseUserActions).toBeCalledWith(basicCase.id, undefined);
|
expect(fetchCaseUserActions).toBeCalledWith(basicCase.id, '123', undefined);
|
||||||
expect(updateCase).toBeCalledWith(basicCase);
|
expect(updateCase).toBeCalledWith(basicCase);
|
||||||
expect(onSuccess).toHaveBeenCalled();
|
expect(onSuccess).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
@ -104,7 +104,7 @@ describe('useUpdateCase', () => {
|
||||||
isError: false,
|
isError: false,
|
||||||
updateCaseProperty: result.current.updateCaseProperty,
|
updateCaseProperty: result.current.updateCaseProperty,
|
||||||
});
|
});
|
||||||
expect(fetchCaseUserActions).toBeCalledWith(basicCase.id, basicSubCaseId);
|
expect(fetchCaseUserActions).toBeCalledWith(basicCase.id, '123', basicSubCaseId);
|
||||||
expect(updateCase).toBeCalledWith(basicCase);
|
expect(updateCase).toBeCalledWith(basicCase);
|
||||||
expect(onSuccess).toHaveBeenCalled();
|
expect(onSuccess).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
|
@ -105,7 +105,7 @@ export const useUpdateCase = ({
|
||||||
|
|
||||||
if (!isCancelledRef.current) {
|
if (!isCancelledRef.current) {
|
||||||
if (fetchCaseUserActions != null) {
|
if (fetchCaseUserActions != null) {
|
||||||
fetchCaseUserActions(caseId, subCaseId);
|
fetchCaseUserActions(caseId, response[0].connector.id, subCaseId);
|
||||||
}
|
}
|
||||||
if (updateCase != null) {
|
if (updateCase != null) {
|
||||||
updateCase(response[0]);
|
updateCase(response[0]);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue