Skip to content

Commit 22ba94d

Browse files
committed
Multiple types of error messages
1 parent c522ded commit 22ba94d

2 files changed

Lines changed: 38 additions & 12 deletions

File tree

x-pack/plugins/siem/public/cases/components/callout/index.tsx

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,49 @@ import * as i18n from './translations';
1212

1313
export * from './helpers';
1414

15+
interface ErrorMessage {
16+
title: string;
17+
description: JSX.Element;
18+
errorType?: 'primary' | 'success' | 'warning' | 'danger';
19+
}
20+
1521
interface CaseCallOutProps {
1622
title: string;
1723
message?: string;
18-
messages?: Array<{ title: string; description: JSX.Element }>;
24+
messages?: ErrorMessage[];
1925
}
2026

2127
const CaseCallOutComponent = ({ title, message, messages }: CaseCallOutProps) => {
2228
const [showCallOut, setShowCallOut] = useState(true);
2329
const handleCallOut = useCallback(() => setShowCallOut(false), [setShowCallOut]);
2430

31+
const groupedErrorMessages = (messages ?? []).reduce((acc, currentMessage: ErrorMessage) => {
32+
const key = currentMessage.errorType == null ? 'primary' : currentMessage.errorType;
33+
return {
34+
...acc,
35+
[key]: [...(acc[key] || []), currentMessage],
36+
};
37+
}, {} as { [key in NonNullable<ErrorMessage['errorType']>]: ErrorMessage[] });
38+
2539
return showCallOut ? (
2640
<>
27-
<EuiCallOut title={title} color="primary" iconType="gear" data-test-subj="case-call-out">
28-
{!isEmpty(messages) && (
29-
<EuiDescriptionList data-test-subj="callout-messages" listItems={messages} />
30-
)}
31-
{!isEmpty(message) && <p data-test-subj="callout-message">{message}</p>}
32-
<EuiButton data-test-subj="callout-dismiss" color="primary" onClick={handleCallOut}>
33-
{i18n.DISMISS_CALLOUT}
34-
</EuiButton>
35-
</EuiCallOut>
36-
<EuiSpacer />
41+
{(Object.keys(groupedErrorMessages) as Array<keyof ErrorMessage['errorType']>).map(key => (
42+
<React.Fragment key={key}>
43+
<EuiCallOut title={title} color={key} iconType="gear" data-test-subj="case-call-out">
44+
{!isEmpty(messages) && (
45+
<EuiDescriptionList
46+
data-test-subj="callout-messages"
47+
listItems={groupedErrorMessages[key]}
48+
/>
49+
)}
50+
{!isEmpty(message) && <p data-test-subj="callout-message">{message}</p>}
51+
<EuiButton data-test-subj="callout-dismiss" color="primary" onClick={handleCallOut}>
52+
{i18n.DISMISS_CALLOUT}
53+
</EuiButton>
54+
</EuiCallOut>
55+
<EuiSpacer />
56+
</React.Fragment>
57+
))}
3758
</>
3859
) : null;
3960
};

x-pack/plugins/siem/public/cases/components/use_push_to_service/index.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,11 @@ export const usePushToService = ({
6767
}, [caseId, caseServices, caseConnectorId, caseConnectorName, postPushToService, updateCase]);
6868

6969
const errorsMsg = useMemo(() => {
70-
let errors: Array<{ title: string; description: JSX.Element }> = [];
70+
let errors: Array<{
71+
title: string;
72+
description: JSX.Element;
73+
errorType?: 'primary' | 'success' | 'warning' | 'danger';
74+
}> = [];
7175
if (actionLicense != null && !actionLicense.enabledInLicense) {
7276
errors = [...errors, getLicenseError()];
7377
}
@@ -115,6 +119,7 @@ export const usePushToService = ({
115119
id="xpack.siem.case.caseView.pushToServiceDisableByInvalidConnector"
116120
/>
117121
),
122+
errorType: 'danger',
118123
},
119124
];
120125
}

0 commit comments

Comments
 (0)