@rh-support/troubleshoot 2.6.276 → 2.6.280

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 (65) hide show
  1. package/lib/esm/components/AccountInfo/AccountSelector.d.ts.map +1 -1
  2. package/lib/esm/components/AccountInfo/AccountSelector.js +40 -28
  3. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
  4. package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +1 -3
  5. package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
  6. package/lib/esm/components/CaseEditView/Case.js +1 -3
  7. package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
  8. package/lib/esm/components/CaseEditView/CaseOverview/index.js +4 -6
  9. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.d.ts.map +1 -1
  10. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.js +34 -38
  11. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.d.ts.map +1 -1
  12. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.js +4 -2
  13. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
  14. package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +59 -19
  15. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
  16. package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +3 -5
  17. package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
  18. package/lib/esm/components/CaseInformation/CaseInformation.js +5 -7
  19. package/lib/esm/components/CaseInformation/ContactPhoneNumber.d.ts.map +1 -1
  20. package/lib/esm/components/CaseInformation/ContactPhoneNumber.js +24 -37
  21. package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
  22. package/lib/esm/components/CaseInformation/SupportLevel.js +55 -32
  23. package/lib/esm/components/CaseManagement/CaseLanguageSelector.js +2 -2
  24. package/lib/esm/components/CaseManagement/CaseManagement.d.ts.map +1 -1
  25. package/lib/esm/components/CaseManagement/CaseManagement.js +7 -4
  26. package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
  27. package/lib/esm/components/IdeaInformation/IdeaInformation.js +10 -10
  28. package/lib/esm/components/OpenCase/SupportTypeSelectorPage.d.ts.map +1 -1
  29. package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +2 -4
  30. package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts +1 -0
  31. package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
  32. package/lib/esm/components/ProductSelector/AllProductsSelector.js +15 -3
  33. package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
  34. package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +37 -13
  35. package/lib/esm/components/ProductSelector/NewProductVersionSelector.d.ts.map +1 -1
  36. package/lib/esm/components/ProductSelector/NewProductVersionSelector.js +53 -19
  37. package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
  38. package/lib/esm/components/ProductSelector/ProductSelector.js +3 -1
  39. package/lib/esm/components/Review/Review.d.ts.map +1 -1
  40. package/lib/esm/components/Review/Review.js +10 -6
  41. package/lib/esm/components/SessionRestore/SessionRestore.d.ts.map +1 -1
  42. package/lib/esm/components/SessionRestore/SessionRestore.js +1 -3
  43. package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
  44. package/lib/esm/components/shared/useIsSectionValid.js +64 -50
  45. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
  46. package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +9 -34
  47. package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
  48. package/lib/esm/components/wizardLayout/WizardLayout.js +7 -6
  49. package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
  50. package/lib/esm/components/wizardLayout/WizardNavigation.js +9 -10
  51. package/lib/esm/hooks/useResetCaseCreate.d.ts.map +1 -1
  52. package/lib/esm/hooks/useResetCaseCreate.js +11 -13
  53. package/lib/esm/reducers/CaseConstNTypes.d.ts +0 -23
  54. package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
  55. package/lib/esm/reducers/CaseConstNTypes.js +0 -5
  56. package/lib/esm/reducers/CaseHelpers.d.ts +1 -2
  57. package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
  58. package/lib/esm/reducers/CaseHelpers.js +2 -39
  59. package/lib/esm/reducers/CaseOverviewReducer.d.ts +1 -3
  60. package/lib/esm/reducers/CaseOverviewReducer.d.ts.map +1 -1
  61. package/lib/esm/reducers/CaseOverviewReducer.js +5 -7
  62. package/lib/esm/reducers/CaseReducer.d.ts +5 -15
  63. package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
  64. package/lib/esm/reducers/CaseReducer.js +23 -60
  65. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"AccountSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/AccountInfo/AccountSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AAOnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAK5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AAS/D,UAAU,MAAO,SAAQ,gBAAgB;CAAG;AAE5C,eAAO,MAAM,YAAY,EAAE,MAG1B,CAAC;AAEF,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,qBAmKrC;kBAnKQ,eAAe;;;AAuKxB,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"AccountSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/AccountInfo/AccountSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AAOnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAK5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AAS/D,UAAU,MAAO,SAAQ,gBAAgB;CAAG;AAE5C,eAAO,MAAM,YAAY,EAAE,MAG1B,CAAC;AAEF,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,qBA6KrC;kBA7KQ,eAAe;;;AAiLxB,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import './css/accountSelector.css';
11
- import { useApolloClient } from '@apollo/client/react';
11
+ import { accounts } from '@cee-eng/hydrajs';
12
12
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
13
13
  import { AlertMessage, AlertType } from '@rh-support/components';
14
14
  import { AccountSelectorInternal, GlobalMetadataStateContext } from '@rh-support/react-context';
