@rh-support/troubleshoot 2.7.22 → 2.7.23

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.
Files changed (35) hide show
  1. package/lib/esm/components/AccountInfo/OwnerSelector.d.ts.map +1 -1
  2. package/lib/esm/components/AccountInfo/OwnerSelector.js +6 -4
  3. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +7 -7
  4. package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.d.ts.map +1 -1
  5. package/lib/esm/components/CaseEditView/ConfirmationModals/ReopenCaseModal.js +8 -4
  6. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.d.ts.map +1 -1
  7. package/lib/esm/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.js +2 -4
  8. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.d.ts.map +1 -1
  9. package/lib/esm/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.js +2 -4
  10. package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts +9 -0
  11. package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.d.ts.map +1 -1
  12. package/lib/esm/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.js +30 -1
  13. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.d.ts.map +1 -1
  14. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseComments.js +8 -4
  15. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.d.ts.map +1 -1
  16. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.js +2 -1
  17. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +7 -7
  18. package/lib/esm/components/CaseInformation/CaseGroup.d.ts.map +1 -1
  19. package/lib/esm/components/CaseInformation/CaseGroup.js +9 -5
  20. package/lib/esm/components/CaseInformation/CaseLabels.d.ts.map +1 -1
  21. package/lib/esm/components/CaseInformation/CaseLabels.js +12 -4
  22. package/lib/esm/components/CaseManagement/CaseLabelsCreate.d.ts.map +1 -1
  23. package/lib/esm/components/CaseManagement/CaseLabelsCreate.js +11 -26
  24. package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.d.ts.map +1 -1
  25. package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.js +8 -7
  26. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
  27. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +14 -3
  28. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  29. package/lib/esm/reducers/CaseHelpers.js +2 -2
  30. package/lib/esm/reducers/CaseReducer.d.ts +1 -1
  31. package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
  32. package/lib/esm/reducers/CaseReducer.js +15 -2
  33. package/lib/esm/utils/visitedResourcesUtils.d.ts.map +1 -1
  34. package/lib/esm/utils/visitedResourcesUtils.js +4 -3
  35. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"OwnerSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/AccountInfo/OwnerSelector.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAoBxE,UAAU,MAAM;CAAG;AAMnB,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,qBA+ZnC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"OwnerSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/AccountInfo/OwnerSelector.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAoBxE,UAAU,MAAM;CAAG;AAMnB,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,qBAmanC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -268,17 +268,19 @@ function OwnerSelector(props) {
268
268
  isCaseOwnerUpdating ||
269
269
  isCasePhoneUpdating ||
270
270
  canEditCase.isCaseNotEditable, onSelect: onCustomerContactSelect, onClearQuery: onClearQuery, onQueryUpdated: onQueryUpdated, options: ownerDropdownOptions, status: isNextBtnClickedToShowValidationError && isEmpty(selectedOwner.data) ? 'danger' : undefined })) : (React.createElement(CaseContactsSelectorExternal, { loggedInUserRights: loggedInUserRights.data, selectedAccountNumber: accountNumber, salesforceAccountId: (_a = selectedAccountDetails.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId, contactSsoUsername: contactSsoUsername !== null && contactSsoUsername !== void 0 ? contactSsoUsername : '', selected: !isEmpty(selectedOwner.data) ? [selectedOwner.data] : [], onChange: onCustomerContactSelect, onContactEnriched: (contact) => {
271
- var _a, _b;
271
+ var _a, _b, _c, _d;
272
272
  setCaseState(caseDispatch, {
273
273
  selectedOwner: { data: contact, isFetching: false, isError: false, errorMessage: '' },
274
274
  });
275
- if (!contact.id || !accountNumber) {
275
+ const salesforceAccountId = ((_a = selectedAccountDetails.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId) ||
276
+ ((_b = loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.salesforceAccountId);
277
+ if (!contact.id || !salesforceAccountId) {
276
278
  return;
277
279
  }
278
280
  const defaultCaseGroupIdForFetch = caseNumber
279
281
  ? groupNumber || null
280
- : (_a = contact.defaultCaseGroup) !== null && _a !== void 0 ? _a : null;
281
- fetchCaseGroupsForContactGraphQL(caseDispatch, apolloClient, contact.id, accountNumber, defaultCaseGroupIdForFetch, (_b = contact.isOrgAdmin) !== null && _b !== void 0 ? _b : false, groupNumber !== null && groupNumber !== void 0 ? groupNumber : '', groupName || '');
282
+ : (_c = contact.defaultCaseGroup) !== null && _c !== void 0 ? _c : null;
283
+ fetchCaseGroupsForContactGraphQL(caseDispatch, apolloClient, contact.id, salesforceAccountId, defaultCaseGroupIdForFetch, (_d = contact.isOrgAdmin) !== null && _d !== void 0 ? _d : false, groupNumber !== null && groupNumber !== void 0 ? groupNumber : '', groupName || '');
282
284
  }, placeholder: t(`Search by name or username`), clearButton: true, id: "get-support-owner", name: "get-support-owner", className: "react-select-custom", isUpdating: isCaseOwnerUpdating, isInvalid: isNextBtnClickedToShowValidationError && isEmpty(selectedOwner.data), isDisabled: isCasePhoneUpdating || isCaseOwnerUpdating || canEditCase.isCaseNotEditable }))));
283
285
  }
284
286
  export { OwnerSelector };
@@ -13,7 +13,7 @@ import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, He
13
13
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
14
14
  import { AlertMessage, AlertType, LoadingIndicator, SingleSelectDropdown, ToastNotification, useFetch, } from '@rh-support/components';
15
15
  import { fetchCaseDetails, useGlobalStateContext } from '@rh-support/react-context';
16
- import { ensureEscalationRecordTypeId } from '@rh-support/utils';
16
+ import { ensureEscalationRecordTypeId, escapeHtml } from '@rh-support/utils';
17
17
  import isEmpty from 'lodash/isEmpty';
18
18
  import isEqual from 'lodash/isEqual';
19
19
  import React, { useEffect, useState } from 'react';
@@ -144,12 +144,12 @@ export function RequestEscalationModal(props) {
144
144
  });
145
145
  const createdCaseNumber = (_d = (_c = (_b = (_a = escalationData === null || escalationData === void 0 ? void 0 : escalationData.redhat_support_uiapi) === null || _a === void 0 ? void 0 : _a.CaseCreate) === null || _b === void 0 ? void 0 : _b.RedHatSupportRecord) === null || _c === void 0 ? void 0 : _c.CaseNumber__c) === null || _d === void 0 ? void 0 : _d.value;
146
146
  const fullComment = t('<h3>Request Management Escalation:</h3><p><strong>Subject</strong></p><p>{{subject}}</p><p><strong>Category</strong></p><p>{{rmeCategory}}</p><p><strong>Description</strong></p><p>{{description}}</p><p><strong>Expectations</strong></p><p>{{expectations}}</p><p><strong>Business Impact</strong></p><p>{{businessImpactDescription}}</p>', {
147
- category: formState.rmeCategory,
148
- subject: formState.subject,
149
- description: formState.description,
150
- expectations: formState.expectations,
151
- businessImpactDescription: formState.businessImpactDescription,
152
- rmeCategory: formState.rmeCategory,
147
+ category: escapeHtml(formState.rmeCategory),
148
+ subject: escapeHtml(formState.subject),
149
+ description: escapeHtml(formState.description),
150
+ expectations: escapeHtml(formState.expectations),
151
+ businessImpactDescription: escapeHtml(formState.businessImpactDescription),
152
+ rmeCategory: escapeHtml(formState.rmeCategory),
153
153
  });
