@rh-support/troubleshoot 0.2.33 → 0.2.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.js +12 -2
- package/lib/esm/components/ImproveCase/FileEARule.d.ts.map +1 -1
- package/lib/esm/components/ImproveCase/FileEARule.js +1 -8
- package/lib/esm/components/Recommendations/ClusterRecommendationItems.js +3 -3
- package/lib/esm/components/Recommendations/EARules/EARule.d.ts +0 -1
- package/lib/esm/components/Recommendations/EARules/EARule.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/EARules/EARule.js +7 -22
- package/lib/esm/components/Recommendations/InsightsRuleInfo.d.ts.map +1 -1
- package/lib/esm/components/Recommendations/InsightsRuleInfo.js +5 -17
- package/lib/esm/components/shared/Rule.d.ts +0 -2
- package/lib/esm/components/shared/Rule.d.ts.map +1 -1
- package/lib/esm/components/shared/Rule.js +4 -12
- package/lib/esm/components/wizardLayout/WizardProgress.js +2 -2
- package/lib/esm/hooks/useParseRuleMarkdown.d.ts +6 -1
- package/lib/esm/hooks/useParseRuleMarkdown.d.ts.map +1 -1
- package/lib/esm/hooks/useParseRuleMarkdown.js +18 -9
- package/lib/esm/reducers/CaseReducer.d.ts +2 -2
- package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseReducer.js +14 -12
- package/lib/esm/reducers/RulesReducer.d.ts.map +1 -1
- package/lib/esm/reducers/RulesReducer.js +5 -8
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseComments.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AA6BvE,OAAO,KAA+B,MAAM,OAAO,CAAC;AAOpD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAClF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,kBAAkB,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAChH;AAED,QAAA,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"CaseComments.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AA6BvE,OAAO,KAA+B,MAAM,OAAO,CAAC;AAOpD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAClF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,kBAAkB,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAChH;AAED,QAAA,MAAM,YAAY,4EA8ShB,CAAC;AAEH,eAAe,YAAY,CAAC"}
|
|
@@ -157,16 +157,26 @@ const CaseComments = React.forwardRef((props, ref) => {
|
|
|
157
157
|
}
|
|
158
158
|
return text;
|
|
159
159
|
};
|
|
160
|
+
/* Purpose of this method is to break the default HTML Entity rendering on the UI when in plaintext mode.
|
|
161
|
+
This is achieved by directly swapping the '&' in any html entity to `&` in e.g. &euro swaps to &euro
|
|
162
|
+
so it is rendered -> &euro on the UI instead of '€' */
|
|
163
|
+
const HTMLEntityChecker = (comment) => {
|
|
164
|
+
if (comment.includes('&')) {
|
|
165
|
+
return comment.replace(/&/g, '&');
|
|
166
|
+
}
|
|
167
|
+
else
|
|
168
|
+
return comment;
|
|
169
|
+
};
|
|
160
170
|
const computeCommentText = (comment) => {
|
|
161
171
|
const parseComment = parseCommentHtml(comment.commentBody, comment.contentType);
|
|
162
172
|
if (!isEmpty(comment.commentBody) && comment.contentType === EditorMode.MARKDOWN) {
|
|
163
173
|
return (React.createElement("div", { className: "push-top-narrow comment-markdown-text", dangerouslySetInnerHTML: commentMarkdown(parseComment) }));
|
|
164
174
|
}
|
|
165
175
|
else if (!isEmpty(comment.commentBody) && comment.contentType === EditorMode.PLAIN) {
|
|
166
|
-
return (React.createElement("pre", { className: "push-top-narrow comment-plaintext reset-pre-text", dangerouslySetInnerHTML: commentText(parseComment) }));
|
|
176
|
+
return (React.createElement("pre", { className: "push-top-narrow comment-plaintext reset-pre-text", dangerouslySetInnerHTML: commentText(HTMLEntityChecker(parseComment)) }));
|
|
167
177
|
}
|
|
168
178
|
else {
|
|
169
|
-
return (React.createElement("pre", { className: "push-top-narrow comment-plaintext reset-pre-text", dangerouslySetInnerHTML: commentText(comment.commentBody) }));
|
|
179
|
+
return (React.createElement("pre", { className: "push-top-narrow comment-plaintext reset-pre-text", dangerouslySetInnerHTML: commentText(HTMLEntityChecker(comment.commentBody)) }));
|
|
170
180
|
}
|
|
171
181
|
};
|
|
172
182
|
if (!((_a = props.comment) === null || _a === void 0 ? void 0 : _a.isPublic) && !canSeePrivateComments)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileEARule.d.ts","sourceRoot":"","sources":["../../../../src/components/ImproveCase/FileEARule.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileEARule.d.ts","sourceRoot":"","sources":["../../../../src/components/ImproveCase/FileEARule.tsx"],"names":[],"mappings":"AAOA,UAAU,MAAM;CAAG;AAEnB,wBAAgB,uBAAuB,CAAC,KAAK,KAAA,SAE5C;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM,eAc/C"}
|
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
import { pcm } from '@cee-eng/hydrajs';
|
|
2
1
|
import filter from 'lodash/filter';
|
|
3
2
|
import map from 'lodash/map';
|
|
4
3
|
import React, { useContext } from 'react';
|
|
5
4
|
import { RulesStateContext } from '../../context/RulesContext';
|
|
6
|
-
import { SessionRestoreStateContext } from '../../context/SessionRestoreContext';
|
|
7
5
|
import Rule from '../shared/Rule';
|
|
8
|
-
const { SessionResourceSource } = pcm.preCase.session;
|
|
9
6
|
export function getValidAttachmentRules(rules) {
|
|
10
7
|
return filter(rules, (r) => r.visible && r.rule_type === 'enrichment' && r.rule_sub_type === 'attachment');
|
|
11
8
|
}
|
|
12
9
|
export default function FileEARule(props) {
|
|
13
10
|
const { rulesState } = useContext(RulesStateContext);
|
|
14
|
-
const { sessionRestore: { activeSessionId, sessionResourceTracking }, } = useContext(SessionRestoreStateContext);
|
|
15
11
|
const validAttachmentRules = getValidAttachmentRules(rulesState.EARules.rules);
|
|
16
12
|
const canShowFileEARule = validAttachmentRules.length > 0;
|
|
17
13
|
return (React.createElement(React.Fragment, null, canShowFileEARule &&
|
|
18
|
-
map(validAttachmentRules, (rule) => {
|
|
19
|
-
var _a, _b;
|
|
20
|
-
return (React.createElement(Rule, { description: rule.description, title: rule.title, link: rule.cta, key: rule.cta, seSessionId: activeSessionId, seResourceOriginID: (_b = (_a = sessionResourceTracking[SessionResourceSource.EDMOUND_ABOTT]) === null || _a === void 0 ? void 0 : _a.resourceOriginId) !== null && _b !== void 0 ? _b : '' }));
|
|
21
|
-
})));
|
|
14
|
+
map(validAttachmentRules, (rule) => (React.createElement(Rule, { description: rule.description, title: rule.title, link: rule.cta, key: rule.cta })))));
|
|
22
15
|
}
|
|
@@ -16,7 +16,7 @@ export function ClusterRecommendationItems(props) {
|
|
|
16
16
|
version: state.caseDetails.version,
|
|
17
17
|
product: state.caseDetails.product,
|
|
18
18
|
}), isEqual);
|
|
19
|
-
const {
|
|
19
|
+
const { parseDotMarkdownWithTracking } = useParseRuleMarkdown();
|
|
20
20
|
const onResourceClick = (e, rule) => {
|
|
21
21
|
if (e.target.tagName.toLowerCase() === 'a') {
|
|
22
22
|
const url = e.target.href.split('?')[0];
|
|
@@ -33,8 +33,8 @@ export function ClusterRecommendationItems(props) {
|
|
|
33
33
|
React.createElement("p", null, rule.details || ''),
|
|
34
34
|
rule.reason && (React.createElement(React.Fragment, null,
|
|
35
35
|
React.createElement("h3", { className: "subheading subheading-sm" }, "Reason: "),
|
|
36
|
-
React.createElement("p", { onClick: (e) => onResourceClick(e, rule), dangerouslySetInnerHTML:
|
|
36
|
+
React.createElement("p", { onClick: (e) => onResourceClick(e, rule), dangerouslySetInnerHTML: parseDotMarkdownWithTracking(rule.reason, rule.extra_data, SessionResourceSource.CLUSTER_RECOMMENDATION, 'ts-cluster-recommendation', 'se-cluster-recommendation-rule') }))),
|
|
37
37
|
rule.resolution && (React.createElement(React.Fragment, null,
|
|
38
38
|
React.createElement("h3", { className: "subheading subheading-sm" }, "Resolution: "),
|
|
39
|
-
React.createElement("p", { onClick: (e) => onResourceClick(e, rule), dangerouslySetInnerHTML:
|
|
39
|
+
React.createElement("p", { onClick: (e) => onResourceClick(e, rule), dangerouslySetInnerHTML: parseDotMarkdownWithTracking(rule.resolution, rule.extra_data, SessionResourceSource.CLUSTER_RECOMMENDATION, 'ts-cluster-recommendation', 'se-cluster-recommendation-rule') })))))))));
|
|
40
40
|
}
|
|
@@ -3,7 +3,6 @@ import { IExtendedRule } from '../../../reducers/RulesReducer';
|
|
|
3
3
|
interface IEARuleContext {
|
|
4
4
|
rule: IExtendedRule;
|
|
5
5
|
onCtaClick: (link: string) => (event: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => void;
|
|
6
|
-
getLinkWithParams: (link: string) => string;
|
|
7
6
|
}
|
|
8
7
|
export declare const EARuleContext: React.Context<IEARuleContext>;
|
|
9
8
|
export declare function useEARuleContext(): IEARuleContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EARule.d.ts","sourceRoot":"","sources":["../../../../../src/components/Recommendations/EARules/EARule.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EARule.d.ts","sourceRoot":"","sources":["../../../../../src/components/Recommendations/EARules/EARule.tsx"],"names":[],"mappings":"AACA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAK1C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,UAAU,cAAc;IACpB,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,EAAE,UAAU,CAAC,KAAK,IAAI,CAAC;CAClG;AAGD,eAAO,MAAM,aAAa,+BAGxB,CAAC;AAEH,wBAAgB,gBAAgB,mBAM/B;AACD,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;CAAA,eAyBxC;AAED,iBAAS,WAAW,gBAGnB;AAED,iBAAS,iBAAiB,gBAsBzB;AAED,iBAAS,aAAa,CAAC,EAAE,SAA6B,EAAE,SAAc,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,eAgBnH;AAED,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { pcm } from '@cee-eng/hydrajs';
|
|
2
|
-
import { markdownToHTML } from '@cee-eng/ui-toolkit';
|
|
3
2
|
import React, { useContext } from 'react';
|
|
4
3
|
import { Trans } from 'react-i18next';
|
|
5
4
|
import { SessionRestoreDispatchContext, SessionRestoreStateContext } from '../../../context/SessionRestoreContext';
|
|
5
|
+
import { useParseRuleMarkdown } from '../../../hooks/useParseRuleMarkdown';
|
|
6
6
|
import { createOrUpdateSessionResources, getSessResFromEA } from '../../../reducers/SessionRestoreReducer';
|
|
7
|
-
import RouteUtils from '../../../utils/routeUtils';
|
|
8
7
|
const { SessionResourceVisibility, SessionResourceSource } = pcm.preCase.session;
|
|
9
8
|
export const EARuleContext = React.createContext({
|
|
10
9
|
rule: {},
|
|
11
10
|
onCtaClick: null,
|
|
12
|
-
getLinkWithParams: null,
|
|
13
11
|
});
|
|
14
12
|
export function useEARuleContext() {
|
|
15
13
|
const context = React.useContext(EARuleContext);
|
|
@@ -24,16 +22,9 @@ export function EARule({ children, rule }) {
|
|
|
24
22
|
const onCtaClick = (link) => (event) => {
|
|
25
23
|
createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.EDMOUND_ABOTT, [getSessResFromEA(link, SessionResourceVisibility.VISITED, rule.rule_id)]);
|
|
26
24
|
};
|
|
27
|
-
const getLinkWithParams = (link) => {
|
|
28
|
-
var _a, _b;
|
|
29
|
-
return link.includes('redhat.com/solutions') || link.includes('redhat.com/articles')
|
|
30
|
-
? `${link}?${RouteUtils.getSEResourceQueryParams(activeSessionId, (_b = (_a = sessionResourceTracking[SessionResourceSource.EDMOUND_ABOTT]) === null || _a === void 0 ? void 0 : _a.resourceOriginId) !== null && _b !== void 0 ? _b : '', SessionResourceSource.EDMOUND_ABOTT)}`
|
|
31
|
-
: link;
|
|
32
|
-
};
|
|
33
25
|
return (React.createElement(EARuleContext.Provider, { value: {
|
|
34
26
|
rule,
|
|
35
27
|
onCtaClick,
|
|
36
|
-
getLinkWithParams,
|
|
37
28
|
} }, children));
|
|
38
29
|
}
|
|
39
30
|
function EARuleTitle() {
|
|
@@ -43,28 +34,22 @@ function EARuleTitle() {
|
|
|
43
34
|
rule.title);
|
|
44
35
|
}
|
|
45
36
|
function EARuleDescription() {
|
|
46
|
-
const { rule, onCtaClick
|
|
37
|
+
const { rule, onCtaClick } = useEARuleContext();
|
|
38
|
+
const { parseMarkdownWithTracking } = useParseRuleMarkdown();
|
|
47
39
|
const onDescriptionClick = (ev) => {
|
|
48
40
|
const target = ev.target;
|
|
49
41
|
if (target.tagName.toLowerCase() === 'a') {
|
|
50
42
|
onCtaClick(target.href.split('?')[0])(ev);
|
|
51
43
|
}
|
|
52
44
|
};
|
|
53
|
-
|
|
54
|
-
const anchorHrefRegex = /href="(.*?)"/g;
|
|
55
|
-
return {
|
|
56
|
-
__html: markdownToHTML(markdown, { openLinksInNewTab: true })
|
|
57
|
-
.replace(anchorHrefRegex, `href="${getLinkWithParams('$1')}"`)
|
|
58
|
-
.replace('<a target="blank"', '<a target="blank" class="se-recommended ts-known-vuln" data-tracking-id="se-recommended-asa-rule"'),
|
|
59
|
-
};
|
|
60
|
-
};
|
|
61
|
-
return (React.createElement("div", { className: "ea-rule", onClick: onDescriptionClick, dangerouslySetInnerHTML: parseMarkdown(rule.description) }));
|
|
45
|
+
return (React.createElement("div", { className: "ea-rule", onClick: onDescriptionClick, dangerouslySetInnerHTML: parseMarkdownWithTracking(rule.description, SessionResourceSource.EDMOUND_ABOTT, 'ts-known-vuln', 'se-recommended-asa-rule') }));
|
|
62
46
|
}
|
|
63
47
|
function EARuleArticle({ linkTitle = 'Related Article', className = '' }) {
|
|
64
|
-
const { rule, onCtaClick
|
|
48
|
+
const { rule, onCtaClick } = useEARuleContext();
|
|
49
|
+
const { getTrackingULRWithQueryParams } = useParseRuleMarkdown();
|
|
65
50
|
if (!rule.cta)
|
|
66
51
|
return null;
|
|
67
|
-
return (React.createElement("a", { className: `se-recommended ts-known-vuln ${className}`, rel: "noopener noreferrer", target: "_blank", "data-tracking-id": "se-recommended-asa-rule", onClick: onCtaClick(rule.cta), href:
|
|
52
|
+
return (React.createElement("a", { className: `se-recommended ts-known-vuln ${className}`, rel: "noopener noreferrer", target: "_blank", "data-tracking-id": "se-recommended-asa-rule", onClick: onCtaClick(rule.cta), href: getTrackingULRWithQueryParams(rule.cta, SessionResourceSource.EDMOUND_ABOTT) },
|
|
68
53
|
React.createElement(Trans, null, linkTitle)));
|
|
69
54
|
}
|
|
70
55
|
export { EARuleTitle, EARuleDescription, EARuleArticle };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InsightsRuleInfo.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/InsightsRuleInfo.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InsightsRuleInfo.d.ts","sourceRoot":"","sources":["../../../../src/components/Recommendations/InsightsRuleInfo.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAI7D,UAAU,MAAM;IACZ,GAAG,EAAE,wBAAwB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;CAC3B;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,MAAM,eAuJ1E"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { pcm } from '@cee-eng/hydrajs';
|
|
2
|
-
import { markdownToHTML } from '@cee-eng/ui-toolkit';
|
|
3
2
|
import { Accordion, AccordionContent, AccordionItem, AccordionToggle, Label, LabelGroup } from '@patternfly/react-core';
|
|
4
3
|
import BullseyeIcon from '@patternfly/react-icons/dist/js/icons/bullseye-icon';
|
|
5
4
|
import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
6
|
-
import { getRuleReasonHtml
|
|
5
|
+
import { getRuleReasonHtml } from '@rh-support/utils';
|
|
7
6
|
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
8
7
|
import { Trans } from 'react-i18next';
|
|
9
8
|
import { SessionRestoreDispatchContext, SessionRestoreStateContext } from '../../context/SessionRestoreContext';
|
|
9
|
+
import { useParseRuleMarkdown } from '../../hooks/useParseRuleMarkdown';
|
|
10
10
|
import { createOrUpdateSessionResources, getSessResFromInsights } from '../../reducers/SessionRestoreReducer';
|
|
11
|
-
import RouteUtils from '../../utils/routeUtils';
|
|
12
11
|
import { AttachmentStateContext } from '../shared/fileUpload/reducer/AttachmentReducerContext';
|
|
13
12
|
const { SessionResourceVisibility, SessionResourceSource } = pcm.preCase.session;
|
|
14
13
|
export function InsightsRuleInfo({ doc, showNewTag, duplicateKeys }) {
|
|
@@ -20,6 +19,7 @@ export function InsightsRuleInfo({ doc, showNewTag, duplicateKeys }) {
|
|
|
20
19
|
const [isAdditionalExpanded, setIsAdditionalExpanded] = useState(false);
|
|
21
20
|
const { sessionRestore: { activeSessionId, sessionResourceTracking }, } = useContext(SessionRestoreStateContext);
|
|
22
21
|
const sessionRestoreDispatch = useContext(SessionRestoreDispatchContext);
|
|
22
|
+
const { parseDotMarkdownWithTracking, getTrackingULRWithQueryParams } = useParseRuleMarkdown();
|
|
23
23
|
const { attachmentState: { caseFiles: { selectedLocalFiles }, }, } = useContext(AttachmentStateContext);
|
|
24
24
|
useEffect(() => {
|
|
25
25
|
const { analysisMetadata, name } = selectedLocalFiles.find((file) => file.attachmentId === doc.attachmentId);
|
|
@@ -37,20 +37,8 @@ export function InsightsRuleInfo({ doc, showNewTag, duplicateKeys }) {
|
|
|
37
37
|
const onCtaClick = (link) => (event) => {
|
|
38
38
|
createOrUpdateSessionResources(sessionRestoreDispatch, activeSessionId, sessionResourceTracking, SessionResourceSource.INSIGHTS, [getSessResFromInsights(link, SessionResourceVisibility.VISITED, ruleData.rule_id)]);
|
|
39
39
|
};
|
|
40
|
-
const getTrackingQueryParams = () => {
|
|
41
|
-
var _a, _b;
|
|
42
|
-
return RouteUtils.getSEResourceQueryParams(activeSessionId, (_b = (_a = sessionResourceTracking[SessionResourceSource.INSIGHTS]) === null || _a === void 0 ? void 0 : _a.resourceOriginId) !== null && _b !== void 0 ? _b : '', SessionResourceSource.INSIGHTS);
|
|
43
|
-
};
|
|
44
40
|
const parseMoreInfo = (moreInfo, reportDetails) => {
|
|
45
|
-
|
|
46
|
-
const anchorHrefRegex = /href="(.*?)"/g;
|
|
47
|
-
return {
|
|
48
|
-
__html: markdownToHTML(markdown, {
|
|
49
|
-
openLinksInNewTab: true,
|
|
50
|
-
})
|
|
51
|
-
.replace(anchorHrefRegex, `href="$1?${getTrackingQueryParams()}"`)
|
|
52
|
-
.replace('<a target="blank"', '<a target="blank" class="se-recommended ts-result-insights" data-tracking-id="se-recommended-insights-rule"'),
|
|
53
|
-
};
|
|
41
|
+
return parseDotMarkdownWithTracking(moreInfo, reportDetails, SessionResourceSource.INSIGHTS, 'ts-result-insights', 'se-recommended-insights-rule');
|
|
54
42
|
};
|
|
55
43
|
const onAdditionalInfoElemClick = (ev) => {
|
|
56
44
|
const target = ev.target;
|
|
@@ -86,6 +74,6 @@ export function InsightsRuleInfo({ doc, showNewTag, duplicateKeys }) {
|
|
|
86
74
|
React.createElement(Trans, null, "Additional info")),
|
|
87
75
|
React.createElement(AccordionContent, { isHidden: !isAdditionalExpanded },
|
|
88
76
|
React.createElement("p", { onClick: onAdditionalInfoElemClick, dangerouslySetInnerHTML: parseMoreInfo(ruleData === null || ruleData === void 0 ? void 0 : ruleData.more_info, (_g = insightsReport === null || insightsReport === void 0 ? void 0 : insightsReport.current) === null || _g === void 0 ? void 0 : _g.details) }))))),
|
|
89
|
-
React.createElement("a", { className: "se-recommended ts-result-insights cta-link", rel: "noopener noreferrer", target: "_blank", onClick: onCtaClick(doc.view_uri), "data-tracking-id": "se-recommended-insights-rule", href:
|
|
77
|
+
React.createElement("a", { className: "se-recommended ts-result-insights cta-link", rel: "noopener noreferrer", target: "_blank", onClick: onCtaClick(doc.view_uri), "data-tracking-id": "se-recommended-insights-rule", href: getTrackingULRWithQueryParams(doc.view_uri, SessionResourceSource.INSIGHTS) },
|
|
90
78
|
React.createElement(Trans, null, "Related article")))))));
|
|
91
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Rule.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/Rule.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Rule.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/Rule.tsx"],"names":[],"mappings":"AAQA,UAAU,MAAM;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,MAAM,eA2CzC"}
|
|
@@ -1,30 +1,22 @@
|
|
|
1
1
|
import { pcm } from '@cee-eng/hydrajs';
|
|
2
|
-
import { markdownToHTML } from '@cee-eng/ui-toolkit';
|
|
3
2
|
import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
|
|
4
3
|
import isEmpty from 'lodash/isEmpty';
|
|
5
4
|
import React from 'react';
|
|
6
|
-
import
|
|
5
|
+
import { useParseRuleMarkdown } from '../../hooks/useParseRuleMarkdown';
|
|
7
6
|
const { SessionResourceSource } = pcm.preCase.session;
|
|
8
7
|
export default function Rule(props) {
|
|
8
|
+
const { getTrackingULRWithQueryParams, parseMarkdown } = useParseRuleMarkdown();
|
|
9
9
|
const hide = () => {
|
|
10
10
|
var _a;
|
|
11
11
|
(_a = props.onHide) === null || _a === void 0 ? void 0 : _a.call(props, true);
|
|
12
12
|
};
|
|
13
|
-
const parseMarkdown = (markdown) => {
|
|
14
|
-
return { __html: markdownToHTML(markdown, { openLinksInNewTab: true }) };
|
|
15
|
-
};
|
|
16
|
-
const getLinkWithParams = (link) => {
|
|
17
|
-
return link.includes('redhat.com/solutions') || link.includes('redhat.com/articles')
|
|
18
|
-
? `${link}?${RouteUtils.getSEResourceQueryParams(props.seSessionId, props.seResourceOriginID, SessionResourceSource.EDMOUND_ABOTT)}`
|
|
19
|
-
: link;
|
|
20
|
-
};
|
|
21
13
|
const onCtaClick = (event) => {
|
|
22
14
|
props.onLinkClick && props.onLinkClick(props.link);
|
|
23
15
|
};
|
|
24
16
|
return (React.createElement("div", { className: "pf-c-alert ea-rule-alert", role: "alert" },
|
|
25
17
|
React.createElement("span", { className: "pf-c-alert__icon icon-info-circle", "aria-hidden": true }),
|
|
26
|
-
React.createElement("h3", { className: "pf-c-alert__title" }, !isEmpty(props.link) ? (React.createElement("a", { href:
|
|
27
|
-
React.createElement("div", { className: "pf-c-alert__description", dangerouslySetInnerHTML: parseMarkdown(props.description) }),
|
|
18
|
+
React.createElement("h3", { className: "pf-c-alert__title" }, !isEmpty(props.link) ? (React.createElement("a", { href: getTrackingULRWithQueryParams(props.link, SessionResourceSource.EDMOUND_ABOTT), target: "_blank", rel: "noopener noreferrer", className: "se-recommended ts-known-vuln", "data-tracking-id": "se-recommended-asa-rule", onClick: onCtaClick }, props.title)) : (props.title)),
|
|
19
|
+
React.createElement("div", { className: "pf-c-alert__description", dangerouslySetInnerHTML: { __html: parseMarkdown(props.description) } }),
|
|
28
20
|
props.onHide && (React.createElement("div", { className: "pf-c-alert__action" },
|
|
29
21
|
React.createElement("button", { className: "pf-c-button pf-m-plain", type: "button", "aria-label": "Close", onClick: hide },
|
|
30
22
|
React.createElement(TimesIcon, { "aria-hidden": "true" }))))));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Button } from '@patternfly/react-core';
|
|
2
2
|
import ArrowLeftIcon from '@patternfly/react-icons/dist/js/icons/arrow-left-icon';
|
|
3
3
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
4
|
-
import { getFieldInParts } from '@rh-support/utils';
|
|
4
|
+
import { getFieldInParts, PCM_CONFIG_FIELD_TYPE } from '@rh-support/utils';
|
|
5
5
|
import difference from 'lodash/difference';
|
|
6
6
|
import map from 'lodash/map';
|
|
7
7
|
import React, { useContext } from 'react';
|
|
@@ -63,7 +63,7 @@ function WizardProgress(props) {
|
|
|
63
63
|
const backToApp = () => {
|
|
64
64
|
window.location.href = document.referrer;
|
|
65
65
|
};
|
|
66
|
-
const appNames = (_a = getFieldInParts(pcmConfig.data, 'referrer_app_names',
|
|
66
|
+
const appNames = (_a = getFieldInParts(pcmConfig.data, 'referrer_app_names', PCM_CONFIG_FIELD_TYPE.JSON_HASHMAP)) !== null && _a !== void 0 ? _a : {};
|
|
67
67
|
return (React.createElement("div", { className: appRouteConfugurations[activeSection].disableOtherSections
|
|
68
68
|
? 'section-disabled grid-progress'
|
|
69
69
|
: 'grid-progress' },
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { SessionResourceSource } from '@cee-eng/hydrajs/@types/api/pcm/troubleshootSession';
|
|
2
2
|
export declare const useParseRuleMarkdown: () => {
|
|
3
|
-
|
|
3
|
+
parseDotMarkdownWithTracking: (dotString: string, reportDetails: any, source: SessionResourceSource, trackingClassName: string, trackingId: string) => {
|
|
4
4
|
__html: string;
|
|
5
5
|
};
|
|
6
|
+
parseMarkdown: (markdown: string) => string;
|
|
7
|
+
parseMarkdownWithTracking: (markdown: string, source: SessionResourceSource, trackingClassName: string, trackingId: string) => {
|
|
8
|
+
__html: string;
|
|
9
|
+
};
|
|
10
|
+
getTrackingULRWithQueryParams: (link: string, source: SessionResourceSource) => string;
|
|
6
11
|
};
|
|
7
12
|
//# sourceMappingURL=useParseRuleMarkdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useParseRuleMarkdown.d.ts","sourceRoot":"","sources":["../../../src/hooks/useParseRuleMarkdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAQ5F,eAAO,MAAM,oBAAoB;
|
|
1
|
+
{"version":3,"file":"useParseRuleMarkdown.d.ts","sourceRoot":"","sources":["../../../src/hooks/useParseRuleMarkdown.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAQ5F,eAAO,MAAM,oBAAoB;8CAgBd,MAAM,8BAET,qBAAqB,qBACV,MAAM,cACb,MAAM;;;8BAMW,MAAM;0CAOzB,MAAM,UACR,qBAAqB,qBACV,MAAM,cACb,MAAM;;;0CA/BuB,MAAM,UAAU,qBAAqB;CA6CrF,CAAC"}
|
|
@@ -5,20 +5,29 @@ import { SessionRestoreStateContext } from '../context/SessionRestoreContext';
|
|
|
5
5
|
import RouteUtils from '../utils/routeUtils';
|
|
6
6
|
export const useParseRuleMarkdown = () => {
|
|
7
7
|
const { sessionRestore: { activeSessionId, sessionResourceTracking }, } = useContext(SessionRestoreStateContext);
|
|
8
|
-
const
|
|
8
|
+
const getTrackingULRWithQueryParams = (link, source) => {
|
|
9
9
|
var _a, _b;
|
|
10
|
-
|
|
10
|
+
if (!link.includes('redhat.com/solutions') && !link.includes('redhat.com/articles'))
|
|
11
|
+
return link;
|
|
12
|
+
return `${link}?${RouteUtils.getSEResourceQueryParams(activeSessionId, (_b = (_a = sessionResourceTracking[source]) === null || _a === void 0 ? void 0 : _a.resourceOriginId) !== null && _b !== void 0 ? _b : '', source, 'se')}`;
|
|
11
13
|
};
|
|
12
|
-
function
|
|
14
|
+
function parseDotMarkdownWithTracking(dotString, reportDetails, source, trackingClassName, trackingId) {
|
|
13
15
|
const markdown = parseDotTemplate(dotString, reportDetails);
|
|
16
|
+
return parseMarkdownWithTracking(markdown, source, trackingClassName, trackingId);
|
|
17
|
+
}
|
|
18
|
+
function parseMarkdown(markdown) {
|
|
19
|
+
return markdownToHTML(markdown, {
|
|
20
|
+
openLinksInNewTab: true,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function parseMarkdownWithTracking(markdown, source, trackingClassName, trackingId) {
|
|
14
24
|
const anchorHrefRegex = /href="(.*?)"/g;
|
|
25
|
+
const targetBlankRegex = new RegExp(`target="blank"`, 'g');
|
|
15
26
|
return {
|
|
16
|
-
__html:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
.replace(anchorHrefRegex, `href="$1?${getTrackingQueryParams(source)}"`)
|
|
20
|
-
.replace('target="blank"', `target="blank" class="se-recommended ts-${trackingClassName} data-tracking-id="se-${trackingId}-rule"`),
|
|
27
|
+
__html: parseMarkdown(markdown)
|
|
28
|
+
.replace(anchorHrefRegex, `href="${getTrackingULRWithQueryParams('$1', source)}"`)
|
|
29
|
+
.replace(targetBlankRegex, `target="blank" class="se-recommended ${trackingClassName}" data-tracking-id="${trackingId}"`),
|
|
21
30
|
};
|
|
22
31
|
}
|
|
23
|
-
return {
|
|
32
|
+
return { parseDotMarkdownWithTracking, parseMarkdown, parseMarkdownWithTracking, getTrackingULRWithQueryParams };
|
|
24
33
|
};
|
|
@@ -21,8 +21,8 @@ export declare const deleteNotifiedUsers: (dispatch: CaseReducerDispatchType, ca
|
|
|
21
21
|
export declare const addingNotifiedUsers: (dispatch: CaseReducerDispatchType, caseNumber: string, addedUsers: IContact[]) => Promise<void>;
|
|
22
22
|
export declare const clearSelectedAccount: (dispatch: CaseReducerDispatchType) => void;
|
|
23
23
|
export declare const setCaseAccountNumber: (dispatch: CaseReducerDispatchType, accountNumber: string, isLoggedInUsersAccount?: boolean, loggedInUserAccount?: Partial<IAccount>) => Promise<void>;
|
|
24
|
-
export declare const setCaseOwner: (dispatch: CaseReducerDispatchType, owner: IContact, product: string, abortSignalCaseGroup?: AbortSignal, abortSignalEntitlements?: AbortSignal, canUpdateCaseGroup?: boolean) => Promise<void>;
|
|
25
|
-
export declare const fetchCaseGroupsForSSO: (dispatch: CaseReducerDispatchType, contactSsoUsername: string, canUpdateCaseGroup?: boolean, abortSignal?: AbortSignal) => Promise<void>;
|
|
24
|
+
export declare const setCaseOwner: (dispatch: CaseReducerDispatchType, owner: IContact, product: string, abortSignalCaseGroup?: AbortSignal, abortSignalEntitlements?: AbortSignal, canUpdateCaseGroup?: boolean, caseGroupNumberToRestore?: string | undefined) => Promise<void>;
|
|
25
|
+
export declare const fetchCaseGroupsForSSO: (dispatch: CaseReducerDispatchType, contactSsoUsername: string, canUpdateCaseGroup?: boolean, abortSignal?: AbortSignal, caseGroupNumberToRestore?: string | undefined) => Promise<void>;
|
|
26
26
|
export declare const updateCaseWithSession: (dispatch: CaseReducerDispatchType, sessionItem: ISessionItem, loggedInUserAccountNumber: string, loggedInUserContact: IContact, loggedInUserAccount?: Partial<IAccount>) => Promise<void>;
|
|
27
27
|
export declare const fetchCaseDetails: (dispatch: CaseReducerDispatchType, caseNumber: string, loggedInUserRights: any, refresh?: boolean, previousState?: Partial<ICasePayload>) => Promise<void>;
|
|
28
28
|
export declare const updateCaseDetails: (dispatch: CaseReducerDispatchType, caseNumber: string, caseDetails: Partial<ICasePayload>, dontSetDetails?: boolean) => Promise<never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseReducer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAEtH,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAA+B,MAAM,qCAAqC,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AASxD,OAAO,EAEH,uBAAuB,EAEvB,UAAU,EAEb,MAAM,mBAAmB,CAAC;AAU3B,eAAO,MAAM,WAAW,WAAY,UAAU,UAAU,GAAG,KAAG,UAyL7D,CAAC;AAGF,eAAO,MAAM,cAAc,aAAc,uBAAuB,aAAa,QAAQ,YAAY,CAAC,SAEjG,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,uBAAuB,aAAa,QAAQ,UAAU,CAAC,SAE7F,CAAC;AAEF,eAAO,MAAM,eAAe,aAAc,uBAAuB,gCAAgC,QAAQ,EAAE,SAK1G,CAAC;AAEF,eAAO,MAAM,UAAU,aACT,uBAAuB,eACpB,UAAU,eACV,YAAY,gBACX,OAAO,mBACJ,MAAM,GAAG,WAAW,kBAkBxC,CAAC;AAEF,eAAO,MAAM,0BAA0B,aACzB,uBAAuB,cACrB,MAAM,eACL,UAAU,kBAG1B,CAAC;AAEF,eAAO,MAAM,cAAc,aACb,uBAAuB,cACrB,MAAM,cACN,WAAW,kBAoB1B,CAAC;AAEF,eAAO,MAAM,sBAAsB,aACrB,uBAAuB,QAC3B,mBAAmB,EAAE,sBACP,iBAAiB,EAAE,SAO1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAoB,uBAAuB,WAAW,MAAM,eAAe,MAAM,kBAYhH,CAAC;AAEF,eAAO,MAAM,kBAAkB,aACjB,uBAAuB,cACrB,MAAM,eACL,QAAQ,UAAU,CAAC,kBAmBnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAClB,uBAAuB,cACrB,MAAM,gBACJ,MAAM,EAAE,kBAoBzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAClB,uBAAuB,cACrB,MAAM,cACN,QAAQ,EAAE,kBAmBzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,aAAc,uBAAuB,SASrE,CAAC;AAEF,eAAO,MAAM,oBAAoB,aACnB,uBAAuB,iBAClB,MAAM,0DAEA,QAAQ,QAAQ,CAAC,kBA8CzC,CAAC;AAEF,eAAO,MAAM,YAAY,aACX,uBAAuB,SAC1B,QAAQ,WACN,MAAM,yBACQ,WAAW,4BACR,WAAW,
|
|
1
|
+
{"version":3,"file":"CaseReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseReducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -322,7 +322,7 @@ export const setCaseAccountNumber = (dispatch, accountNumber, isLoggedInUsersAcc
|
|
|
322
322
|
});
|
|
323
323
|
}
|
|
324
324
|
});
|
|
325
|
-
export const setCaseOwner = (dispatch, owner, product, abortSignalCaseGroup, abortSignalEntitlements, canUpdateCaseGroup = false) => __awaiter(void 0, void 0, void 0, function* () {
|
|
325
|
+
export const setCaseOwner = (dispatch, owner, product, abortSignalCaseGroup, abortSignalEntitlements, canUpdateCaseGroup = false, caseGroupNumberToRestore) => __awaiter(void 0, void 0, void 0, function* () {
|
|
326
326
|
if (isEmpty(owner) || isEmpty(owner.ssoUsername)) {
|
|
327
327
|
dispatch({
|
|
328
328
|
type: CaseReducerConstants.caseDetailChanged,
|
|
@@ -347,7 +347,7 @@ export const setCaseOwner = (dispatch, owner, product, abortSignalCaseGroup, abo
|
|
|
347
347
|
type: CaseReducerConstants.caseDetailChanged,
|
|
348
348
|
payload: { caseDetails: { contactSSOName: owner.ssoUsername } },
|
|
349
349
|
});
|
|
350
|
-
fetchCaseGroupsForSSO(dispatch, owner.ssoUsername, canUpdateCaseGroup, abortSignalCaseGroup);
|
|
350
|
+
fetchCaseGroupsForSSO(dispatch, owner.ssoUsername, canUpdateCaseGroup, abortSignalCaseGroup, caseGroupNumberToRestore);
|
|
351
351
|
fetchCaseEntitlements(dispatch, owner.ssoUsername, product, abortSignalEntitlements);
|
|
352
352
|
});
|
|
353
353
|
const fetchCaseEntitlements = (dispatch, ssoUserName, product, abortSignal) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -371,8 +371,8 @@ const fetchCaseEntitlements = (dispatch, ssoUserName, product, abortSignal) => _
|
|
|
371
371
|
});
|
|
372
372
|
}
|
|
373
373
|
});
|
|
374
|
-
export const fetchCaseGroupsForSSO = (dispatch, contactSsoUsername, canUpdateCaseGroup = false, abortSignal) => __awaiter(void 0, void 0, void 0, function* () {
|
|
375
|
-
var _b;
|
|
374
|
+
export const fetchCaseGroupsForSSO = (dispatch, contactSsoUsername, canUpdateCaseGroup = false, abortSignal, caseGroupNumberToRestore) => __awaiter(void 0, void 0, void 0, function* () {
|
|
375
|
+
var _b, _c;
|
|
376
376
|
dispatch({
|
|
377
377
|
type: CaseReducerConstants.caseStateChanged,
|
|
378
378
|
payload: { ownersCaseGroups: getApiResourceObject([], true) },
|
|
@@ -380,12 +380,14 @@ export const fetchCaseGroupsForSSO = (dispatch, contactSsoUsername, canUpdateCas
|
|
|
380
380
|
try {
|
|
381
381
|
const response = yield publicApi.caseGroups.getCaseGroupsForSSO(contactSsoUsername, abortSignal);
|
|
382
382
|
(response || []).sort((a, b) => a.name.localeCompare(b.name));
|
|
383
|
-
const defaultCaseGroup =
|
|
383
|
+
const defaultCaseGroup = (_c = (!isEmpty(caseGroupNumberToRestore)
|
|
384
|
+
? caseGroupNumberToRestore
|
|
385
|
+
: (_b = find(response, (g) => g.isDefault)) === null || _b === void 0 ? void 0 : _b.groupNum)) !== null && _c !== void 0 ? _c : '-1';
|
|
384
386
|
dispatch({
|
|
385
387
|
type: CaseReducerConstants.caseStateChanged,
|
|
386
388
|
payload: { ownersCaseGroups: getApiResourceObject(response, false) },
|
|
387
389
|
});
|
|
388
|
-
canUpdateCaseGroup && setCaseDetails(dispatch, { groupNumber:
|
|
390
|
+
canUpdateCaseGroup && setCaseDetails(dispatch, { groupNumber: defaultCaseGroup });
|
|
389
391
|
}
|
|
390
392
|
catch (e) {
|
|
391
393
|
dispatch({
|
|
@@ -399,21 +401,21 @@ const getSelectedNotificationContactsFromSession = (contacts, notidiedUsers) =>
|
|
|
399
401
|
return filter(contacts, (c) => notidiedUsers.includes(c.ssoUsername));
|
|
400
402
|
};
|
|
401
403
|
export const updateCaseWithSession = (dispatch, sessionItem, loggedInUserAccountNumber, loggedInUserContact, loggedInUserAccount = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
402
|
-
var
|
|
404
|
+
var _d, _e, _f, _g;
|
|
403
405
|
const caseDetails = getCaseFromSessionDetails(sessionItem, loggedInUserAccountNumber, loggedInUserContact.ssoUsername);
|
|
404
406
|
setCaseDetails(dispatch, caseDetails);
|
|
405
407
|
setCaseAccountNumber(dispatch, caseDetails.accountNumberRef, caseDetails.accountNumberRef === loggedInUserAccountNumber, loggedInUserAccount);
|
|
406
408
|
const { sessionDetails } = sessionItem;
|
|
407
409
|
// Set owner and Notified users
|
|
408
|
-
const notifiedUsersExternal = (
|
|
409
|
-
const notifiedUsersInternal = (
|
|
410
|
+
const notifiedUsersExternal = (_e = (_d = sessionDetails.notifiedUsersExternal) === null || _d === void 0 ? void 0 : _d.split(',')) !== null && _e !== void 0 ? _e : [];
|
|
411
|
+
const notifiedUsersInternal = (_g = (_f = sessionDetails.notifiedUsersInternal) === null || _f === void 0 ? void 0 : _f.split(',')) !== null && _g !== void 0 ? _g : [];
|
|
410
412
|
const allRelevantContacts = yield getAllRelevantContacts(loggedInUserContact, caseDetails.accountNumberRef, caseDetails.contactSSOName, notifiedUsersExternal, notifiedUsersInternal);
|
|
411
413
|
const owner = find(allRelevantContacts, (c) => c.ssoUsername === caseDetails.contactSSOName);
|
|
412
414
|
const selectedNotificationContacts = getSelectedNotificationContactsFromSession(allRelevantContacts, [
|
|
413
415
|
...notifiedUsersExternal,
|
|
414
416
|
...notifiedUsersInternal,
|
|
415
417
|
]);
|
|
416
|
-
setCaseOwner(dispatch, owner, '', undefined, undefined, true);
|
|
418
|
+
setCaseOwner(dispatch, owner, '', undefined, undefined, true, caseDetails === null || caseDetails === void 0 ? void 0 : caseDetails.groupNumber);
|
|
417
419
|
setNotifiedUser(dispatch, selectedNotificationContacts);
|
|
418
420
|
const sessionCepDetails = yield pcm.preCase.session.getSessionCepDetails(sessionItem.session.id);
|
|
419
421
|
if (!isEmpty(sessionCepDetails) &&
|
|
@@ -459,7 +461,7 @@ const getAllRelevantContacts = (loggedInUserContact, caseAccountNumber, contactS
|
|
|
459
461
|
}
|
|
460
462
|
});
|
|
461
463
|
export const fetchCaseDetails = (dispatch, caseNumber, loggedInUserRights, refresh = false, previousState = {}) => __awaiter(void 0, void 0, void 0, function* () {
|
|
462
|
-
var
|
|
464
|
+
var _h;
|
|
463
465
|
dispatch({ type: CaseReducerConstants.requestCaseDetails, payload: { caseDetails: { caseNumber } } });
|
|
464
466
|
try {
|
|
465
467
|
const data = yield publicApi.kase.getCase(caseNumber);
|
|
@@ -498,7 +500,7 @@ export const fetchCaseDetails = (dispatch, caseNumber, loggedInUserRights, refre
|
|
|
498
500
|
firstCaseInactivityWarningSentAt: (data === null || data === void 0 ? void 0 : data.firstCaseInactivityWarningSentAt) || undefined,
|
|
499
501
|
secondCaseInactivityWarningSentAt: (data === null || data === void 0 ? void 0 : data.secondCaseInactivityWarningSentAt) || undefined,
|
|
500
502
|
groupName: data.groupName || '',
|
|
501
|
-
remoteSessionTermsAcked: (
|
|
503
|
+
remoteSessionTermsAcked: (_h = data.remoteSessionTermsAcked) !== null && _h !== void 0 ? _h : false,
|
|
502
504
|
};
|
|
503
505
|
caseDetails.chats = data === null || data === void 0 ? void 0 : data.chats;
|
|
504
506
|
caseDetails.comments = data === null || data === void 0 ? void 0 : data.comments;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RulesReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/RulesReducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,oBAAY,qBAAqB;IAC7B,mCAAmC,wCAAwC;IAC3E,uBAAuB,4BAA4B;IACnD,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,8BAA8B,mCAAmC;IACjE,uBAAuB,4BAA4B;IACnD,kCAAkC,uCAAuC;IACzE,YAAY,iBAAiB;IAC7B,wBAAwB,6BAA6B;IACrD,kBAAkB,uBAAuB;CAC5C;AAED,MAAM,WAAW,SAAS;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B,EAAE,OAAO,CAAC;IACpC,+BAA+B,EAAE,OAAO,CAAC;IAEzC,uBAAuB,EAAE,OAAO,CAAC;IACjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,aAAc,SAAQ,KAAK;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;CAC1B;AACD,aAAK,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AACnE,oBAAY,iBAAiB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAE7D,MAAM,WAAW,MAAM;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAWD,eAAO,MAAM,iBAAiB,EAAE,SA0B/B,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,SAAS,0BAAwB,
|
|
1
|
+
{"version":3,"file":"RulesReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/RulesReducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAMnD,oBAAY,qBAAqB;IAC7B,mCAAmC,wCAAwC;IAC3E,uBAAuB,4BAA4B;IACnD,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,8BAA8B,mCAAmC;IACjE,uBAAuB,4BAA4B;IACnD,kCAAkC,uCAAuC;IACzE,YAAY,iBAAiB;IAC7B,wBAAwB,6BAA6B;IACrD,kBAAkB,uBAAuB;CAC5C;AAED,MAAM,WAAW,SAAS;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B,EAAE,OAAO,CAAC;IACpC,+BAA+B,EAAE,OAAO,CAAC;IAEzC,uBAAuB,EAAE,OAAO,CAAC;IACjC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,aAAc,SAAQ,KAAK;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;CAC1B;AACD,aAAK,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;AACnE,oBAAY,iBAAiB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;AAE7D,MAAM,WAAW,MAAM;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAWD,eAAO,MAAM,iBAAiB,EAAE,SA0B/B,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,SAAS,0BAAwB,SAuEpE,CAAC;AAGF,eAAO,MAAM,sCAAsC,aAAc,iBAAiB,QAAQ,KAAK,SAE9F,CAAC;AACF,eAAO,MAAM,0BAA0B,aAAc,iBAAiB,QAAQ,KAAK,SAElF,CAAC;AACF,eAAO,MAAM,YAAY,aAAc,iBAAiB,SAEvD,CAAC;AACF,eAAO,MAAM,sBAAsB,aACrB,iBAAiB,QACrB,QAAQ,mBAAmB,CAAC,8BACN,KAAK,EAAE,KAAK,IAAI,kBAa/C,CAAC;AAEF,eAAO,MAAM,wBAAwB,aAAc,iBAAiB,yBAAyB,OAAO,SAKnG,CAAC;AACF,eAAO,MAAM,kBAAkB,aAAc,iBAAiB,QAAQ,KAAK,SAE1E,CAAC"}
|
|
@@ -76,20 +76,17 @@ export const rulesReducer = (state, action) => {
|
|
|
76
76
|
return Object.assign(Object.assign({}, state), { isLoadingEdmundAbbottRules: true, isLoadingEdmundAbbottRulesError: false });
|
|
77
77
|
}
|
|
78
78
|
case RulesReducerConstants.receivedEdmundAbbottRules: {
|
|
79
|
-
const difference = differenceBy((_a = action.payload) === null || _a === void 0 ? void 0 : _a.rules, (_b = state.EARules) === null || _b === void 0 ? void 0 : _b.rules, '
|
|
79
|
+
const difference = differenceBy((_a = action.payload) === null || _a === void 0 ? void 0 : _a.rules, (_b = state.EARules) === null || _b === void 0 ? void 0 : _b.rules, 'rule_id');
|
|
80
80
|
const prevRuleTitleInfoMap = ((_c = state.EARules) === null || _c === void 0 ? void 0 : _c.rules.reduce((acc, rule) => {
|
|
81
|
-
acc[rule.
|
|
81
|
+
acc[rule.rule_id] = rule;
|
|
82
82
|
return acc;
|
|
83
83
|
}, {})) || {};
|
|
84
84
|
// if user ignored a rule first and new rules contain the same rule, we need to ignore it again
|
|
85
85
|
const newRules = map(action.payload.rules, (rule) => {
|
|
86
|
-
const prevInfo = prevRuleTitleInfoMap[rule.
|
|
87
|
-
return Object.assign(Object.assign({},
|
|
86
|
+
const prevInfo = prevRuleTitleInfoMap[rule.rule_id];
|
|
87
|
+
return Object.assign(Object.assign({}, prevInfo), rule);
|
|
88
88
|
});
|
|
89
|
-
|
|
90
|
-
return Object.assign(Object.assign({}, state), { EARules: Object.assign(Object.assign({}, state.EARules), { rules: newRules }), isLoadingEdmundAbbottRules: false, isLoadingEdmundAbbottRulesError: false, isEARuleWidgetVisible: true });
|
|
91
|
-
}
|
|
92
|
-
return Object.assign(Object.assign({}, state), { EARules: Object.assign(Object.assign({}, state.EARules), { rules: newRules }), isLoadingEdmundAbbottRules: false, isLoadingEdmundAbbottRulesError: false });
|
|
89
|
+
return Object.assign(Object.assign({}, state), { EARules: Object.assign(Object.assign({}, state.EARules), { rules: newRules }), isLoadingEdmundAbbottRules: false, isLoadingEdmundAbbottRulesError: false, isEARuleWidgetVisible: difference.length > 0 ? true : state.isEARuleWidgetVisible });
|
|
93
90
|
}
|
|
94
91
|
// resetEARules is mainly used for reseting the rules when reseting on a new troubleshoot issue.
|
|
95
92
|
case RulesReducerConstants.resetEARules: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/troubleshoot",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.37",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -27,13 +27,13 @@
|
|
|
27
27
|
],
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"@cee-eng/hydrajs": "4.7.3",
|
|
30
|
-
"@cee-eng/ui-toolkit": "1.1.
|
|
30
|
+
"@cee-eng/ui-toolkit": "1.1.4",
|
|
31
31
|
"@patternfly/patternfly": "4.102.2",
|
|
32
32
|
"@patternfly/pfe-accordion": "1.1.0",
|
|
33
33
|
"@patternfly/pfe-collapse": "1.1.0",
|
|
34
34
|
"@patternfly/pfe-tabs": "1.1.0",
|
|
35
35
|
"@patternfly/react-core": "4.128.2",
|
|
36
|
-
"@rh-support/api": "
|
|
36
|
+
"@rh-support/api": "0.3.9",
|
|
37
37
|
"@rh-support/components": "^0.1.3",
|
|
38
38
|
"@rh-support/react-context": "^0.1.3",
|
|
39
39
|
"@rh-support/types": "^0.1.3",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@cee-eng/hydrajs": "4.7.3",
|
|
67
|
-
"@cee-eng/ui-toolkit": "1.1.
|
|
67
|
+
"@cee-eng/ui-toolkit": "1.1.4",
|
|
68
68
|
"@patternfly/patternfly": "4.102.2",
|
|
69
69
|
"@patternfly/pfe-accordion": "1.1.0",
|
|
70
70
|
"@patternfly/pfe-collapse": "1.1.0",
|
|
@@ -72,12 +72,12 @@
|
|
|
72
72
|
"@patternfly/react-core": "4.128.2",
|
|
73
73
|
"@progress/kendo-drawing": "^1.6.0",
|
|
74
74
|
"@progress/kendo-react-pdf": "^3.12.0",
|
|
75
|
-
"@rh-support/api": "0.3.
|
|
76
|
-
"@rh-support/components": "1.1.
|
|
77
|
-
"@rh-support/react-context": "0.2.
|
|
75
|
+
"@rh-support/api": "0.3.9",
|
|
76
|
+
"@rh-support/components": "1.1.18",
|
|
77
|
+
"@rh-support/react-context": "0.2.20",
|
|
78
78
|
"@rh-support/types": "0.2.0",
|
|
79
|
-
"@rh-support/user-permissions": "0.2.
|
|
80
|
-
"@rh-support/utils": "0.2.
|
|
79
|
+
"@rh-support/user-permissions": "0.2.14",
|
|
80
|
+
"@rh-support/utils": "0.2.13",
|
|
81
81
|
"@types/react-redux": "^7.1.12",
|
|
82
82
|
"@types/redux": "^3.6.0",
|
|
83
83
|
"@webcomponents/webcomponentsjs": "^2.2.10",
|
|
@@ -142,5 +142,5 @@
|
|
|
142
142
|
"not ie <= 11",
|
|
143
143
|
"not op_mini all"
|
|
144
144
|
],
|
|
145
|
-
"gitHead": "
|
|
145
|
+
"gitHead": "d7b132a48503756101802e81ca02ec3cf8187dc2"
|
|
146
146
|
}
|