@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.
@@ -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,4EAqShB,CAAC;AAEH,eAAe,YAAY,CAAC"}
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 `&amp` in e.g. &euro swaps to &ampeuro
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":"AAUA,UAAU,MAAM;CAAG;AAEnB,wBAAgB,uBAAuB,CAAC,KAAK,KAAA,SAE5C;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM,eA0B/C"}
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 { parse } = useParseRuleMarkdown();
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: parse(rule.reason, rule.extra_data, SessionResourceSource.CLUSTER_RECOMMENDATION, 'cluster-recommendation', 'cluster-recommendation') }))),
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: parse(rule.resolution, rule.extra_data, SessionResourceSource.CLUSTER_RECOMMENDATION, 'cluster-recommendation', 'cluster-recommendation') })))))))));
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":"AAEA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAI1C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/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;IAC/F,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAGD,eAAO,MAAM,aAAa,+BAIxB,CAAC;AAEH,wBAAgB,gBAAgB,mBAM/B;AACD,wBAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;CAAA,eAkCxC;AAED,iBAAS,WAAW,gBAGnB;AAED,iBAAS,iBAAiB,gBA0BzB;AAED,iBAAS,aAAa,CAAC,EAAE,SAA6B,EAAE,SAAc,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,eAenH;AAED,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC"}
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, getLinkWithParams } = useEARuleContext();
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
- const parseMarkdown = (markdown) => {
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, getLinkWithParams } = useEARuleContext();
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: getLinkWithParams(rule.cta) },
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":"AAcA,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,eAqK1E"}
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, parseDotTemplate } from '@rh-support/utils';
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
- const markdown = parseDotTemplate(moreInfo, reportDetails);
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: `${doc.view_uri}?${getTrackingQueryParams()}` },
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,7 +1,5 @@
1
1
  interface IProps {
2
2
  title: string;
3
- seSessionId: string;
4
- seResourceOriginID: string;
5
3
  link?: string;
6
4
  description: string;
7
5
  onHide?: (values: boolean) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Rule.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/Rule.tsx"],"names":[],"mappings":"AASA,UAAU,MAAM;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,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,eAmDzC"}
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 RouteUtils from '../../utils/routeUtils';
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: getLinkWithParams(props.link), target: "_blank", rel: "noopener noreferrer", className: "se-recommended ts-known-vuln", "data-tracking-id": "se-recommended-asa-rule", onClick: onCtaClick }, props.title)) : (props.title)),
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', 'JSON-HASHMAP')) !== null && _a !== void 0 ? _a : {};
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
- parse: (dotString: string, reportDetails: any, source: SessionResourceSource, trackingClassName: string, trackingId: string) => {
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;uBAed,MAAM,8BAET,qBAAqB,qBACV,MAAM,cACb,MAAM;;;CAmBzB,CAAC"}
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 getTrackingQueryParams = (source) => {
8
+ const getTrackingULRWithQueryParams = (link, source) => {
9
9
  var _a, _b;
10
- return RouteUtils.getSEResourceQueryParams(activeSessionId, (_b = (_a = sessionResourceTracking[source]) === null || _a === void 0 ? void 0 : _a.resourceOriginId) !== null && _b !== void 0 ? _b : '', source, 'se');
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 parse(dotString, reportDetails, source, trackingClassName, trackingId) {
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: markdownToHTML(markdown, {
17
- openLinksInNewTab: true,
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 { parse };
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":"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"}
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 = find(response, (g) => g.isDefault);
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: (_b = defaultCaseGroup === null || defaultCaseGroup === void 0 ? void 0 : defaultCaseGroup.groupNum) !== null && _b !== void 0 ? _b : '-1' });
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 _c, _d, _e, _f;
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 = (_d = (_c = sessionDetails.notifiedUsersExternal) === null || _c === void 0 ? void 0 : _c.split(',')) !== null && _d !== void 0 ? _d : [];
409
- const notifiedUsersInternal = (_f = (_e = sessionDetails.notifiedUsersInternal) === null || _e === void 0 ? void 0 : _e.split(',')) !== null && _f !== void 0 ? _f : [];
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 _g;
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: (_g = data.remoteSessionTermsAcked) !== null && _g !== void 0 ? _g : false,
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,SAgFpE,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"}
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, 'title');
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.title] = 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.title];
87
- return Object.assign(Object.assign({}, rule), prevInfo);
86
+ const prevInfo = prevRuleTitleInfoMap[rule.rule_id];
87
+ return Object.assign(Object.assign({}, prevInfo), rule);
88
88
  });
89
- if (difference.length > 0) {
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.33",
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.3",
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": "^0.1.3",
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.3",
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.8",
76
- "@rh-support/components": "1.1.15",
77
- "@rh-support/react-context": "0.2.17",
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.11",
80
- "@rh-support/utils": "0.2.11",
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": "3dc034eff74761ebe67f6503a13ecf5a1d763071"
145
+ "gitHead": "d7b132a48503756101802e81ca02ec3cf8187dc2"
146
146
  }