154
154
  try {
155
155
  yield submitEscalationComment(createdCaseNumber, fullComment, caseSalesforceId);
@@ -1 +1 @@
1
- {"version":3,"file":"ReopenCaseModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ConfirmationModals/ReopenCaseModal.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,UAAU,MAAM;IACZ,SAAS,EAAE,CAAC,WAAW,KAAA,EAAE,SAAS,KAAA,EAAE,UAAU,CAAC,KAAA,EAAE,iBAAiB,CAAC,KAAA,EAAE,cAAc,CAAC,KAAA,EAAE,mBAAmB,CAAC,KAAA,KAAK,IAAI,CAAC;IACpH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,qBAmN5C"}
1
+ {"version":3,"file":"ReopenCaseModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ConfirmationModals/ReopenCaseModal.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAGxC,UAAU,MAAM;IACZ,SAAS,EAAE,CAAC,WAAW,KAAA,EAAE,SAAS,KAAA,EAAE,UAAU,CAAC,KAAA,EAAE,iBAAiB,CAAC,KAAA,EAAE,cAAc,CAAC,KAAA,EAAE,mBAAmB,CAAC,KAAA,KAAK,IAAI,CAAC;IACpH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACzB;AAMD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,qBAoN5C"}
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { Button, ButtonVariant, Form, FormGroup, FormHelperText, HelperText, HelperTextItem, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, TextArea, } from '@patternfly/react-core';
11
11
  import { SingleSelectDropdown } from '@rh-support/components';
12
- import { formatDateTime, PORTAL_REOPEN_STATUSES } from '@rh-support/utils';
12
+ import { escapeHtml, formatDateTime, PORTAL_REOPEN_STATUSES } from '@rh-support/utils';
13
13
  import isEmpty from 'lodash/isEmpty';
14
14
  import map from 'lodash/map';
15
15
  import React, { useState } from 'react';
@@ -42,9 +42,13 @@ export function ReopenCaseModal(props) {
42
42
  return isValid;
43
43
  };
44
44
  const getCommentBody = () => {
45
- return `<p><strong>Reason for reopening case:</strong></p><p>${selectedReason}${reasonWithDescription.includes(selectedReason) || props.isInternal
46
- ? `${props.isInternal ? '' : '. '}${reopenDescription}`
47
- : ''}</p><p><strong>Reopened date:</strong></p><p>${formatDateTime(Date())}</p><p><strong>Reopened by:</strong></p><p>${props.whoIsUpdating}</p><p><strong>Reopened reason other description:</strong></p><p>${reopenDescription}</p>`;
45
+ const reason = escapeHtml(selectedReason);
46
+ const description = escapeHtml(reopenDescription);
47
+ const who = escapeHtml(props.whoIsUpdating);
48
+ const reasonDetail = reasonWithDescription.includes(selectedReason) || props.isInternal
49
+ ? `${props.isInternal ? '' : '. '}${description}`
50
+ : '';
51
+ return `<p><strong>Reason for reopening case:</strong></p><p>${reason}${reasonDetail}</p><p><strong>Reopened date:</strong></p><p>${formatDateTime(Date())}</p><p><strong>Reopened by:</strong></p><p>${who}</p><p><strong>Reopened reason other description:</strong></p><p>${description}</p>`;
48
52
  };
49
53
  const onSubmit = () => __awaiter(this, void 0, void 0, function* () {
50
54
  if (!checkForRequiredFields())
@@ -1 +1 @@
1
- {"version":3,"file":"NewEssTermsModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAiBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBA8a7C"}
1
+ {"version":3,"file":"NewEssTermsModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/NewEssTermsModal.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAiBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,qBAwa7C"}
@@ -20,7 +20,7 @@ import { Trans, useTranslation } from 'react-i18next';
20
20
  import { useCaseDispatch, useCaseSelector } from '../../../context/CaseContext';
21
21
  import { GET_CASE_COMMENTS, useCreateCaseComment } from '../../../hooks/useCaseComments';
22
22
  import { checkForCaseStatusToggleOnAttachOrComment, updateCaseDetailsGraphQL } from '../../../reducers/CaseReducer';
23
- import { buildRemoteSessionRequestCaseUpdate, formatSessionLinks, getLocaleNameFromLocalCode, getRemoteSessionFieldProgressVariant, isRemoteSessionFieldOverLimit, isRemoteSessionFormSubmitDisabled, REMOTE_SESSION_FIELD_LENGTH_ERROR, REMOTE_SESSION_FIELD_LENGTH_LIMIT, } from './remoteSessionUtils';
23
+ import { buildRemoteSessionRequestCaseUpdate, buildRemoteSessionRequestComment, getLocaleNameFromLocalCode, getRemoteSessionFieldProgressVariant, isRemoteSessionFieldOverLimit, isRemoteSessionFormSubmitDisabled, REMOTE_SESSION_FIELD_LENGTH_ERROR, REMOTE_SESSION_FIELD_LENGTH_LIMIT, } from './remoteSessionUtils';
24
24
  export function NewEssTermsModal(props) {
25
25
  const { t } = useTranslation();
26
26
  const { remoteSessionTermsAcked } = useCaseSelector((state) => ({
@@ -104,9 +104,7 @@ export function NewEssTermsModal(props) {
104
104
  };
105
105
  // Function to ack remote session terms and post comment
106
106
  const submitRemoteSessionAgreement = (pdfId) => __awaiter(this, void 0, void 0, function* () {
107
- const requestComment = t(`<p><strong>Thank you for submitting the request for a remote session. A support manager will review the request, and updates will be provided in the support case. Please continue to provide any data requested by the support engineers in the case prior to the remote session (if applicable).</strong></p><p>Submitted a remote session request with following details:</p><p><strong>Preferred Time and Expectations of remote session</strong></p><p>${sessionExpectations}</p><p><strong>Describe the impact to you or the business</strong></p><p>${impact}</p>${sessionLink
108
- ? `<p><strong>Remote session link</strong></p><p>${formatSessionLinks(sessionLink)}</p>`
109
- : ''}<p>This action does not initiate a remote session. A Red Hat Associate will get back to you soon.</p>`);
107
+ const requestComment = t(buildRemoteSessionRequestComment({ sessionExpectations, impact, sessionLink }));
110
108
  try {
111
109
  const ackedByUserId = yield resolveSalesforceUserIdByFederationId(apolloClient, props.loggedInUser);
112
110
  if (!ackedByUserId) {
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteSessionAgreementModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAqBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,qBAuaxD"}
1
+ {"version":3,"file":"RemoteSessionAgreementModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/RemoteSessionAgreementModal.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,KAA8B,MAAM,OAAO,CAAC;AAqBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,qBAiaxD"}
@@ -20,7 +20,7 @@ import { Trans, useTranslation } from 'react-i18next';
20
20
  import { useCaseDispatch, useCaseSelector } from '../../../context/CaseContext';
21
21
  import { GET_CASE_COMMENTS, useCreateCaseComment } from '../../../hooks/useCaseComments';
22
22
  import { checkForCaseStatusToggleOnAttachOrComment, setRemoteRiderFlag, updateCaseDetailsGraphQL, } from '../../../reducers/CaseReducer';
23
- import { buildRemoteSessionRequestCaseUpdate, formatSessionLinks, getLocaleNameFromLocalCode, getRemoteSessionFieldProgressVariant, isRemoteSessionFieldOverLimit, isRemoteSessionFormSubmitDisabled, REMOTE_SESSION_FIELD_LENGTH_ERROR, REMOTE_SESSION_FIELD_LENGTH_LIMIT, } from './remoteSessionUtils';
23
+ import { buildRemoteSessionRequestCaseUpdate, buildRemoteSessionRequestComment, getLocaleNameFromLocalCode, getRemoteSessionFieldProgressVariant, isRemoteSessionFieldOverLimit, isRemoteSessionFormSubmitDisabled, REMOTE_SESSION_FIELD_LENGTH_ERROR, REMOTE_SESSION_FIELD_LENGTH_LIMIT, } from './remoteSessionUtils';
24
24
  export function RemoteSessionAgreementModal(props) {
25
25
  const { t } = useTranslation();
26
26
  const { remoteSessionTermsAcked } = useCaseSelector((state) => ({
@@ -95,9 +95,7 @@ export function RemoteSessionAgreementModal(props) {
95
95
  const existingCaseDetails = useCaseSelector((state) => state.caseDetails, isEqual);
96
96
  // Function to ack remote session terms and post comment
97
97
  const submitRemoteSessionAgreement = (pdfId) => __awaiter(this, void 0, void 0, function* () {
98
- const requestComment = t(`<p><strong>Thank you for submitting the request for a remote session. A support manager will review the request, and updates will be provided in the support case. Please continue to provide any data requested by the support engineers in the case prior to the remote session (if applicable).</strong></p><p>Submitted a remote session request with following details:</p><p><strong>Preferred Time and Expectations of remote session</strong></p><p>${sessionExpectations}</p><p><strong>Describe the impact to you or the business</strong></p><p>${impact}</p>${sessionLink
99
- ? `<p><strong>Remote session link</strong></p><p>${formatSessionLinks(sessionLink)}</p>`
100
- : ''}<p>This action does not initiate a remote session. A Red Hat Associate will get back to you soon.</p>`);
98
+ const requestComment = t(buildRemoteSessionRequestComment({ sessionExpectations, impact, sessionLink }));
101
99
  try {
102
100
  const ackedByUserId = yield resolveSalesforceUserIdByFederationId(apolloClient, props.loggedInUser);
103
101
  if (!ackedByUserId) {
@@ -12,4 +12,13 @@ export declare function buildRemoteSessionRequestCaseUpdate(ackedByUserId: strin
12
12
  };
13
13
  export declare const getLocaleNameFromLocalCode: (localeCode: string) => string;
14
14
  export declare const formatSessionLinks: (sessionLink: string) => string;
15
+ /**
16
+ * Builds the public case comment for a remote session request.
17
+ * User-controlled fields are HTML-escaped so markup/CSS cannot be injected.
18
+ */
19
+ export declare function buildRemoteSessionRequestComment(params: {
20
+ sessionExpectations: string;
21
+ impact: string;
22
+ sessionLink?: string;
23
+ }): string;
15
24
  //# sourceMappingURL=remoteSessionUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remoteSessionUtils.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD,eAAO,MAAM,iCAAiC,iEAAiG,CAAC;AAEhJ,eAAO,MAAM,6BAA6B,GAAI,OAAO,MAAM,KAAG,OACV,CAAC;AAErD,eAAO,MAAM,oCAAoC,GAAI,OAAO,MAAM,KAAG,eAKpE,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAAI,qBAAqB,MAAM,EAAE,QAAQ,MAAM,KAAG,OAIvD,CAAC;AAE1C,wBAAgB,mCAAmC,CAAC,aAAa,EAAE,MAAM;;;;;EAOxE;AAED,eAAO,MAAM,0BAA0B,GAAI,YAAY,MAAM,KAAG,MAa/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,aAAa,MAAM,KAAG,MAOxD,CAAC"}
1
+ {"version":3,"file":"remoteSessionUtils.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/RequestRemoteSession/remoteSessionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD,eAAO,MAAM,iCAAiC,iEAAiG,CAAC;AAEhJ,eAAO,MAAM,6BAA6B,GAAI,OAAO,MAAM,KAAG,OACV,CAAC;AAErD,eAAO,MAAM,oCAAoC,GAAI,OAAO,MAAM,KAAG,eAKpE,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAAI,qBAAqB,MAAM,EAAE,QAAQ,MAAM,KAAG,OAIvD,CAAC;AAE1C,wBAAgB,mCAAmC,CAAC,aAAa,EAAE,MAAM;;;;;EAOxE;AAED,eAAO,MAAM,0BAA0B,GAAI,YAAY,MAAM,KAAG,MAa/D,CAAC;AAWF,eAAO,MAAM,kBAAkB,GAAI,aAAa,MAAM,KAAG,MAaxD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IACrD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAQT"}
@@ -1,4 +1,5 @@
1
1
  import { ProgressVariant } from '@patternfly/react-core';
2
+ import { escapeHtml } from '@rh-support/utils';
2
3
  export const REMOTE_SESSION_FIELD_LENGTH_LIMIT = 2000;
3
4
  export const REMOTE_SESSION_FIELD_LENGTH_ERROR = `That description exceeds ${REMOTE_SESSION_FIELD_LENGTH_LIMIT} characters. Try shortening it.`;
4
5
  export const isRemoteSessionFieldOverLimit = (value) => value.length > REMOTE_SESSION_FIELD_LENGTH_LIMIT;
@@ -38,10 +39,38 @@ export const getLocaleNameFromLocalCode = (localeCode) => {
38
39
  }
39
40
  return localeCode;
40
41
  };
42
+ const isSafeHttpUrl = (url) => {
43
+ try {
44
+ const parsed = new URL(url);
45
+ return parsed.protocol === 'http:' || parsed.protocol === 'https:';
46
+ }
47
+ catch (_a) {
48
+ return false;
49
+ }
50
+ };
41
51
  export const formatSessionLinks = (sessionLink) => {
42
52
  const links = sessionLink
43
53
  .split(/[;,| \n\r\t]+/)
44
54
  .map((link) => link.trim())
45
55
  .filter(Boolean);
46
- return links.map((link) => `<a href="${link}">${link}</a>`).join('<br>');
56
+ return links
57
+ .map((link) => {
58
+ const safeText = escapeHtml(link);
59
+ const safeHref = isSafeHttpUrl(link) ? escapeHtml(link) : '#';
60
+ return `<a href="${safeHref}">${safeText}</a>`;
61
+ })
62
+ .join('<br>');
47
63
  };
64
+ /**
65
+ * Builds the public case comment for a remote session request.
66
+ * User-controlled fields are HTML-escaped so markup/CSS cannot be injected.
67
+ */
68
+ export function buildRemoteSessionRequestComment(params) {
69
+ var _a;
70
+ const expectations = escapeHtml(params.sessionExpectations);
71
+ const impactHtml = escapeHtml(params.impact);
72
+ const sessionLinkSection = ((_a = params.sessionLink) === null || _a === void 0 ? void 0 : _a.trim())
73
+ ? `<p><strong>Remote session link</strong></p><p>${formatSessionLinks(params.sessionLink)}</p>`
74
+ : '';
75
+ return `<p><strong>Thank you for submitting the request for a remote session. A support manager will review the request, and updates will be provided in the support case. Please continue to provide any data requested by the support engineers in the case prior to the remote session (if applicable).</strong></p><p>Submitted a remote session request with following details:</p><p><strong>Preferred Time and Expectations of remote session</strong></p><p>${expectations}</p><p><strong>Describe the impact to you or the business</strong></p><p>${impactHtml}</p>${sessionLinkSection}<p>This action does not initiate a remote session. A Red Hat Associate will get back to you soon.</p>`;
76
+ }
@@ -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;AAuBvE,OAAO,KAAkD,MAAM,OAAO,CAAC;AAUvE,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAClF,eAAO,MAAM,wCAAwC,yBAAyB,CAAC;AAE/E,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClF,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,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,4EAkdhB,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;AAuBvE,OAAO,KAAkD,MAAM,OAAO,CAAC;AAUvE,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAClF,eAAO,MAAM,wCAAwC,yBAAyB,CAAC;AAE/E,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClF,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,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,4EAsdhB,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -196,7 +196,11 @@ const CaseComments = React.forwardRef((props, ref) => {
196
196
  node.setAttribute('rel', 'noopener noreferrer');
197
197
  }
198
198
  });
199
- const clean = DOMPurify.sanitize(escapeNonQuillTags(html), { ADD_ATTR: ['target', 'rel'] });
199
+ const clean = DOMPurify.sanitize(escapeNonQuillTags(html), {
200
+ ADD_ATTR: ['target', 'rel'],
201
+ FORBID_TAGS: ['style'],
202
+ FORBID_ATTR: ['style'],
203
+ });
200
204
  DOMPurify.removeHook('afterSanitizeAttributes');
201
205
  return clean;
202
206
  };
@@ -246,12 +250,12 @@ const CaseComments = React.forwardRef((props, ref) => {
246
250
  const parseComment = parseCommentHtml(comment.commentBody, comment.contentType);
247
251
  return (React.createElement("pre", { className: "push-top-narrow comment-plaintext reset-pre-text", dangerouslySetInnerHTML: commentText(parseComment), style: { fontFamily: isExportingPDF ? 'DejaVu Sans' : '' } }));
248
252
  }
249
- let htmlString = comment.commentBody;
250
- htmlString = linkifyHtmlTextNodes(htmlString);
253
+ let htmlString = sanitizeHtml(linkifyHtmlTextNodes(comment.commentBody));
254
+ // PDF-only markup is trusted and applied after sanitization.
251
255
  if (isExportingPDF) {
252
256
  htmlString = formatMarkdownHtmlForPDF(htmlString);
253
257
  }
254
- return (React.createElement("div", { className: "push-top-narrow comment-richtext", dangerouslySetInnerHTML: { __html: sanitizeHtml(htmlString) }, style: { fontFamily: isExportingPDF ? 'DejaVu Sans' : '' } }));
258
+ return (React.createElement("div", { className: "push-top-narrow comment-richtext", dangerouslySetInnerHTML: { __html: htmlString }, style: { fontFamily: isExportingPDF ? 'DejaVu Sans' : '' } }));
255
259
  };
256
260
  useEffect(() => {
257
261
  if ((markdownRef === null || markdownRef === void 0 ? void 0 : markdownRef.current) && isExportingPDF) {
@@ -1 +1 @@
1
- {"version":3,"file":"useCommentDrafts.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAsB,MAAM,OAAO,CAAC;AAMrE,UAAU,sBAAsB;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,wBAAgB,gBAAgB,CAAC,EAC7B,UAAU,EACV,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,WAAW,EACX,cAAc,GACjB,EAAE,sBAAsB;sDAGmB,MAAM,cAAc,OAAO;;EA2DtE"}
1
+ {"version":3,"file":"useCommentDrafts.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useCommentDrafts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAsB,MAAM,OAAO,CAAC;AAMrE,UAAU,sBAAsB;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,wBAAgB,gBAAgB,CAAC,EAC7B,UAAU,EACV,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,WAAW,EACX,cAAc,GACjB,EAAE,sBAAsB;sDAGmB,MAAM,cAAc,OAAO;;EA2DtE"}
@@ -7,6 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
+ import { escapeHtml } from '@rh-support/utils';
10
11
  import debounce from 'lodash/debounce';
11
12
  import { useEffect, useMemo } from 'react';
12
13
  import { CaseDetailsCacheNamespaces } from '../../../../../enums/cache';
@@ -47,7 +48,7 @@ export function useCommentDrafts({ caseNumber, loggedInUserSSO, isInternal, comm
47
48
  // Legacy guard: old drafts stored as plain text without HTML tags
48
49
  let draftText = draft.text;
49
50
  if (!/<[a-z][\s\S]*>/i.test(draftText)) {
50
- draftText = `<p>${draftText}</p>`;
51
+ draftText = `<p>${escapeHtml(draftText)}</p>`;
51
52
  }
52
53
  setCommentText(draftText);
53
54
  applySignature(draftText);
@@ -14,7 +14,7 @@ import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
14
14
  import { LoadingIndicator, RichTextEditor, ToastNotification, usePrevious } from '@rh-support/components';
15
15
  import { GlobalMetadataStateContext, useCanEditCase, useUserPreferences } from '@rh-support/react-context';
16
16
  import { ability, CaseDiscussionFields, resourceActions, resources } from '@rh-support/user-permissions';
17
- import { formatDateTime, getHydraAttachmentImageUrl } from '@rh-support/utils';
17
+ import { escapeHtml, formatDateTime, getHydraAttachmentImageUrl } from '@rh-support/utils';
18
18
  import isEmpty from 'lodash/isEmpty';
19
19
  import isEqual from 'lodash/isEqual';
20
20
  import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
@@ -62,7 +62,7 @@ export function PostComment(props) {
62
62
  const applySignature = useCallback((text) => {
63
63
  if (isEmpty(commentSignature))
64
64
  return;
65
- const signatureHtml = `<p>${commentSignature}</p>`;
65
+ const signatureHtml = `<p>${escapeHtml(commentSignature)}</p>`;
66
66
  const signed = text.includes(commentSignature) ? text : text + signatureHtml;
67
67
  setCommentText(signed);
68
68
  }, [commentSignature]);
@@ -74,7 +74,7 @@ export function PostComment(props) {
74
74
  const sig = (yield getCommentSignature()) || '';
75
75
  setCommentSignature(sig);
76
76
  if (isEmpty(commentText) && !isEmpty(sig)) {
77
- setCommentText(`<p><br></p><p>${sig}</p>`);
77
+ setCommentText(`<p><br></p><p>${escapeHtml(sig)}</p>`);
78
78
  }
79
79
  }
80
80
  catch (error) {
@@ -141,7 +141,7 @@ export function PostComment(props) {
141
141
  });
142
142
  const resetCommentSection = () => __awaiter(this, void 0, void 0, function* () {
143
143
  yield clearDraft();
144
- const resetText = commentSignature ? `<p><br></p><p>${commentSignature}</p>` : '';
144
+ const resetText = commentSignature ? `<p><br></p><p>${escapeHtml(commentSignature)}</p>` : '';
145
145
  setCommentText(resetText);
146
146
  resetIsPublic();
147
147
  });
@@ -213,11 +213,11 @@ export function PostComment(props) {
213
213
  const formattedTimestamp = props.replyingToTimestamp ? formatDateTime(props.replyingToTimestamp) : '';
214
214
  const replyPrefix = formattedTimestamp
215
215
  ? t('(replying to {{commentCreator}}, {{timestamp}}) \n', {
216
- commentCreator: props.replyingToAuthor,
217
- timestamp: formattedTimestamp,
216
+ commentCreator: escapeHtml(props.replyingToAuthor),
217
+ timestamp: escapeHtml(formattedTimestamp),
218
218
  })
219
219
  : t('(replying to {{commentCreator}}) \n', {
220
- commentCreator: props.replyingToAuthor,
220
+ commentCreator: escapeHtml(props.replyingToAuthor),
221
221
  });
222
222
  body = `<p>${replyPrefix}</p>${body}`;
223
223
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CaseGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseGroup.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAmB5E,UAAU,MAAM;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD,iBAAS,SAAS,CAAC,KAAK,EAAE,MAAM,qBAqf/B;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"CaseGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseGroup.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAuD,MAAM,OAAO,CAAC;AAmB5E,UAAU,MAAM;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD,iBAAS,SAAS,CAAC,KAAK,EAAE,MAAM,qBA0f/B;AAED,eAAe,SAAS,CAAC"}
@@ -36,9 +36,10 @@ const emptyCaseGroup = {
36
36
  members: [],
37
37
  };
38
38
  function CaseGroup(props) {
39
+ var _a, _b;
39
40
  const { t } = useTranslation();
40
41
  const caseUpdateError = useCaseUpdateErrorMessage();
41
- const { groupNumber, caseNumber, caseId, accountNumber, ownersCaseGroups, groupName, isCaseOwnerUpdating, contactSSOName, selectedOwnerContactId, selectedOwnerIsOrgAdmin, pendingCaseOwnerUpdate, existingCaseDetails, } = useCaseSelector((state) => {
42
+ const { groupNumber, caseNumber, caseId, accountNumber, ownersCaseGroups, groupName, isCaseOwnerUpdating, contactSSOName, selectedOwnerContactId, selectedOwnerIsOrgAdmin, pendingCaseOwnerUpdate, existingCaseDetails, selectedAccountDetails, } = useCaseSelector((state) => {
42
43
  var _a, _b, _c, _d, _e;
43
44
  return ({
44
45
  caseNumber: state.caseDetails.caseNumber,
@@ -53,10 +54,14 @@ function CaseGroup(props) {
53
54
  selectedOwnerIsOrgAdmin: (_e = (_d = (_c = state.selectedOwner) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.isOrgAdmin) !== null && _e !== void 0 ? _e : false,
54
55
  pendingCaseOwnerUpdate: state.pendingCaseOwnerUpdate,
55
56
  existingCaseDetails: state.caseDetails,
57
+ selectedAccountDetails: state.selectedAccountDetails,
56
58
  });
57
59
  }, isEqual);
58
60
  const caseDispatch = useCaseDispatch();
59
61
  const apolloClient = useApolloClient();
62
+ const { globalMetadataState: { loggedInUsersAccount, loggedInUserRights, loggedInUser }, } = useContext(GlobalMetadataStateContext);
63
+ const salesforceAccountId = ((_a = selectedAccountDetails === null || selectedAccountDetails === void 0 ? void 0 : selectedAccountDetails.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId) ||
64
+ ((_b = loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.salesforceAccountId);
60
65
  const { isExportingPDF } = useContext(PDFContext);
61
66
  const { routeState: { isNextBtnClickedToShowValidationError }, } = useContext(RouteContext);
62
67
  const { isGroupMandatory, shouldHideSelector, isNoGroupsBlockedState } = useCaseGroupUiState();
@@ -68,11 +73,11 @@ function CaseGroup(props) {
68
73
  useEffect(() => {
69
74
  if (!caseNumber)
70
75
  return;
71
- if (isEmpty(selectedOwnerContactId) || isEmpty(accountNumber))
76
+ if (isEmpty(selectedOwnerContactId) || isEmpty(salesforceAccountId))
72
77
  return;
73
- fetchCaseGroupsForContactGraphQL(caseDispatch, apolloClient, selectedOwnerContactId, accountNumber, groupNumber || null, selectedOwnerIsOrgAdmin, groupNumber !== null && groupNumber !== void 0 ? groupNumber : '', groupName || '');
78
+ fetchCaseGroupsForContactGraphQL(caseDispatch, apolloClient, selectedOwnerContactId, salesforceAccountId, groupNumber || null, selectedOwnerIsOrgAdmin, groupNumber !== null && groupNumber !== void 0 ? groupNumber : '', groupName || '');
74
79
  // eslint-disable-next-line react-hooks/exhaustive-deps
75
- }, [selectedOwnerContactId, accountNumber, selectedOwnerIsOrgAdmin, groupNumber, groupName]);
80
+ }, [selectedOwnerContactId, salesforceAccountId, selectedOwnerIsOrgAdmin, groupNumber, groupName]);
76
81
  const [selectedCaseGroup, setSelectedCaseGroup] = useState(isGroupMandatory ? undefined : emptyCaseGroup);
77
82
  const [isCaseGroupInvalid, setCaseGroupInvalid] = useState(false);
78
83
  const [isSelectedUngroupedInvalid, setIsSelectedUngroupedInvalid] = useState(false);
@@ -84,7 +89,6 @@ function CaseGroup(props) {
84
89
  const textInputRef = useRef();
85
90
  const canEditCase = useCanEditCase();
86
91
  const ability = useContext(AbilityContext);
87
- const { globalMetadataState: { loggedInUserRights, loggedInUser }, } = useContext(GlobalMetadataStateContext);
88
92
  const canViewManageTab = ability.can(resourceActions.READ, resources.MANAGE);
89
93
  const canViewCaseGroups = ability.can(resourceActions.READ, resources.CASE_GROUPS) && canViewManageTab;
90
94
  // value changed logic to show a non local group change
@@ -1 +1 @@
1
- {"version":3,"file":"CaseLabels.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseLabels.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAYzD,MAAM,CAAC,OAAO,UAAU,UAAU,sBA4LjC"}
1
+ {"version":3,"file":"CaseLabels.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseLabels.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAYzD,MAAM,CAAC,OAAO,UAAU,UAAU,sBAwMjC"}
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import { Label, MenuToggle, Select, SelectList, SelectOption, Spinner, } from '@patternfly/react-core';
11
11
  import { CaseLabelLoadErrorModal, ToastNotification } from '@rh-support/components';
12
12
  import { GlobalMetadataStateContext, useCanEditCase } from '@rh-support/react-context';
13
+ import { resolveCaseLabelAccountId } from '@rh-support/utils';
13
14
  import isEqual from 'lodash/isEqual';
14
15
  import React, { useContext, useState } from 'react';
15
16
  import { Trans, useTranslation } from 'react-i18next';
@@ -19,15 +20,22 @@ import { useCaseLabelLinks } from '../../hooks/useCaseLabelLinkMutations';
19
20
  import { useCaseUpdateErrorMessage } from '../../hooks/useCaseUpdateErrorMessage';
20
21
  const NUM_VISIBLE_LABELS = 3;
21
22
  export default function CaseLabels() {
22
- var _a;
23
+ var _a, _b;
23
24
  const { t } = useTranslation();
24
25
  const caseUpdateError = useCaseUpdateErrorMessage();
25
26
  const canEditCase = useCanEditCase();
26
27
  const { globalMetadataState: { loggedInUser, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
27
28
  const isOrgAdmin = loggedInUser.data.isOrgAdmin;
28
- const { caseId } = useCaseSelector((state) => ({ caseId: state.caseDetails.id }), isEqual);
29
- const labelAccountId = (_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId;
30
- const isLabelAccountReady = !loggedInUsersAccount.isFetching && Boolean(labelAccountId);
29
+ const { caseId, selectedAccountDetails } = useCaseSelector((state) => ({
30
+ caseId: state.caseDetails.id,
31
+ selectedAccountDetails: state.selectedAccountDetails,
32
+ }), isEqual);
33
+ // Same account resolution as Case Group: case/selected account SF id only (logged-in as fallback).
34
+ const labelAccountId = resolveCaseLabelAccountId({
35
+ selectedAccountSalesforceId: (_a = selectedAccountDetails === null || selectedAccountDetails === void 0 ? void 0 : selectedAccountDetails.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId,
36
+ loggedInAccountSalesforceId: (_b = loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.salesforceAccountId,
37
+ });
38
+ const isLabelAccountReady = !(selectedAccountDetails === null || selectedAccountDetails === void 0 ? void 0 : selectedAccountDetails.isFetching) && !loggedInUsersAccount.isFetching && Boolean(labelAccountId);
31
39
  const { availableLabels, assignedLinks, selectedLabelIds, loading, error, mutating, setAssignedLinks, createLink, deleteLink, refetch, } = useCaseLabelLinks(isLabelAccountReady ? labelAccountId : undefined, caseId);
32
40
  const [isOpen, setIsOpen] = useState(false);
33
41
  const [isErrorModalDismissed, setIsErrorModalDismissed] = useState(false);
@@ -1 +1 @@
1
- {"version":3,"file":"CaseLabelsCreate.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/CaseLabelsCreate.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAqE,MAAM,OAAO,CAAC;AAY1F,wFAAwF;AACxF,MAAM,CAAC,OAAO,UAAU,gBAAgB,sBA6NvC"}
1
+ {"version":3,"file":"CaseLabelsCreate.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/CaseLabelsCreate.tsx"],"names":[],"mappings":"AAeA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAYjF,wFAAwF;AACxF,MAAM,CAAC,OAAO,UAAU,gBAAgB,sBAwMvC"}
@@ -11,10 +11,10 @@ import { useApolloClient } from '@apollo/client/react';
11
11
  import { Label, MenuToggle, Select, SelectList, SelectOption, Spinner, } from '@patternfly/react-core';
12
12
  import { CaseLabelLoadErrorModal } from '@rh-support/components';
13
13
  import { GlobalMetadataStateContext } from '@rh-support/react-context';
14
- import { fetchAllAccountCaseLabels } from '@rh-support/utils';
14
+ import { fetchAllAccountCaseLabels, resolveCaseLabelAccountId } from '@rh-support/utils';
15
15
  import isEqual from 'lodash/isEqual';
16
16
  import unescape from 'lodash/unescape';
17
- import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
17
+ import React, { useCallback, useContext, useEffect, useState } from 'react';
18
18
  import { Trans, useTranslation } from 'react-i18next';
19
19
  import { Link } from 'react-router-dom';
20
20
  import { useCaseDispatch, useCaseSelector } from '../../context/CaseContext';
@@ -22,41 +22,26 @@ import { setCaseState } from '../../reducers/CaseReducer';
22
22
  const NUM_VISIBLE_LABELS = 3;
23
23
  /** Case creation Labels dropdown — selection is stored and linked after case create. */
24
24
  export default function CaseLabelsCreate() {
25
- var _a, _b, _c;
25
+ var _a;
26
26
  const { t } = useTranslation();
27
27
  const client = useApolloClient();
28
28
  const caseDispatch = useCaseDispatch();
29
29
  const { globalMetadataState: { loggedInUser, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
30
30
  const isOrgAdmin = loggedInUser.data.isOrgAdmin;
31
- const { salesforceAccountIdFromSelected, isSelectedAccountFetching, selectedAccountNumber, selectedLabelIds } = useCaseSelector((state) => {
32
- var _a, _b, _c, _d, _e, _f, _g;
31
+ const { salesforceAccountIdFromSelected, isSelectedAccountFetching, selectedLabelIds } = useCaseSelector((state) => {
32
+ var _a, _b, _c, _d, _e;
33
33
  return ({
34
34
  salesforceAccountIdFromSelected: (_b = (_a = state.selectedAccountDetails) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.salesforceAccountId,
35
35
  isSelectedAccountFetching: (_d = (_c = state.selectedAccountDetails) === null || _c === void 0 ? void 0 : _c.isFetching) !== null && _d !== void 0 ? _d : false,
36
- selectedAccountNumber: (_f = (_e = state.selectedAccountDetails) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f.accountNumber,
37
- selectedLabelIds: (_g = state.selectedLabelIds) !== null && _g !== void 0 ? _g : [],
36
+ selectedLabelIds: (_e = state.selectedLabelIds) !== null && _e !== void 0 ? _e : [],
38
37
  });
39
38
  }, isEqual);
40
- const salesforceAccountId = useMemo(() => {
41
- var _a, _b;
42
- if (salesforceAccountIdFromSelected) {
43
- return salesforceAccountIdFromSelected;
44
- }
45
- const loggedInAccountNumber = (_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.accountNumber;
46
- const loggedInSalesforceAccountId = (_b = loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.salesforceAccountId;
47
- if (loggedInSalesforceAccountId &&
48
- (!selectedAccountNumber || selectedAccountNumber === loggedInAccountNumber)) {
49
- return loggedInSalesforceAccountId;
50
- }
51
- return undefined;
52
- }, [
53
- salesforceAccountIdFromSelected,
54
- (_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.accountNumber,
55
- (_b = loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.salesforceAccountId,
56
- selectedAccountNumber,
57
- ]);
39
+ // Same account resolution as Case Group: case/selected account SF id only (logged-in as fallback).
40
+ const labelAccountId = resolveCaseLabelAccountId({
41
+ selectedAccountSalesforceId: salesforceAccountIdFromSelected,
42
+ loggedInAccountSalesforceId: (_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId,
43
+ });
58
44
  const isAccountLoading = isSelectedAccountFetching || loggedInUsersAccount.isFetching;
59
- const labelAccountId = salesforceAccountId !== null && salesforceAccountId !== void 0 ? salesforceAccountId : (_c = loggedInUsersAccount.data) === null || _c === void 0 ? void 0 : _c.salesforceAccountId;
60
45
  const [availableLabels, setAvailableLabels] = useState([]);
61
46
  const [loading, setLoading] = useState(false);
62
47
  const [error, setError] = useState(undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateSeverityModal.d.ts","sourceRoot":"","sources":["../../../../src/components/UpdateSeverityModal/UpdateSeverityModal.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAexF,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBA+oBxD"}
1
+ {"version":3,"file":"UpdateSeverityModal.d.ts","sourceRoot":"","sources":["../../../../src/components/UpdateSeverityModal/UpdateSeverityModal.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAmE,MAAM,OAAO,CAAC;AAexF,UAAU,MAAM;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAipBxD"}
@@ -11,7 +11,7 @@ import { useApolloClient } from '@apollo/client/react';
11
11
  import { Button, Dropdown, DropdownItem, DropdownList, Flex, FlexItem, MenuToggle, Modal, ModalBody, ModalFooter, ModalHeader, Spinner, TextArea, } from '@patternfly/react-core';
12
12
  import { ToastNotification } from '@rh-support/components';
13
13
  import { GlobalMetadataStateContext, useCanEditCase } from '@rh-support/react-context';
14
- import { getFtsForSeverityChange, isPremiumEntitlement, isSev1, PreviousCaseTypes, severitySort, } from '@rh-support/utils';
14
+ import { escapeHtml, getFtsForSeverityChange, isPremiumEntitlement, isSev1, PreviousCaseTypes, severitySort, } from '@rh-support/utils';
15
15
  import { isUndefined } from 'lodash';
16
16
  import find from 'lodash/find';
17
17
  import includes from 'lodash/includes';
@@ -166,7 +166,7 @@ export default function UpdateSeverityModal(props) {
166
166
  return '<h4>Contact Support Update</h4><p>User updated 24x7 contact information</p>';
167
167
  };
168
168
  const updateCaseFtsInfo = () => __awaiter(this, void 0, void 0, function* () {
169
- const ftsUpdateComment = `${getFtsUpdateComment()}<h4>Description</h4><p>${descriptionValue.trim()}</p>`;
169
+ const ftsUpdateComment = `${getFtsUpdateComment()}<h4>Description</h4><p>${escapeHtml(descriptionValue.trim())}</p>`;
170
170
  try {
171
171
  yield updateSeverityViaGraphQL({
172
172
  severity: currentSeverity || caseDetails.caseSeverity,
@@ -193,6 +193,7 @@ export default function UpdateSeverityModal(props) {
193
193
  }
194
194
  });
195
195
  const onSubmit = () => __awaiter(this, void 0, void 0, function* () {
196
+ var _a, _b;
196
197
  setIsUpdateClickedToShowError(true);
197
198
  if (isSubmitButtonDisabled) {
198
199
  return;
@@ -204,14 +205,14 @@ export default function UpdateSeverityModal(props) {
204
205
  const ftsUpdateComment = getFtsUpdateComment();
205
206
  // Severity update successful comment body
206
207
  const severityUpdateComment = t(`<h4>Severity update</h4><p>Severity changed from {{oldSeverity}} to {{newSeverity}}</p>${isEmpty(ftsUpdateComment) ? '' : ftsUpdateComment}<h4>Description</h4><p>{{description}}</p>`, {
207
- oldSeverity: caseDetails.caseSeverity,
208
- newSeverity: updatedCaseDetails['severity'],
209
- description: descriptionValue === null || descriptionValue === void 0 ? void 0 : descriptionValue.trim(),
208
+ oldSeverity: escapeHtml(caseDetails.caseSeverity),
209
+ newSeverity: escapeHtml(String((_a = updatedCaseDetails['severity']) !== null && _a !== void 0 ? _a : '')),
210
+ description: escapeHtml(descriptionValue === null || descriptionValue === void 0 ? void 0 : descriptionValue.trim()),
210
211
  });
211
212
  // Severity update failed comment body
212
213
  const severityUpdateFailedComment = t('<h4>Severity update</h4><p>Failed to change severity from {{oldSeverity}} to {{newSeverity}}. Please try again</p>', {
213
- oldSeverity: caseDetails.caseSeverity,
214
- newSeverity: updatedCaseDetails['severity'],
214
+ oldSeverity: escapeHtml(caseDetails.caseSeverity),
215
+ newSeverity: escapeHtml(String((_b = updatedCaseDetails['severity']) !== null && _b !== void 0 ? _b : '')),
215
216
  });
216
217
  try {
217
218
  setSeverityUpdating(caseOverviewDispatch, true);
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAiBvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAYvG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAuetD"}
1
+ {"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAiBvD,OAAO,EAAuC,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAYvG,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAkftD"}
@@ -34,6 +34,7 @@ import RouteUtils from '../../utils/routeUtils';
34
34
  import Constants from '../shared/Constants';
35
35
  import { AttachmentStateContext } from '../shared/fileUpload/reducer/AttachmentReducerContext';
36
36
  export function GlobalTroubleshootEffects(props) {
37
+ var _a;
37
38
  const [initDefaultSection, setInitDefaultSection] = useState(false);
38
39
  const dispatchToRouteReducer = useContext(RouteDispatchContext);
39
40
  const { globalMetadataState: { allProducts, loggedInUser, managedAccounts, loggedInUserRights, loggedInUsersAccount, loggedInUserJwtToken, }, } = useContext(GlobalMetadataStateContext);
@@ -252,14 +253,24 @@ export function GlobalTroubleshootEffects(props) {
252
253
  * Filters groups where the contact is a member via GET_CASE_GROUP.
253
254
  */
254
255
  useEffect(() => {
255
- if (isEmpty(accountNumber) || isEmpty(selectedOwnerContactId))
256
+ var _a, _b;
257
+ const salesforceAccountId = ((_a = selectedAccountDetails === null || selectedAccountDetails === void 0 ? void 0 : selectedAccountDetails.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId) ||
258
+ ((_b = loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.salesforceAccountId);
259
+ if (isEmpty(salesforceAccountId) || isEmpty(selectedOwnerContactId))
256
260
  return;
257
261
  const ownerContactChanged = previousOwnerContactIdRef.current !== undefined &&
258
262
  previousOwnerContactIdRef.current !== selectedOwnerContactId;
259
263
  previousOwnerContactIdRef.current = selectedOwnerContactId;
260
- fetchCaseGroupsForContactGraphQL(caseDispatch, apolloClient, selectedOwnerContactId, accountNumber, selectedOwnerDefaultCaseGroup, selectedOwnerIsOrgAdmin, ownerContactChanged ? null : groupNumber, ownerContactChanged ? '' : groupName || '');
264
+ fetchCaseGroupsForContactGraphQL(caseDispatch, apolloClient, selectedOwnerContactId, salesforceAccountId, selectedOwnerDefaultCaseGroup, selectedOwnerIsOrgAdmin, ownerContactChanged ? null : groupNumber, ownerContactChanged ? '' : groupName || '');
261
265
  // eslint-disable-next-line react-hooks/exhaustive-deps
262
- }, [selectedOwnerContactId, accountNumber, selectedOwnerDefaultCaseGroup, selectedOwnerIsOrgAdmin]);
266
+ }, [
267
+ selectedOwnerContactId,
268
+ accountNumber,
269
+ selectedAccountDetails,
270
+ selectedOwnerDefaultCaseGroup,
271
+ selectedOwnerIsOrgAdmin,
272
+ (_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.salesforceAccountId,
273
+ ]);
263
274
  useEffect(() => {
264
275
  if (!shouldHideSelector || !isEmpty(caseNumber))
265
276
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"CaseHelpers.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CaseHelpers.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseHelpers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { getAppVersion, getTechnicalSupportRecordTypeId, getUserAgentForCaseMode, getVersion, isPremiumEntitlement, resolveAccessRestrictionForCaseCreate, resolveNoClusterIdFieldsForCaseCreate, serializeNoClusterIdFieldsToAdditionalCaseInformation, showFtsOnCreateCasePage, stripNoClusterIdFieldsFromDescription, } from '@rh-support/utils';
1
+ import { escapeHtml, getAppVersion, getTechnicalSupportRecordTypeId, getUserAgentForCaseMode, getVersion, isPremiumEntitlement, resolveAccessRestrictionForCaseCreate, resolveNoClusterIdFieldsForCaseCreate, serializeNoClusterIdFieldsToAdditionalCaseInformation, showFtsOnCreateCasePage, stripNoClusterIdFieldsFromDescription, } from '@rh-support/utils';
2
2
  import filter from 'lodash/filter';
3
3
  import forEach from 'lodash/forEach';
4
4
  import isEmpty from 'lodash/isEmpty';
@@ -19,7 +19,7 @@ export const getCaseRecommendations = (docs, oldDocs) => {
19
19
  };
20
20
  export const getCepCommentFromCepDetails = (cepDetails) => {
21
21
  return `## Consultant Engaged\nThis case has been flagged with Consulting Engagement in Progress (CEP).This issue needs additional focus as Red Hat Consulting is currently engaged and working with the customer.
22
- \n\n### Consulting Contact:\n**Name:** ${cepDetails.contactName}\n**Availability/Working Hours:** ${cepDetails.workingHours}\n**Contact information:** ${cepDetails.contactInformation}${cepDetails.notes ? `\n**Notes:** ${cepDetails.notes}` : ''} `;
22
+ \n\n### Consulting Contact:\n**Name:** ${escapeHtml(cepDetails.contactName)}\n**Availability/Working Hours:** ${escapeHtml(cepDetails.workingHours)}\n**Contact information:** ${escapeHtml(cepDetails.contactInformation)}${cepDetails.notes ? `\n**Notes:** ${escapeHtml(cepDetails.notes)}` : ''} `;
23
23
  };
24
24
  export const getRecommendationObject = (doc, index) => {
25
25
  const bucket = index === 0 ? 4 : 3;
@@ -54,7 +54,7 @@ export declare const fetchCaseEntitlements: (dispatch: CaseReducerDispatchType,
54
54
  export declare const fetchCaseGroupsForSSO: (dispatch: CaseReducerDispatchType, contactSsoUsername: string, setCaseGroupToUngroupedOrDefault?: boolean, abortSignal?: AbortSignal, caseGroupNumberToRestore?: string | undefined) => Promise<void>;
55
55
  export declare const fetchCaseGroupsForContactGraphQL: (dispatch: CaseReducerDispatchType, apolloClient: {
56
56
  query: (options: any) => Promise<any>;
57
- }, contactId: string, accountNumber: string, defaultCaseGroupId?: string | null, isOrgAdmin?: boolean, currentGroupNumber?: string | null, currentGroupName?: string | null) => Promise<MatchedCaseGroup[]>;
57
+ }, contactId: string, salesforceAccountId: string, defaultCaseGroupId?: string | null, isOrgAdmin?: boolean, currentGroupNumber?: string | null, currentGroupName?: string | null) => Promise<MatchedCaseGroup[]>;
58
58
  export declare const updateCaseWithSession: (dispatch: CaseReducerDispatchType, sessionItem: ISessionItem, loggedInUserAccountNumber: string, loggedInUserContact: IContact, loggedInUserAccount?: Partial<IAccount>, apolloClient?: {
59
59
  query: (options: any) => Promise<any>;
60
60
  }) => Promise<void>;
@@ -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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"}
@@ -635,16 +635,29 @@ export const fetchCaseGroupsForSSO = (dispatch_1, contactSsoUsername_1, ...args_
635
635
  setCaseGroupToUngroupedOrDefault && setCaseDetails(dispatch, { groupNumber: null });
636
636
  }
637
637
  });
638
- export const fetchCaseGroupsForContactGraphQL = (dispatch_1, apolloClient_1, contactId_1, accountNumber_1, defaultCaseGroupId_1, ...args_1) => __awaiter(void 0, [dispatch_1, apolloClient_1, contactId_1, accountNumber_1, defaultCaseGroupId_1, ...args_1], void 0, function* (dispatch, apolloClient, contactId, accountNumber, defaultCaseGroupId, isOrgAdmin = false, currentGroupNumber, currentGroupName) {
638
+ export const fetchCaseGroupsForContactGraphQL = (dispatch_1, apolloClient_1, contactId_1, salesforceAccountId_1, defaultCaseGroupId_1, ...args_1) => __awaiter(void 0, [dispatch_1, apolloClient_1, contactId_1, salesforceAccountId_1, defaultCaseGroupId_1, ...args_1], void 0, function* (dispatch, apolloClient, contactId, salesforceAccountId, defaultCaseGroupId, isOrgAdmin = false, currentGroupNumber, currentGroupName) {
639
639
  var _a, _b, _c, _d;
640
+ if (isEmpty(salesforceAccountId)) {
641
+ return [];
642
+ }
640
643
  dispatch({
641
644
  type: CaseReducerConstants.caseStateChanged,
642
645
  payload: { ownersCaseGroups: getApiResourceObject([], true) },
643
646
  });
647
+ if (isEmpty(salesforceAccountId)) {
648
+ dispatch({
649
+ type: CaseReducerConstants.caseStateChanged,
650
+ payload: { ownersCaseGroups: getApiResourceObject([], false) },
651
+ });
652
+ return [];
653
+ }
644
654
  try {
645
655
  const { data } = yield apolloClient.query({
646
656
  query: GET_CASE_GROUP,
647
- variables: { first: 2000 },
657
+ variables: {
658
+ where: { Account__c: { eq: salesforceAccountId } },
659
+ first: 2000,
660
+ },
648
661
  });
649
662
  const response = data;
650
663
  const allGroups = (_d = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.redhat_support_uiapi) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.RedHatSupportCaseGroup__c) === null || _c === void 0 ? void 0 : _c.edges) !== null && _d !== void 0 ? _d : [];
@@ -1 +1 @@
1
- {"version":3,"file":"visitedResourcesUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/visitedResourcesUtils.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC/C;AAKD;;GAEG;AACH,eAAO,MAAM,6BAA6B,GAAI,qBAAqB,MAAM,EAAE,KAAK,MAAM,EAAE,OAAO,MAAM,SAkBpG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,iBAAiB,EAE/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,YAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wCAAwC,GAAI,0BAA0B,iBAAiB,EAAE,KAAG,MA6BxG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACpC,YAAY,MAAM,EAClB,0BAA0B,iBAAiB,EAAE,KAC9C,OAAO,CAAC,IAAI,CAmBd,CAAC"}
1
+ {"version":3,"file":"visitedResourcesUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/visitedResourcesUtils.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAC9B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,gBAAgB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CAC/C;AAKD;;GAEG;AACH,eAAO,MAAM,6BAA6B,GAAI,qBAAqB,MAAM,EAAE,KAAK,MAAM,EAAE,OAAO,MAAM,SAkBpG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAO,iBAAiB,EAE/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,YAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wCAAwC,GAAI,0BAA0B,iBAAiB,EAAE,KAAG,MA+BxG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACpC,YAAY,MAAM,EAClB,0BAA0B,iBAAiB,EAAE,KAC9C,OAAO,CAAC,IAAI,CAmBd,CAAC"}
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { publicApi } from '@cee-eng/hydrajs';
11
+ import { escapeHtml } from '@rh-support/utils';
11
12
  let clickedResourcesSequence = [];
12
13
  let lastSourceType = null;
13
14
  /**
@@ -60,15 +61,15 @@ export const formatClickedResourcesSequenceForComment = (clickedResourcesSequenc
60
61
  // Single link: 1. [source] - [title](url)
61
62
  const clickCount = source.clickedUrlsCount[source.clickedResources[0].url];
62
63
  const clickCountText = clickCount > 1 ? ` - (Customer visited this content ${clickCount} times)` : '';
63
- commentBody += `&nbsp;&nbsp;&nbsp;${index + 1}. [${source.resourceDisplayName}] - [${source.clickedResources[0].title}](${source.clickedResources[0].url})${clickCountText}\n\n`;
64
+ commentBody += `&nbsp;&nbsp;&nbsp;${index + 1}. [${escapeHtml(source.resourceDisplayName)}] - [${escapeHtml(source.clickedResources[0].title)}](${escapeHtml(source.clickedResources[0].url)})${clickCountText}\n\n`;
64
65
  }
65
66
  else {
66
67
  // Multiple links: 1. [source] \n -[title1](url1)\n -[title2](url2)
67
- commentBody += `&nbsp;&nbsp;&nbsp;${index + 1}. [${source.resourceDisplayName}] - \n\n`;
68
+ commentBody += `&nbsp;&nbsp;&nbsp;${index + 1}. [${escapeHtml(source.resourceDisplayName)}] - \n\n`;
68
69
  source.clickedResources.forEach((urlItem) => {
69
70
  const clickCount = source.clickedUrlsCount[urlItem.url];
70
71
  const clickCountText = clickCount > 1 ? ` - (Customer visited this content ${clickCount} times)` : '';
71
- commentBody += `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- [${urlItem.title}](${urlItem.url})${clickCountText}\n`;
72
+ commentBody += `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- [${escapeHtml(urlItem.title)}](${escapeHtml(urlItem.url)})${clickCountText}\n`;
72
73
  });
73
74
  commentBody += '\n';
74
75
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rh-support/troubleshoot",
3
- "version": "2.7.22",
3
+ "version": "2.7.23",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -52,11 +52,11 @@
52
52
  "@progress/kendo-licensing": "1.3.5",
53
53
  "@progress/kendo-react-pdf": "^5.16.0",
54
54
  "@redux-devtools/extension": "^3.3.0",
55
- "@rh-support/components": "2.6.21",
56
- "@rh-support/react-context": "2.6.22",
55
+ "@rh-support/components": "2.6.22",
56
+ "@rh-support/react-context": "2.6.23",
57
57
  "@rh-support/types": "2.0.30",
58
- "@rh-support/user-permissions": "2.6.19",
59
- "@rh-support/utils": "2.6.18",
58
+ "@rh-support/user-permissions": "2.6.20",
59
+ "@rh-support/utils": "2.6.19",
60
60
  "@types/react-redux": "^7.1.33",
61
61
  "@types/redux": "^3.6.0",
62
62
  "date-fns": "3.6.0",
@@ -129,5 +129,5 @@
129
129
  "defaults and supports es6-module",
130
130
  "maintained node versions"
131
131
  ],
132
- "gitHead": "6ad6c5da605925eb548c99d7b48dfd53df42af2c"
132
+ "gitHead": "640cdf1b20dd10a0240f7242836884441d925591"
133
133
  }