diff --git a/x-pack/plugins/cases/public/containers/translations.ts b/x-pack/plugins/cases/public/containers/translations.ts index eb7e5ff99e518a..72aeb66772c523 100644 --- a/x-pack/plugins/cases/public/containers/translations.ts +++ b/x-pack/plugins/cases/public/containers/translations.ts @@ -81,6 +81,6 @@ export const SYNC_CASE = (caseTitle: string) => export const STATUS_CHANGED_TOASTER_TEXT = i18n.translate( 'xpack.cases.containers.statusChangeToasterText', { - defaultMessage: 'Alerts in this case have been also had their status updated', + defaultMessage: 'Updated the statuses of attached alerts.', } ); diff --git a/x-pack/plugins/cases/public/containers/use_get_cases.test.tsx b/x-pack/plugins/cases/public/containers/use_get_cases.test.tsx index fd7b2eddfe7c9a..23b57004ca4d78 100644 --- a/x-pack/plugins/cases/public/containers/use_get_cases.test.tsx +++ b/x-pack/plugins/cases/public/containers/use_get_cases.test.tsx @@ -20,12 +20,15 @@ import { UpdateKey } from './types'; import { allCases, basicCase } from './mock'; import * as api from './api'; import { TestProviders } from '../common/mock'; +import { useToasts } from '../common/lib/kibana'; jest.mock('./api'); jest.mock('../common/lib/kibana'); describe('useGetCases', () => { const abortCtrl = new AbortController(); + const addSuccess = jest.fn(); + (useToasts as jest.Mock).mockReturnValue({ addSuccess, addError: jest.fn() }); beforeEach(() => { jest.clearAllMocks(); @@ -113,6 +116,9 @@ describe('useGetCases', () => { abortCtrl.signal ); }); + expect(addSuccess).toHaveBeenCalledWith({ + title: `Updated "${basicCase.title}"`, + }); }); it('refetch cases', async () => { diff --git a/x-pack/plugins/cases/public/containers/use_get_cases.tsx b/x-pack/plugins/cases/public/containers/use_get_cases.tsx index eacad3c8ca0203..de0f0f514da1bb 100644 --- a/x-pack/plugins/cases/public/containers/use_get_cases.tsx +++ b/x-pack/plugins/cases/public/containers/use_get_cases.tsx @@ -212,6 +212,7 @@ export const useGetCases = ( const dispatchUpdateCaseProperty = useCallback( async ({ updateKey, updateValue, caseId, refetchCasesStatus, version }: UpdateCase) => { + const caseData = state.data.cases.find((caseInfo) => caseInfo.id === caseId); try { didCancelUpdateCases.current = false; abortCtrlUpdateCases.current.abort(); @@ -230,6 +231,15 @@ export const useGetCases = ( dispatch({ type: 'FETCH_UPDATE_CASE_SUCCESS' }); fetchCases(state.filterOptions, state.queryParams); refetchCasesStatus(); + if (caseData) { + toasts.addSuccess({ + title: i18n.UPDATED_CASE(caseData.title), + text: + updateKey === 'status' && caseData.totalAlerts > 0 + ? i18n.STATUS_CHANGED_TOASTER_TEXT + : undefined, + }); + } } } catch (error) { if (!didCancelUpdateCases.current) { @@ -240,8 +250,7 @@ export const useGetCases = ( } } }, - // eslint-disable-next-line react-hooks/exhaustive-deps - [state.filterOptions, state.queryParams] + [fetchCases, state.data, state.filterOptions, state.queryParams, toasts] ); const refetchCases = useCallback(() => { diff --git a/x-pack/plugins/cases/public/containers/utils.test.ts b/x-pack/plugins/cases/public/containers/utils.test.ts index 3ee6182cb053dd..0dd55fbe8aacae 100644 --- a/x-pack/plugins/cases/public/containers/utils.test.ts +++ b/x-pack/plugins/cases/public/containers/utils.test.ts @@ -97,7 +97,7 @@ describe('utils', () => { expect(toast).toEqual({ title: 'Updated "My case"', - text: 'Alerts in this case have been also had their status updated', + text: 'Updated the statuses of attached alerts.', }); }); diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index bbc5309e476dda..e17ed6f278acd3 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -7694,7 +7694,6 @@ "xpack.cases.containers.markInProgressCases": "{totalCases, plural, =1 {\"{caseTitle}\"} other {{totalCases}件のケース}}を進行中に設定しました", "xpack.cases.containers.pushToExternalService": "{ serviceName }への送信が正常に完了しました", "xpack.cases.containers.reopenedCases": "{totalCases, plural, =1 {\"{caseTitle}\"} other {{totalCases}件のケース}}をオープンしました", - "xpack.cases.containers.statusChangeToasterText": "このケースのアラートはステータスが更新されました", "xpack.cases.containers.syncCase": "\"{caseTitle}\"のアラートが同期されました", "xpack.cases.containers.updatedCase": "\"{caseTitle}\"を更新しました", "xpack.cases.create.stepOneTitle": "ケースフィールド", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index ebfc41d0821b01..7850bfaba35c2b 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -7753,7 +7753,6 @@ "xpack.cases.containers.markInProgressCases": "已将{totalCases, plural, =1 {“{caseTitle}”} other { {totalCases} 个案例}}标记为进行中", "xpack.cases.containers.pushToExternalService": "已成功发送到 { serviceName }", "xpack.cases.containers.reopenedCases": "已打开{totalCases, plural, =1 {“{caseTitle}”} other { {totalCases} 个案例}}", - "xpack.cases.containers.statusChangeToasterText": "此案例中的告警也更新了状态", "xpack.cases.containers.syncCase": "“{caseTitle}”中的告警已同步", "xpack.cases.containers.updatedCase": "已更新“{caseTitle}”", "xpack.cases.create.stepOneTitle": "案例字段",