@@ -30,14 +30,12 @@ export const defaultProps = {
30
30
  function AccountSelector(props) {
31
31
  var _a;
32
32
  const [showNotEntitledMessage, setShowNotEntitledMessage] = useState(false);
33
- const { accountNumber, selectedAccountDetails, hasInvalidEntitlements } = useCaseSelector((state) => ({
33
+ const { accountNumber, selectedAccountDetails } = useCaseSelector((state) => ({
34
34
  accountNumber: state.caseDetails.accountNumberRef,
35
35
  selectedAccountDetails: state.selectedAccountDetails,
36
- hasInvalidEntitlements: state.hasInvalidEntitlements,
37
36
  }), isEqual);
38
37
  const isSelectedAccountSubscriptionAbused = ((_a = selectedAccountDetails === null || selectedAccountDetails === void 0 ? void 0 : selectedAccountDetails.data) === null || _a === void 0 ? void 0 : _a.subscriptionAbuse) || false;
39
38
  const caseDispatch = useCaseDispatch();
40
- const apolloClient = useApolloClient();
41
39
  const routeDispatch = useRouteDispatchContext();
42
40
  const { globalMetadataState: { bookmarkedGroupAccounts, loggedInUserRights, managedAccounts, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
43
41
  const { t } = useTranslation();
@@ -45,7 +43,7 @@ function AccountSelector(props) {
45
43
  const ability = useContext(AbilityContext);
46
44
  const canAccessManagedAccounts = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.MANAGED_ACCOUNTS);
47
45
  const canBookmarkAccounts = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.BOOKMARK_ACCOUNTS);
48
- // const canUseFindMyAccount = loggedInUserRights.data.isAccountDifferentFromLoggedInAccount(accountNumber!);
46
+ const canUseFindMyAccount = loggedInUserRights.data.isAccountDifferentFromLoggedInAccount(accountNumber);
49
47
  // Account Change Handler
50
48
  const onAccountChange = (account) => __awaiter(this, void 0, void 0, function* () {
51
49
  if (selectedAccountDetails.data.accountNumber === account.accountNumber)
@@ -54,7 +52,7 @@ function AccountSelector(props) {
54
52
  clearSelectedAccount(caseDispatch);
55
53
  return;
56
54
  }
57
- setCaseAccountNumber(caseDispatch, account.accountNumber, loggedInUserRights.data.isAccountSameAsLoggedInAccount(account.accountNumber), loggedInUsersAccount.data, apolloClient);
55
+ setCaseAccountNumber(caseDispatch, account.accountNumber, loggedInUserRights.data.isAccountSameAsLoggedInAccount(account.accountNumber), loggedInUsersAccount.data);
58
56
  });
59
57
  const onInternalAccountSelect = (accounts) => {
60
58
  if (!isArray(accounts))
@@ -66,36 +64,48 @@ function AccountSelector(props) {
66
64
  selection.accountNum &&
67
65
  onAccountChange({ accountNumber: selection.accountNum, name: selection.name });
68
66
  };
69
- // const onFindMyAccountClick = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
70
- // !isEmpty(loggedInUserRights.data) &&
71
- // onAccountChange({
72
- // accountNumber: loggedInUserRights.data.getAccountNumber(),
73
- // name: loggedInUserRights.data.getAccountName(),
74
- // });
75
- // };
67
+ const onFindMyAccountClick = (event) => {
68
+ !isEmpty(loggedInUserRights.data) &&
69
+ onAccountChange({
70
+ accountNumber: loggedInUserRights.data.getAccountNumber(),
71
+ name: loggedInUserRights.data.getAccountName(),
72
+ });
73
+ };
76
74
  const selectedAccount = {
77
75
  name: selectedAccountDetails.data.name,
78
76
  accountNumber: selectedAccountDetails.data.accountNumber,
79
77
  subscriptionAbuse: selectedAccountDetails.data.subscriptionAbuse,
80
78
  };
79
+ // When internal user wants to open a case for a customer but customer account doesn't have entitlement, we show an error
81
80
  useEffect(() => {
82
- if (!loggedInUserRights.data.isInternal() || !selectedAccountDetails.data.accountNumber) {
83
- return;
84
- }
85
- if (selectedAccountDetails.data.accountNumber === loggedInUsersAccount.data.accountNumber) {
86
- setNoValidEntitlement(routeDispatch, false);
81
+ const getAccountEntitlement = () => __awaiter(this, void 0, void 0, function* () {
82
+ // internal user doesn't open case for customer. No need to check account entitlement
83
+ if (selectedAccountDetails.data.accountNumber === loggedInUsersAccount.data.accountNumber) {
84
+ setNoValidEntitlement(routeDispatch, false);
85
+ setShowNotEntitledMessage(false);
86
+ return;
87
+ }
87
88
  setShowNotEntitledMessage(false);
88
- return;
89
+ try {
90
+ const res = yield accounts.getAccountEntitlementByInternalUser(selectedAccountDetails.data.accountNumber);
91
+ if (isEmpty(res)) {
92
+ setShowNotEntitledMessage(true);
93
+ setNoValidEntitlement(routeDispatch, true);
94
+ }
95
+ else {
96
+ setShowNotEntitledMessage(false);
97
+ setNoValidEntitlement(routeDispatch, false);
98
+ }
99
+ }
100
+ catch (e) {
101
+ console.log(e);
102
+ }
103
+ });
104
+ if (loggedInUserRights.data.isInternal() && selectedAccountDetails.data.accountNumber) {
105
+ getAccountEntitlement();
89
106
  }
90
- setShowNotEntitledMessage(hasInvalidEntitlements);
91
- setNoValidEntitlement(routeDispatch, hasInvalidEntitlements);
92
107
  // eslint-disable-next-line react-hooks/exhaustive-deps
93
- }, [
94
- selectedAccountDetails.data.accountNumber,
95
- loggedInUserRights.data,
96
- loggedInUsersAccount.data,
97
- hasInvalidEntitlements,
98
- ]);
108
+ }, [selectedAccountDetails.data.accountNumber, loggedInUserRights.data, loggedInUsersAccount.data]);
99
109
  if (isEmpty(loggedInUserRights.data))
100
110
  return React.createElement(React.Fragment, null);
101
111
  return (React.createElement("div", { id: props.id, className: `form-group ${props.className}` },
@@ -104,7 +114,9 @@ function AccountSelector(props) {
104
114
  React.createElement("label", { htmlFor: "account-selector" },
105
115
  React.createElement(Trans, null, "Account"),
106
116
  ' ',
107
- React.createElement("span", { className: "form-required", "aria-hidden": true }, "*"))),
117
+ React.createElement("span", { className: "form-required", "aria-hidden": true }, "*")),
118
+ canUseFindMyAccount && (React.createElement("button", { role: "link", className: "btn btn-link btn-app find-my-account pf-v6-u-ml-auto", onClick: onFindMyAccountClick, disabled: selectedAccountDetails.isFetching, "data-tracking-id": "get-support-find-my-account", type: "button" },
119
+ React.createElement(Trans, null, "Find my account")))),
108
120
  React.createElement("div", { className: "account-selector-wrapper" },
109
121
  React.createElement(AccountSelectorInternal, { selectedAccounts: [selectedAccount], canBookmarkAccount: canBookmarkAccounts, bookmarkedAccounts: bookmarkedGroupAccounts.data, id: "account-or-bookmark-selector", className: "account-selector", name: "account-or-bookmark-selector", placeholder: t(`Search for an account ${loggedInUserRights.data.isExternal() ? 'or select a bookmark' : ''} `), onSelect: onInternalAccountSelect, disabled: loggedInUserRights.data.isExternal() || selectedAccountDetails.isFetching, isInValid: isSelectedAccountSubscriptionAbused, restrictedOnSubscriptionAbuse: true })),
110
122
  canAccessManagedAccounts && !isEmpty(managedAccounts.data) && (React.createElement(ManagedAccountsDropdown, { className: "managed-account-selector pf-v6-u-mt-xl", onManagedAccountChange: onManagedAccountChange, managedAccounts: managedAccounts, selectedAccountNumber: accountNumber, disabled: selectedAccountDetails.isFetching })),
@@ -1 +1 @@
1
- {"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAkBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBAoXnD"}
1
+ {"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAkBnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,qBA6WnD"}
@@ -7,7 +7,6 @@ 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 { useApolloClient } from '@apollo/client/react';
11
10
  import { escalations, publicApi } from '@cee-eng/hydrajs';
12
11
  import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalFooter, ModalHeader, Popover, TextArea, TextInput, Title, ValidatedOptions, } from '@patternfly/react-core';
13
12
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
@@ -28,7 +27,6 @@ const customerGEOKeys = Object.keys(CustomerGEOs);
28
27
  export function RequestEscalationModal(props) {
29
28
  const { globalMetadataState: { loggedInUser, loggedInUserRights }, } = useGlobalStateContext();
30
29
  const { t } = useTranslation();
31
- const apolloClient = useApolloClient();
32
30
  const [categories, setCategories] = useState([]);
33
31
  const initialState = {
34
32
  subject: '',
@@ -70,7 +68,7 @@ export function RequestEscalationModal(props) {
70
68
  updateDiscussionStateComments(dispatchDiscussion, caseDispatch, props.caseNumber, allDiscussions, sort, caseFeedbacksHydra.data, discussionFiltersListState);
71
69
  yield updateCaseRequest(props.caseNumber, { customerEscalation: true });
72
70
  checkForCaseStatusToggleOnAttachOrComment(caseDispatch, loggedInUserRights.data.isInternal(), props.caseStatus);
73
- yield fetchCaseDetails(caseDispatch, props.caseNumber, loggedInUserRights.data, loggedInUser.data, apolloClient);
71
+ yield fetchCaseDetails(caseDispatch, props.caseNumber, loggedInUserRights.data, loggedInUser.data);
74
72
  escalationNum &&
75
73
  ToastNotification.addSuccessMessage(t('Your escalation request has been successfully submitted.'));
76
74
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Case.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/Case.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAS,mBAAmB,EAAiD,MAAM,kBAAkB,CAAC;AAmB7G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,MAAM,qBA0PzC"}
1
+ {"version":3,"file":"Case.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/Case.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAO,EAAS,mBAAmB,EAAiD,MAAM,kBAAkB,CAAC;AAmB7G,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,KAAK,EAAE,MAAM,qBAmPzC"}
@@ -7,7 +7,6 @@ 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 { useApolloClient } from '@apollo/client/react';
11
10
  import { CoverSpinner, ErrorBoundary, OverviewContentLoader, ToastNotification, useDocumentTitle, usePrevious, } from '@rh-support/components';
12
11
  import { GlobalMetadataStateContext, HostnameAwarenessModal } from '@rh-support/react-context';
13
12
  import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
@@ -31,7 +30,6 @@ import { PDFContext } from './PDFContainer';
31
30
  export default function Case(props) {
32
31
  const { globalMetadataState: { loggedInUserRights, loggedInUsersAccount, loggedInUser }, } = useContext(GlobalMetadataStateContext);
33
32
  const caseDetailsPageDispatch = useCaseDetailsPageDispatchContext();
34
- const apolloClient = useApolloClient();
35
33
  const { t } = useTranslation();
36
34
  // The `path` lets us build <Route> paths that are
37
35
  // relative to the parent route, while the `url` lets
@@ -109,7 +107,7 @@ export default function Case(props) {
109
107
  caseDispatch(action);
110
108
  }
111
109
  };
112
- yield fetchCaseDetails(safeDispatch, targetCaseNumber, loggedInUserRights.data, loggedInUser.data, apolloClient);
110
+ yield fetchCaseDetails(safeDispatch, targetCaseNumber, loggedInUserRights.data, loggedInUser.data);
113
111
  if (currentCaseRef.current !== targetCaseNumber)
114
112
  return;
115
113
  if (canSeeRMEs) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseOverview/index.tsx"],"names":[],"mappings":"AAgCA,OAAO,KAAkD,MAAM,OAAO,CAAC;AA4BvE,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;CACnD;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAAK,EAAE,MAAM,qBA2fjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseOverview/index.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAkD,MAAM,OAAO,CAAC;AA4BvE,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;CACnD;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,KAAK,EAAE,MAAM,qBA0fjD"}
@@ -7,12 +7,11 @@ 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 { useApolloClient } from '@apollo/client/react';
11
10
  import { Alert, AlertVariant, Button, ButtonVariant, ExpandableSection, Label, ModalVariant, } from '@patternfly/react-core';
12
11
  import ExternalLinkAltIcon from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
13
12
  import LockIcon from '@patternfly/react-icons/dist/js/icons/lock-icon';
14
13
  import { ToastNotification, useConfirmation } from '@rh-support/components';
15
- import { CloseCaseModal, fetchCaseSeveritiesHydra, fetchCaseTypesHydra, GlobalMetadataDispatchContext, GlobalMetadataStateContext, useCanEditCase, } from '@rh-support/react-context';
14
+ import { CloseCaseModal, fetchCaseSeverities, fetchCaseTypes, GlobalMetadataDispatchContext, GlobalMetadataStateContext, useCanEditCase, } from '@rh-support/react-context';
16
15
  import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
17
16
  import { dtmTrackEventCaseStepEncountered, haventLoadedMetadata, isOpenShiftOnlineProduct, PreviousCaseTypes, toNewCaseTypeMapper, toNewCaseTypeSwitcher, } from '@rh-support/utils';
18
17
  import isEqual from 'lodash/isEqual';
@@ -75,7 +74,6 @@ export default function CaseOverview(props) {
75
74
  const canEditCase = useCanEditCase();
76
75
  const caseDispatch = useCaseDispatch();
77
76
  const globalMetadataDispatchContext = useContext(GlobalMetadataDispatchContext);
78
- const apolloClient = useApolloClient();
79
77
  const { globalMetadataState: { allCaseTypes, allCaseSeverities, viewAsCustomer, loggedInUsersAccount, loggedInUserRights, }, } = useContext(GlobalMetadataStateContext);
80
78
  const canManageCase = loggedInUserRights.data.canManageCases();
81
79
  const switchedCaseType = toNewCaseTypeSwitcher(caseType);
@@ -91,13 +89,13 @@ export default function CaseOverview(props) {
91
89
  }
92
90
  }
93
91
  if (haventLoadedMetadata(allCaseSeverities)) {
94
- fetchCaseSeveritiesHydra(globalMetadataDispatchContext, loggedInUsersAccount.data.secureSupport);
92
+ fetchCaseSeverities(globalMetadataDispatchContext, loggedInUsersAccount.data.secureSupport);
95
93
  }
96
94
  if (haventLoadedMetadata(allCaseTypes)) {
97
- fetchCaseTypesHydra(globalMetadataDispatchContext, loggedInUsersAccount.data.secureSupport);
95
+ fetchCaseTypes(globalMetadataDispatchContext, loggedInUsersAccount.data.secureSupport);
98
96
  }
99
97
  if (haventLoadedMetadata(caseOverviewState.allCaseStatuses)) {
100
- fetchAllStatuses(caseOverviewDispatch, apolloClient);
98
+ fetchAllStatuses(caseOverviewDispatch, loggedInUsersAccount.data.secureSupport);
101
99
  }
102
100
  // eslint-disable-next-line react-hooks/exhaustive-deps
103
101
  }, [
@@ -1 +1 @@
1
- {"version":3,"file":"CaseContactPhoneNumber.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAwC/D,wBAAgB,sBAAsB,sBAyXrC"}
1
+ {"version":3,"file":"CaseContactPhoneNumber.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.tsx"],"names":[],"mappings":"AASA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAgB/D,wBAAgB,sBAAsB,sBAoYrC"}
@@ -7,7 +7,6 @@ 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 { useApolloClient } from '@apollo/client/react';
11
10
  import { contacts } from '@cee-eng/hydrajs';
12
11
  import { InputGroupText, ValidatedOptions } from '@patternfly/react-core';
13
12
  import CheckIcon from '@patternfly/react-icons/dist/js/icons/check-icon';
@@ -15,7 +14,6 @@ import PencilAltIcon from '@patternfly/react-icons/dist/js/icons/pencil-alt-icon
15
14
  import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
16
15
  import { getPhoneObj, PhoneInput, ToastNotification } from '@rh-support/components';
17
16
  import { GlobalMetadataStateContext, useCanEditCase } from '@rh-support/react-context';
18
- import { GET_ACCOUNT_CONTACTS } from '@rh-support/utils';
19
17
  import isEmpty from 'lodash/isEmpty';
20
18
  import isEqual from 'lodash/isEqual';
21
19
  import React, { useContext, useEffect, useState } from 'react';
@@ -28,34 +26,13 @@ import { setCaseState, updateCaseDetails } from '../../../../reducers/CaseReduce
28
26
  import { ContactPhoneNumberPopOver } from '../../../CaseInformation/ContactPhoneNumberPopOver';
29
27
  import { removeAllChars, trimAndReplacePlus } from '../../../shared/utils';
30
28
  import { PDFContext } from '../../PDFContainer';
31
- function fetchContactBySSO(apolloClient, accountNumber, ssoUsername) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
34
- const { data } = yield apolloClient.query({
35
- query: GET_ACCOUNT_CONTACTS,
36
- variables: {
37
- accountNumber: { eq: accountNumber },
38
- contactsWhere: { SSOUserName__c: { eq: ssoUsername } },
39
- first: 1,
40
- },
41
- fetchPolicy: 'network-only',
42
- });
43
- const response = data;
44
- const contactNode = (_j = (_h = (_g = (_f = (_e = (_d = (_c = (_b = (_a = response === null || response === void 0 ? void 0 : response.salesforce_support_uiapi) === null || _a === void 0 ? void 0 : _a.query) === null || _b === void 0 ? void 0 : _b.SalesforceSupportAccount) === null || _c === void 0 ? void 0 : _c.edges) === null || _d === void 0 ? void 0 : _d[0]) === null || _e === void 0 ? void 0 : _e.node) === null || _f === void 0 ? void 0 : _f.Contacts) === null || _g === void 0 ? void 0 : _g.edges) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.node;
45
- return {
46
- phone: (_l = (_k = contactNode === null || contactNode === void 0 ? void 0 : contactNode.Phone) === null || _k === void 0 ? void 0 : _k.value) !== null && _l !== void 0 ? _l : '',
47
- };
48
- });
49
- }
50
29
  export function CaseContactPhoneNumber() {
51
30
  var _a;
52
- const apolloClient = useApolloClient();
53
- const { phoneCountryCode = '', phoneAreaCodePrefixLineNumber = '', caseNumber, contactSSOName, accountNumberRef, suppliedPhoneNumberVerified, isCaseOwnerUpdating, hasLoggedInUserConfirmedPhoneNumber, isCasePhoneUpdating, } = useCaseSelector((state) => ({
31
+ const { phoneCountryCode = '', phoneAreaCodePrefixLineNumber = '', caseNumber, contactSSOName, suppliedPhoneNumberVerified, isCaseOwnerUpdating, hasLoggedInUserConfirmedPhoneNumber, isCasePhoneUpdating, } = useCaseSelector((state) => ({
54
32
  phoneCountryCode: state.caseDetails.phoneCountryCode || '',
55
33
  phoneAreaCodePrefixLineNumber: state.caseDetails.phoneAreaCodePrefixLineNumber || '',
56
34
  caseNumber: state.caseDetails.caseNumber,
57
35
  contactSSOName: state.caseDetails.contactSSOName,
58
- accountNumberRef: state.caseDetails.accountNumberRef,
59
36
  suppliedPhoneNumberVerified: state.caseDetails.suppliedPhoneNumberVerified,
60
37
  isCaseOwnerUpdating: state.isCaseOwnerUpdating,
61
38
  hasLoggedInUserConfirmedPhoneNumber: state.hasLoggedInUserConfirmedPhoneNumber,
@@ -203,17 +180,29 @@ export function CaseContactPhoneNumber() {
203
180
  if (contactSSOName === loggedInUser.data.ssoUsername) {
204
181
  try {
205
182
  setIsFetchingSSO(true);
206
- const loggedInUserContact = yield fetchContactBySSO(apolloClient, accountNumberRef, contactSSOName);
183
+ const loggedInUserContact = yield (contacts === null || contacts === void 0 ? void 0 : contacts.getSFDCContactBySso(contactSSOName));
207
184
  setIsFetchingSSO(false);
208
- const phoneLine = getPhoneObj(loggedInUserContact.phone).phoneLine || '';
209
- const countryCode = getPhoneObj(loggedInUserContact.phone).countryCode;
210
- _phoneAreaCodePrefixLineNumber = phoneLine;
211
- _phoneCountryCode = countryCode;
212
- _suppliedPhoneNumberVerified =
213
- isEqual(hasLoggedInUserConfirmedPhoneNumber, 'True') ||
214
- isEqual(hasLoggedInUserConfirmedPhoneNumber, 'Deferred')
215
- ? hasLoggedInUserConfirmedPhoneNumber
216
- : 'False';
185
+ if (loggedInUserContact.supportPhoneAreaCodePrefixLineNumber) {
186
+ // User has opened a case before and has phone and area code in her/his contact on SF
187
+ _phoneAreaCodePrefixLineNumber = loggedInUserContact.supportPhoneAreaCodePrefixLineNumber;
188
+ _phoneCountryCode = loggedInUserContact.supportPhoneCountryCode;
189
+ _suppliedPhoneNumberVerified =
190
+ isEqual(hasLoggedInUserConfirmedPhoneNumber, 'True') ||
191
+ isEqual(hasLoggedInUserConfirmedPhoneNumber, 'Deferred')
192
+ ? hasLoggedInUserConfirmedPhoneNumber
193
+ : 'False';
194
+ }
195
+ else {
196
+ const phoneLine = getPhoneObj(loggedInUserContact.phone).phoneLine || '';
197
+ const countryCode = getPhoneObj(loggedInUserContact.phone).countryCode;
198
+ _phoneAreaCodePrefixLineNumber = phoneLine;
199
+ _phoneCountryCode = countryCode;
200
+ _suppliedPhoneNumberVerified =
201
+ isEqual(hasLoggedInUserConfirmedPhoneNumber, 'True') ||
202
+ isEqual(hasLoggedInUserConfirmedPhoneNumber, 'Deferred')
203
+ ? hasLoggedInUserConfirmedPhoneNumber
204
+ : 'False';
205
+ }
217
206
  }
218
207
  catch (_a) {
219
208
  _phoneAreaCodePrefixLineNumber = '';
@@ -227,11 +216,18 @@ export function CaseContactPhoneNumber() {
227
216
  // user is openning case for others (use is partner or red hatter)
228
217
  try {
229
218
  setIsFetchingSSO(true);
230
- const selectedContact = yield fetchContactBySSO(apolloClient, accountNumberRef, contactSSOName);
219
+ const selectedContact = yield contacts.getSFDCContactBySso(contactSSOName);
231
220
  setIsFetchingSSO(false);
232
- _phoneAreaCodePrefixLineNumber = getPhoneObj(selectedContact.phone).phoneLine || '';
233
- _phoneCountryCode = getPhoneObj(selectedContact.phone).countryCode || '';
234
- _suppliedPhoneNumberVerified = 'Deferred';
221
+ if (selectedContact.supportPhoneAreaCodePrefixLineNumber) {
222
+ _phoneAreaCodePrefixLineNumber = selectedContact.supportPhoneAreaCodePrefixLineNumber;
223
+ _phoneCountryCode = selectedContact.supportPhoneCountryCode;
224
+ _suppliedPhoneNumberVerified = 'Deferred';
225
+ }
226
+ else {
227
+ _phoneAreaCodePrefixLineNumber = getPhoneObj(selectedContact.phone).phoneLine || '';
228
+ _phoneCountryCode = getPhoneObj(selectedContact.phone).countryCode || '';
229
+ _suppliedPhoneNumberVerified = 'Deferred';
230
+ }
235
231
  }
236
232
  catch (e) {
237
233
  _phoneAreaCodePrefixLineNumber = '';
@@ -1 +1 @@
1
- {"version":3,"file":"CaseDetailsManagement.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAkBvD,UAAU,MAAO,SAAQ,gBAAgB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;CAClD;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBAoE1D"}
1
+ {"version":3,"file":"CaseDetailsManagement.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAkBvD,UAAU,MAAO,SAAQ,gBAAgB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;CAClD;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBAgE1D"}
@@ -4,9 +4,9 @@ import isEqual from 'lodash/isEqual';
4
4
  import React, { useContext, useState } from 'react';
5
5
  import { useCaseSelector } from '../../../../context/CaseContext';
6
6
  import { OwnerSelector } from '../../../AccountInfo/OwnerSelector';
7
- // import CaseGroup from '../../../CaseInformation/CaseGroup';
7
+ import CaseGroup from '../../../CaseInformation/CaseGroup';
8
8
  import Fts from '../../../CaseInformation/Fts';
9
- // import { Cep } from '../../../CaseManagement/Cep';
9
+ import { Cep } from '../../../CaseManagement/Cep';
10
10
  import { RHAssociatesSelector } from '../../../CaseManagement/RHAssociatesSelector';
11
11
  import CaseContactSelector from '../../../CaseManagement/SendNotifications/CaseContactSelector';
12
12
  import { PartnerCaseHelper } from '../../ShareCase/PartnerCaseHelper';
@@ -41,10 +41,12 @@ export default function CaseDetailsManagement(props) {
41
41
  React.createElement(CaseContactPhoneNumberAlert, { isConfirm: true }),
42
42
  canSeeInternalStatus && React.createElement(CaseInternalStatus, null),
43
43
  canSeeSBRGroups && React.createElement(CaseSbrGroups, null),
44
+ React.createElement(CaseGroup, null),
44
45
  React.createElement(CaseReferenceNumber, null),
45
46
  canSeeEmailNotifications && React.createElement(CaseContactSelector, null),
46
47
  React.createElement(RHAssociatesSelector, null),
47
48
  React.createElement(Fts, { inlineEditable: true }),
49
+ React.createElement(Cep, null),
48
50
  React.createElement(SFDCUrl, null),
49
51
  React.createElement(ShareWithPartner, { routeProps: props.routeProps, isUpdatingPartner: isUpdatingPartner, accountNumber: accountNumber })))));
50
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProductVersion.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/ProductVersion.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAkD,MAAM,OAAO,CAAC;AASvE,UAAU,MAAM;IACZ,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,qBAgUrC;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ProductVersion.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/ProductVersion.tsx"],"names":[],"mappings":"AAyCA,OAAO,KAAkD,MAAM,OAAO,CAAC;AASvE,UAAU,MAAM;IACZ,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,qBA4WrC;AAED,eAAe,eAAe,CAAC"}
@@ -7,12 +7,12 @@ 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 { useApolloClient } from '@apollo/client/react';
11
10
  import { Alert, AlertVariant, Button, MenuToggle, Select, SelectList, SelectOption, Spinner, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, } from '@patternfly/react-core';
12
11
  import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
13
12
  import { AlertMessage, AlertType, SingleSelectDropdown, ToastNotification, useSelectKeyboardNavigator, } from '@rh-support/components';
14
13
  import { fetchProducts, GlobalMetadataDispatchContext, GlobalMetadataStateContext, useCanEditCase, } from '@rh-support/react-context';
15
- import { haventLoadedMetadata, toOption } from '@rh-support/utils';
14
+ import { getUniqueSortedVersions, haventLoadedMetadata, toOption, } from '@rh-support/utils';
15
+ import filter from 'lodash/filter';
16
16
  import isEmpty from 'lodash/isEmpty';
17
17
  import isEqual from 'lodash/isEqual';
18
18
  import isUndefined from 'lodash/isUndefined';
@@ -21,7 +21,7 @@ import React, { useContext, useEffect, useRef, useState } from 'react';
21
21
  import { Trans, useTranslation } from 'react-i18next';
22
22
  import { useCaseDispatch, useCaseSelector } from '../../../../context/CaseContext';
23
23
  import { useCaseUpdateErrorMessage } from '../../../../hooks/useCaseUpdateErrorMessage';
24
- import { getVersionsDetails, updateCaseDetails } from '../../../../reducers/CaseReducer';
24
+ import { fetchCaseEntitlements, getVersionsDetails, updateCaseDetails } from '../../../../reducers/CaseReducer';
25
25
  import { getProductObj } from '../../../shared/utils';
26
26
  import { PDFContext } from '../../PDFContainer';
27
27
  function ProductNVersion(props) {
@@ -32,21 +32,22 @@ function ProductNVersion(props) {
32
32
  const [isVersionUpdating, setIsVersionUpdating] = useState(false);
33
33
  const [isOpen, setIsOpen] = useState(false);
34
34
  const textInputRef = useRef();
35
- const { product, version, caseNumber, versionsDetails, isCaseUpdating } = useCaseSelector((state) => ({
35
+ const { product, version, caseNumber, contactSSOName, versionsDetails, isCaseUpdating } = useCaseSelector((state) => ({
36
36
  product: state.caseDetails.product,
37
37
  version: state.caseDetails.version,
38
+ contactSSOName: state.caseDetails.contactSSOName,
38
39
  caseNumber: state.caseDetails.caseNumber,
39
40
  versionsDetails: state.versionsDetails,
40
41
  isCaseUpdating: state.isCaseUpdating,
41
42
  }), isEqual);
42
43
  const caseDispatch = useCaseDispatch();
43
44
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
44
- const apolloClient = useApolloClient();
45
45
  const { globalMetadataState: { allProducts }, } = useContext(GlobalMetadataStateContext);
46
46
  const [isProductInvalid, setIsProductInvalid] = useState(false);
47
47
  const [isVersionInvalid, setIsVersionInvalid] = useState(false);
48
48
  const [selectedProductLocal, setSelectedProductLocal] = useState(product);
49
49
  const [selectedVersionLocal, setSelectedVersionLocal] = useState(version);
50
+ const [isSEProductApiIsDown, setIsSEProductApiIsDown] = useState(false);
50
51
  const [inputValue, setInputValue] = useState(product);
51
52
  const [shouldFilter, setShouldFilter] = useState(false);
52
53
  const onToggleClick = () => {
@@ -111,11 +112,19 @@ function ProductNVersion(props) {
111
112
  }
112
113
  setIsProductUpdating(true);
113
114
  setIsVersionUpdating(true);
114
- // TODO: migrate to GraphQL - entitlements now resolved from SFDCProductJSON__c via productServiceLevel
115
- yield updateCaseDetails(caseDispatch, caseNumber, {
116
- product: selectedProduct,
117
- version: selectedVersion,
118
- });
115
+ if (!onlyVersionChanged && contactSSOName && caseNumber) {
116
+ yield updateCaseDetails(caseDispatch, caseNumber, {
117
+ product: selectedProduct,
118
+ version: selectedVersion,
119
+ });
120
+ yield fetchCaseEntitlements(caseDispatch, contactSSOName, selectedProduct, undefined, true, caseNumber);
121
+ }
122
+ else {
123
+ yield updateCaseDetails(caseDispatch, caseNumber, {
124
+ product: selectedProduct,
125
+ version: selectedVersion,
126
+ });
127
+ }
119
128
  setIsProductUpdating(false);
120
129
  setIsVersionUpdating(false);
121
130
  if (onlyVersionChanged) {
@@ -141,29 +150,60 @@ function ProductNVersion(props) {
141
150
  });
142
151
  // To check if version in invalid
143
152
  const checkIfVersionIsInvalid = isVersionInvalid && isEmpty(selectedVersionLocal);
153
+ // when user changes selected product, we need to get the versions
144
154
  useEffect(() => {
145
155
  if (!selectedProductLocal)
146
156
  return;
157
+ const getVersions = () => __awaiter(this, void 0, void 0, function* () {
158
+ try {
159
+ yield getVersionsDetails(caseDispatch, selectedProductLocal);
160
+ }
161
+ catch (e) {
162
+ console.log(e);
163
+ }
164
+ });
165
+ // call sfdc version api to get version flags that we only get from sfdc api
166
+ // flags are used in severity components
167
+ getVersions();
168
+ // populate versions with SE product api versions
147
169
  const productObj = getProductObj(allProducts.data.productsResult, selectedProductLocal);
148
- if (productObj.productId) {
149
- getVersionsDetails(caseDispatch, apolloClient, productObj.productId, productObj.name || selectedProductLocal);
170
+ if (productObj.versions) {
171
+ const productVersions = productObj.hasComponentsInsteadOfVersions
172
+ ? productObj.versions.sort()
173
+ : productObj.versions;
174
+ setVersions(productVersions);
175
+ if (productVersions.length === 1 && !selectedVersionLocal) {
176
+ setSelectedVersionLocal(productVersions[0]);
177
+ updateProductVerstion(selectedProductLocal, productVersions[0]);
178
+ }
179
+ }
180
+ else {
181
+ setIsSEProductApiIsDown(true);
150
182
  }
151
183
  // eslint-disable-next-line react-hooks/exhaustive-deps
152
184
  }, [selectedProductLocal, caseDispatch, allProducts.data]);
185
+ // observe when fetched versions are available
153
186
  useEffect(() => {
154
- var _a;
155
- if (versionsDetails.isFetching || !((_a = versionsDetails.data) === null || _a === void 0 ? void 0 : _a.length))
187
+ if (!isSEProductApiIsDown)
156
188
  return;
157
189
  const fetchedVersions = versionsDetails.data.map(({ name }) => name);
158
- setVersions(fetchedVersions);
159
190
  if (fetchedVersions.length === 1 && !selectedVersionLocal) {
191
+ setVersions(fetchedVersions);
160
192
  setSelectedVersionLocal(fetchedVersions[0]);
161
193
  updateProductVerstion(selectedProductLocal, fetchedVersions[0]);
194
+ return;
162
195
  }
196
+ const productObj = getProductObj(allProducts.data.productsResult, selectedProductLocal);
197
+ const sfdcVersions = getUniqueSortedVersions(fetchedVersions);
198
+ const versionsForSelectedProduct = productObj.versions ? productObj.versions : sfdcVersions;
199
+ const productVersions = (productObj === null || productObj === void 0 ? void 0 : productObj.hasComponentsInsteadOfVersions)
200
+ ? versionsForSelectedProduct.sort()
201
+ : versionsForSelectedProduct;
202
+ setVersions(productVersions);
163
203
  // eslint-disable-next-line react-hooks/exhaustive-deps
164
204
  }, [versionsDetails.data]);
165
205
  const computeDropdownList = () => {
166
- const list = allProducts.data.productsResult;
206
+ const list = filter(allProducts.data.productsResult, (p) => p.isEntitledProduct);
167
207
  if (!list)
168
208
  return [];
169
209
  const options = shouldFilter && !isUndefined(inputValue) && !isEmpty(inputValue === null || inputValue === void 0 ? void 0 : inputValue.trim())
@@ -193,10 +233,10 @@ function ProductNVersion(props) {
193
233
  };
194
234
  useEffect(() => {
195
235
  if (haventLoadedMetadata(allProducts, (data) => isEmpty(data.productsResult))) {
196
- fetchProducts(dispatchToGlobalMetadataReducer, apolloClient);
236
+ fetchProducts(dispatchToGlobalMetadataReducer, contactSSOName);
197
237
  }
198
238
  // eslint-disable-next-line react-hooks/exhaustive-deps
199
- }, [allProducts, dispatchToGlobalMetadataReducer, apolloClient]);
239
+ }, [allProducts, dispatchToGlobalMetadataReducer, contactSSOName]);
200
240
  return (React.createElement(React.Fragment, null,
201
241
  React.createElement(AlertMessage, { show: !allProducts.isFetching && allProducts.isError, title: t('There was an error loading products.'), variant: AlertType.DANGER }),
202
242
  isEmpty(selectedVersionLocal) && (selectedVersionLocal === null || selectedVersionLocal === void 0 ? void 0 : selectedVersionLocal.length) < 2 && (React.createElement(Alert, { isInline: true, className: "pf-v6-u-mb-md", variant: AlertVariant.danger, title: React.createElement(Trans, null, "Please clear the errors to change the product on your case") })),
@@ -213,6 +253,6 @@ function ProductNVersion(props) {
213
253
  React.createElement(SingleSelectDropdown, { className: "open-case-version", id: "version-dropdown", placeholder: t(`Select a version`), selected: getVersionSelectedDropdownOption, options: getVersionDropdownOptions, isInvalid: checkIfVersionIsInvalid, isDisabled: isVersionUpdating ||
214
254
  (allProducts.isFetching && !allProducts.isError) ||
215
255
  isEmpty(selectedProductLocal) ||
216
- isCaseUpdating, onSelect: onVersionChange, isLoading: isVersionUpdating || versionsDetails.isFetching, dataTrackingId: "case-details-version-selector", isScrollable: true }))))));
256
+ isCaseUpdating, onSelect: onVersionChange, isLoading: isVersionUpdating || (isSEProductApiIsDown && versionsDetails.isFetching), dataTrackingId: "case-details-version-selector", isScrollable: true }))))));
217
257
  }
218
258
  export default ProductNVersion;
@@ -1 +1 @@
1
- {"version":3,"file":"VerifyCaseStatusModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAa3E,UAAU,MAAM;IACZ,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBA8IlD"}
1
+ {"version":3,"file":"VerifyCaseStatusModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAsD,MAAM,OAAO,CAAC;AAa3E,UAAU,MAAM;IACZ,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBA6IlD"}
@@ -7,7 +7,6 @@ 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 { useApolloClient } from '@apollo/client/react';
11
10
  import { Button, ButtonVariant, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, } from '@patternfly/react-core';
12
11
  import { SingleSelectDropdown, ToastNotification } from '@rh-support/components';
13
12
  import { GlobalMetadataStateContext, useCanEditCase } from '@rh-support/react-context';
@@ -44,12 +43,11 @@ export function VerifyCaseStatusModal(props) {
44
43
  selectedAccountDetails: state.selectedAccountDetails,
45
44
  }), isEqual);
46
45
  const { status } = caseState.caseDetails;
47
- const { globalMetadataState: { loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
48
- const apolloClient = useApolloClient();
46
+ const { globalMetadataState: { loggedInUsersAccount, loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
49
47
  const canManageCase = loggedInUserRights.data.canManageCases();
50
48
  useEffect(() => {
51
- fetchAllStatuses(caseOverviewDispatch, apolloClient);
52
- }, [caseOverviewDispatch, apolloClient]);
49
+ fetchAllStatuses(caseOverviewDispatch, loggedInUsersAccount.data.secureSupport);
50
+ }, [caseOverviewDispatch, loggedInUsersAccount.data.secureSupport]);
53
51
  const { isCaseUpdating } = caseState;
54
52
  const canEditCase = useCanEditCase();
55
53
  const caseDispatch = useCaseDispatch();
@@ -1 +1 @@
1
- {"version":3,"file":"CaseInformation.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseInformation.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBAoHpD"}
1
+ {"version":3,"file":"CaseInformation.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseInformation.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAQvD,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,KAAK,EAAE,MAAM,qBAkHpD"}