@rh-support/troubleshoot 2.6.271 → 2.6.273
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/components/AccountInfo/AccountSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/AccountSelector.js +28 -40
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +3 -1
- package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Case.js +3 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.js +6 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.js +38 -34
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseDetailsManagement.js +2 -4
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/ProductVersion.js +19 -59
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.js +5 -3
- package/lib/esm/components/CaseInformation/CaseInformation.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseInformation.js +7 -5
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.js +37 -24
- package/lib/esm/components/CaseInformation/SupportLevel.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/SupportLevel.js +32 -55
- package/lib/esm/components/CaseManagement/CaseLanguageSelector.js +2 -2
- package/lib/esm/components/CaseManagement/CaseManagement.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/CaseManagement.js +4 -7
- package/lib/esm/components/IdeaInformation/IdeaInformation.d.ts.map +1 -1
- package/lib/esm/components/IdeaInformation/IdeaInformation.js +10 -10
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.d.ts.map +1 -1
- package/lib/esm/components/OpenCase/SupportTypeSelectorPage.js +4 -2
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts +0 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/AllProductsSelector.js +3 -15
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductDropdownSelector.js +13 -37
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/NewProductVersionSelector.js +19 -53
- package/lib/esm/components/ProductSelector/ProductSelector.d.ts.map +1 -1
- package/lib/esm/components/ProductSelector/ProductSelector.js +1 -3
- package/lib/esm/components/Review/Review.d.ts.map +1 -1
- package/lib/esm/components/Review/Review.js +6 -10
- package/lib/esm/components/SessionRestore/SessionRestore.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/SessionRestore.js +3 -1
- package/lib/esm/components/shared/useIsSectionValid.d.ts.map +1 -1
- package/lib/esm/components/shared/useIsSectionValid.js +50 -64
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +34 -9
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +6 -7
- package/lib/esm/components/wizardLayout/WizardNavigation.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardNavigation.js +10 -9
- package/lib/esm/hooks/useResetCaseCreate.d.ts.map +1 -1
- package/lib/esm/hooks/useResetCaseCreate.js +13 -11
- package/lib/esm/reducers/CaseConstNTypes.d.ts +23 -0
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +5 -0
- package/lib/esm/reducers/CaseHelpers.d.ts +2 -1
- package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
- package/lib/esm/reducers/CaseHelpers.js +39 -2
- package/lib/esm/reducers/CaseOverviewReducer.d.ts +3 -1
- package/lib/esm/reducers/CaseOverviewReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseOverviewReducer.js +7 -5
- package/lib/esm/reducers/CaseReducer.d.ts +15 -5
- package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseReducer.js +60 -23
- 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,
|
|
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"}
|
|
@@ -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 {
|
|
11
|
+
import { useApolloClient } from '@apollo/client/react';
|
|
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,12 +30,14 @@ export const defaultProps = {
|
|
|
30
30
|
function AccountSelector(props) {
|
|
31
31
|
var _a;
|
|
32
32
|
const [showNotEntitledMessage, setShowNotEntitledMessage] = useState(false);
|
|
33
|
-
const { accountNumber, selectedAccountDetails } = useCaseSelector((state) => ({
|
|
33
|
+
const { accountNumber, selectedAccountDetails, hasInvalidEntitlements } = useCaseSelector((state) => ({
|
|
34
34
|
accountNumber: state.caseDetails.accountNumberRef,
|
|
35
35
|
selectedAccountDetails: state.selectedAccountDetails,
|
|
36
|
+
hasInvalidEntitlements: state.hasInvalidEntitlements,
|
|
36
37
|
}), isEqual);
|
|
37
38
|
const isSelectedAccountSubscriptionAbused = ((_a = selectedAccountDetails === null || selectedAccountDetails === void 0 ? void 0 : selectedAccountDetails.data) === null || _a === void 0 ? void 0 : _a.subscriptionAbuse) || false;
|
|
38
39
|
const caseDispatch = useCaseDispatch();
|
|
40
|
+
const apolloClient = useApolloClient();
|
|
39
41
|
const routeDispatch = useRouteDispatchContext();
|
|
40
42
|
const { globalMetadataState: { bookmarkedGroupAccounts, loggedInUserRights, managedAccounts, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
|
|
41
43
|
const { t } = useTranslation();
|
|
@@ -43,7 +45,7 @@ function AccountSelector(props) {
|
|
|
43
45
|
const ability = useContext(AbilityContext);
|
|
44
46
|
const canAccessManagedAccounts = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.MANAGED_ACCOUNTS);
|
|
45
47
|
const canBookmarkAccounts = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.BOOKMARK_ACCOUNTS);
|
|
46
|
-
const canUseFindMyAccount = loggedInUserRights.data.isAccountDifferentFromLoggedInAccount(accountNumber);
|
|
48
|
+
// const canUseFindMyAccount = loggedInUserRights.data.isAccountDifferentFromLoggedInAccount(accountNumber!);
|
|
47
49
|
// Account Change Handler
|
|
48
50
|
const onAccountChange = (account) => __awaiter(this, void 0, void 0, function* () {
|
|
49
51
|
if (selectedAccountDetails.data.accountNumber === account.accountNumber)
|
|
@@ -52,7 +54,7 @@ function AccountSelector(props) {
|
|
|
52
54
|
clearSelectedAccount(caseDispatch);
|
|
53
55
|
return;
|
|
54
56
|
}
|
|
55
|
-
setCaseAccountNumber(caseDispatch, account.accountNumber, loggedInUserRights.data.isAccountSameAsLoggedInAccount(account.accountNumber), loggedInUsersAccount.data);
|
|
57
|
+
setCaseAccountNumber(caseDispatch, account.accountNumber, loggedInUserRights.data.isAccountSameAsLoggedInAccount(account.accountNumber), loggedInUsersAccount.data, apolloClient);
|
|
56
58
|
});
|
|
57
59
|
const onInternalAccountSelect = (accounts) => {
|
|
58
60
|
if (!isArray(accounts))
|
|
@@ -64,48 +66,36 @@ function AccountSelector(props) {
|
|
|
64
66
|
selection.accountNum &&
|
|
65
67
|
onAccountChange({ accountNumber: selection.accountNum, name: selection.name });
|
|
66
68
|
};
|
|
67
|
-
const onFindMyAccountClick = (event) => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
};
|
|
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
|
+
// };
|
|
74
76
|
const selectedAccount = {
|
|
75
77
|
name: selectedAccountDetails.data.name,
|
|
76
78
|
accountNumber: selectedAccountDetails.data.accountNumber,
|
|
77
79
|
subscriptionAbuse: selectedAccountDetails.data.subscriptionAbuse,
|
|
78
80
|
};
|
|
79
|
-
// When internal user wants to open a case for a customer but customer account doesn't have entitlement, we show an error
|
|
80
81
|
useEffect(() => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
82
|
+
if (!loggedInUserRights.data.isInternal() || !selectedAccountDetails.data.accountNumber) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (selectedAccountDetails.data.accountNumber === loggedInUsersAccount.data.accountNumber) {
|
|
86
|
+
setNoValidEntitlement(routeDispatch, false);
|
|
88
87
|
setShowNotEntitledMessage(false);
|
|
89
|
-
|
|
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();
|
|
88
|
+
return;
|
|
106
89
|
}
|
|
90
|
+
setShowNotEntitledMessage(hasInvalidEntitlements);
|
|
91
|
+
setNoValidEntitlement(routeDispatch, hasInvalidEntitlements);
|
|
107
92
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
108
|
-
}, [
|
|
93
|
+
}, [
|
|
94
|
+
selectedAccountDetails.data.accountNumber,
|
|
95
|
+
loggedInUserRights.data,
|
|
96
|
+
loggedInUsersAccount.data,
|
|
97
|
+
hasInvalidEntitlements,
|
|
98
|
+
]);
|
|
109
99
|
if (isEmpty(loggedInUserRights.data))
|
|
110
100
|
return React.createElement(React.Fragment, null);
|
|
111
101
|
return (React.createElement("div", { id: props.id, className: `form-group ${props.className}` },
|
|
@@ -114,9 +104,7 @@ function AccountSelector(props) {
|
|
|
114
104
|
React.createElement("label", { htmlFor: "account-selector" },
|
|
115
105
|
React.createElement(Trans, null, "Account"),
|
|
116
106
|
' ',
|
|
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")))),
|
|
107
|
+
React.createElement("span", { className: "form-required", "aria-hidden": true }, "*"))),
|
|
120
108
|
React.createElement("div", { className: "account-selector-wrapper" },
|
|
121
109
|
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 })),
|
|
122
110
|
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 })),
|
package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestEscalationModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.tsx"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -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 { useApolloClient } from '@apollo/client/react';
|
|
10
11
|
import { escalations, publicApi } from '@cee-eng/hydrajs';
|
|
11
12
|
import { Button, Form, FormGroup, FormHelperText, Grid, GridItem, HelperText, HelperTextItem, Modal, ModalBody, ModalFooter, ModalHeader, Popover, TextArea, TextInput, Title, ValidatedOptions, } from '@patternfly/react-core';
|
|
12
13
|
import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
|
|
@@ -27,6 +28,7 @@ const customerGEOKeys = Object.keys(CustomerGEOs);
|
|
|
27
28
|
export function RequestEscalationModal(props) {
|
|
28
29
|
const { globalMetadataState: { loggedInUser, loggedInUserRights }, } = useGlobalStateContext();
|
|
29
30
|
const { t } = useTranslation();
|
|
31
|
+
const apolloClient = useApolloClient();
|
|
30
32
|
const [categories, setCategories] = useState([]);
|
|
31
33
|
const initialState = {
|
|
32
34
|
subject: '',
|
|
@@ -68,7 +70,7 @@ export function RequestEscalationModal(props) {
|
|
|
68
70
|
updateDiscussionStateComments(dispatchDiscussion, caseDispatch, props.caseNumber, allDiscussions, sort, caseFeedbacksHydra.data, discussionFiltersListState);
|
|
69
71
|
yield updateCaseRequest(props.caseNumber, { customerEscalation: true });
|
|
70
72
|
checkForCaseStatusToggleOnAttachOrComment(caseDispatch, loggedInUserRights.data.isInternal(), props.caseStatus);
|
|
71
|
-
yield fetchCaseDetails(caseDispatch, props.caseNumber, loggedInUserRights.data, loggedInUser.data);
|
|
73
|
+
yield fetchCaseDetails(caseDispatch, props.caseNumber, loggedInUserRights.data, loggedInUser.data, apolloClient);
|
|
72
74
|
escalationNum &&
|
|
73
75
|
ToastNotification.addSuccessMessage(t('Your escalation request has been successfully submitted.'));
|
|
74
76
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Case.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseEditView/Case.tsx"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -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 { useApolloClient } from '@apollo/client/react';
|
|
10
11
|
import { CoverSpinner, ErrorBoundary, OverviewContentLoader, ToastNotification, useDocumentTitle, usePrevious, } from '@rh-support/components';
|
|
11
12
|
import { GlobalMetadataStateContext, HostnameAwarenessModal } from '@rh-support/react-context';
|
|
12
13
|
import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
@@ -30,6 +31,7 @@ import { PDFContext } from './PDFContainer';
|
|
|
30
31
|
export default function Case(props) {
|
|
31
32
|
const { globalMetadataState: { loggedInUserRights, loggedInUsersAccount, loggedInUser }, } = useContext(GlobalMetadataStateContext);
|
|
32
33
|
const caseDetailsPageDispatch = useCaseDetailsPageDispatchContext();
|
|
34
|
+
const apolloClient = useApolloClient();
|
|
33
35
|
const { t } = useTranslation();
|
|
34
36
|
// The `path` lets us build <Route> paths that are
|
|
35
37
|
// relative to the parent route, while the `url` lets
|
|
@@ -107,7 +109,7 @@ export default function Case(props) {
|
|
|
107
109
|
caseDispatch(action);
|
|
108
110
|
}
|
|
109
111
|
};
|
|
110
|
-
yield fetchCaseDetails(safeDispatch, targetCaseNumber, loggedInUserRights.data, loggedInUser.data);
|
|
112
|
+
yield fetchCaseDetails(safeDispatch, targetCaseNumber, loggedInUserRights.data, loggedInUser.data, apolloClient);
|
|
111
113
|
if (currentCaseRef.current !== targetCaseNumber)
|
|
112
114
|
return;
|
|
113
115
|
if (canSeeRMEs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/CaseEditView/CaseOverview/index.tsx"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -7,11 +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';
|
|
10
11
|
import { Alert, AlertVariant, Button, ButtonVariant, ExpandableSection, Label, ModalVariant, } from '@patternfly/react-core';
|
|
11
12
|
import ExternalLinkAltIcon from '@patternfly/react-icons/dist/js/icons/external-link-alt-icon';
|
|
12
13
|
import LockIcon from '@patternfly/react-icons/dist/js/icons/lock-icon';
|
|
13
14
|
import { ToastNotification, useConfirmation } from '@rh-support/components';
|
|
14
|
-
import { CloseCaseModal,
|
|
15
|
+
import { CloseCaseModal, fetchCaseSeveritiesHydra, fetchCaseTypesHydra, GlobalMetadataDispatchContext, GlobalMetadataStateContext, useCanEditCase, } from '@rh-support/react-context';
|
|
15
16
|
import { AbilityContext, CaseDetailsFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
16
17
|
import { dtmTrackEventCaseStepEncountered, haventLoadedMetadata, isOpenShiftOnlineProduct, PreviousCaseTypes, toNewCaseTypeMapper, toNewCaseTypeSwitcher, } from '@rh-support/utils';
|
|
17
18
|
import isEqual from 'lodash/isEqual';
|
|
@@ -74,6 +75,7 @@ export default function CaseOverview(props) {
|
|
|
74
75
|
const canEditCase = useCanEditCase();
|
|
75
76
|
const caseDispatch = useCaseDispatch();
|
|
76
77
|
const globalMetadataDispatchContext = useContext(GlobalMetadataDispatchContext);
|
|
78
|
+
const apolloClient = useApolloClient();
|
|
77
79
|
const { globalMetadataState: { allCaseTypes, allCaseSeverities, viewAsCustomer, loggedInUsersAccount, loggedInUserRights, }, } = useContext(GlobalMetadataStateContext);
|
|
78
80
|
const canManageCase = loggedInUserRights.data.canManageCases();
|
|
79
81
|
const switchedCaseType = toNewCaseTypeSwitcher(caseType);
|
|
@@ -89,13 +91,13 @@ export default function CaseOverview(props) {
|
|
|
89
91
|
}
|
|
90
92
|
}
|
|
91
93
|
if (haventLoadedMetadata(allCaseSeverities)) {
|
|
92
|
-
|
|
94
|
+
fetchCaseSeveritiesHydra(globalMetadataDispatchContext, loggedInUsersAccount.data.secureSupport);
|
|
93
95
|
}
|
|
94
96
|
if (haventLoadedMetadata(allCaseTypes)) {
|
|
95
|
-
|
|
97
|
+
fetchCaseTypesHydra(globalMetadataDispatchContext, loggedInUsersAccount.data.secureSupport);
|
|
96
98
|
}
|
|
97
99
|
if (haventLoadedMetadata(caseOverviewState.allCaseStatuses)) {
|
|
98
|
-
fetchAllStatuses(caseOverviewDispatch,
|
|
100
|
+
fetchAllStatuses(caseOverviewDispatch, apolloClient);
|
|
99
101
|
}
|
|
100
102
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
101
103
|
}, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseContactPhoneNumber.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/CaseContactPhoneNumber.tsx"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -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 { useApolloClient } from '@apollo/client/react';
|
|
10
11
|
import { contacts } from '@cee-eng/hydrajs';
|
|
11
12
|
import { InputGroupText, ValidatedOptions } from '@patternfly/react-core';
|
|
12
13
|
import CheckIcon from '@patternfly/react-icons/dist/js/icons/check-icon';
|
|
@@ -14,6 +15,7 @@ import PencilAltIcon from '@patternfly/react-icons/dist/js/icons/pencil-alt-icon
|
|
|
14
15
|
import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
|
|
15
16
|
import { getPhoneObj, PhoneInput, ToastNotification } from '@rh-support/components';
|
|
16
17
|
import { GlobalMetadataStateContext, useCanEditCase } from '@rh-support/react-context';
|
|
18
|
+
import { GET_ACCOUNT_CONTACTS } from '@rh-support/utils';
|
|
17
19
|
import isEmpty from 'lodash/isEmpty';
|
|
18
20
|
import isEqual from 'lodash/isEqual';
|
|
19
21
|
import React, { useContext, useEffect, useState } from 'react';
|
|
@@ -26,13 +28,34 @@ import { setCaseState, updateCaseDetails } from '../../../../reducers/CaseReduce
|
|
|
26
28
|
import { ContactPhoneNumberPopOver } from '../../../CaseInformation/ContactPhoneNumberPopOver';
|
|
27
29
|
import { removeAllChars, trimAndReplacePlus } from '../../../shared/utils';
|
|
28
30
|
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
|
+
}
|
|
29
50
|
export function CaseContactPhoneNumber() {
|
|
30
51
|
var _a;
|
|
31
|
-
const
|
|
52
|
+
const apolloClient = useApolloClient();
|
|
53
|
+
const { phoneCountryCode = '', phoneAreaCodePrefixLineNumber = '', caseNumber, contactSSOName, accountNumberRef, suppliedPhoneNumberVerified, isCaseOwnerUpdating, hasLoggedInUserConfirmedPhoneNumber, isCasePhoneUpdating, } = useCaseSelector((state) => ({
|
|
32
54
|
phoneCountryCode: state.caseDetails.phoneCountryCode || '',
|
|
33
55
|
phoneAreaCodePrefixLineNumber: state.caseDetails.phoneAreaCodePrefixLineNumber || '',
|
|
34
56
|
caseNumber: state.caseDetails.caseNumber,
|
|
35
57
|
contactSSOName: state.caseDetails.contactSSOName,
|
|
58
|
+
accountNumberRef: state.caseDetails.accountNumberRef,
|
|
36
59
|
suppliedPhoneNumberVerified: state.caseDetails.suppliedPhoneNumberVerified,
|
|
37
60
|
isCaseOwnerUpdating: state.isCaseOwnerUpdating,
|
|
38
61
|
hasLoggedInUserConfirmedPhoneNumber: state.hasLoggedInUserConfirmedPhoneNumber,
|
|
@@ -180,29 +203,17 @@ export function CaseContactPhoneNumber() {
|
|
|
180
203
|
if (contactSSOName === loggedInUser.data.ssoUsername) {
|
|
181
204
|
try {
|
|
182
205
|
setIsFetchingSSO(true);
|
|
183
|
-
const loggedInUserContact = yield (
|
|
206
|
+
const loggedInUserContact = yield fetchContactBySSO(apolloClient, accountNumberRef, contactSSOName);
|
|
184
207
|
setIsFetchingSSO(false);
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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
|
-
}
|
|
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';
|
|
206
217
|
}
|
|
207
218
|
catch (_a) {
|
|
208
219
|
_phoneAreaCodePrefixLineNumber = '';
|
|
@@ -216,18 +227,11 @@ export function CaseContactPhoneNumber() {
|
|
|
216
227
|
// user is openning case for others (use is partner or red hatter)
|
|
217
228
|
try {
|
|
218
229
|
setIsFetchingSSO(true);
|
|
219
|
-
const selectedContact = yield
|
|
230
|
+
const selectedContact = yield fetchContactBySSO(apolloClient, accountNumberRef, contactSSOName);
|
|
220
231
|
setIsFetchingSSO(false);
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
_suppliedPhoneNumberVerified = 'Deferred';
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
_phoneAreaCodePrefixLineNumber = getPhoneObj(selectedContact.phone).phoneLine || '';
|
|
228
|
-
_phoneCountryCode = getPhoneObj(selectedContact.phone).countryCode || '';
|
|
229
|
-
_suppliedPhoneNumberVerified = 'Deferred';
|
|
230
|
-
}
|
|
232
|
+
_phoneAreaCodePrefixLineNumber = getPhoneObj(selectedContact.phone).phoneLine || '';
|
|
233
|
+
_phoneCountryCode = getPhoneObj(selectedContact.phone).countryCode || '';
|
|
234
|
+
_suppliedPhoneNumberVerified = 'Deferred';
|
|
231
235
|
}
|
|
232
236
|
catch (e) {
|
|
233
237
|
_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,
|
|
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"}
|
|
@@ -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,12 +41,10 @@ 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),
|
|
45
44
|
React.createElement(CaseReferenceNumber, null),
|
|
46
45
|
canSeeEmailNotifications && React.createElement(CaseContactSelector, null),
|
|
47
46
|
React.createElement(RHAssociatesSelector, null),
|
|
48
47
|
React.createElement(Fts, { inlineEditable: true }),
|
|
49
|
-
React.createElement(Cep, null),
|
|
50
48
|
React.createElement(SFDCUrl, null),
|
|
51
49
|
React.createElement(ShareWithPartner, { routeProps: props.routeProps, isUpdatingPartner: isUpdatingPartner, accountNumber: accountNumber })))));
|
|
52
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductVersion.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/ProductVersion.tsx"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -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';
|
|
10
11
|
import { Alert, AlertVariant, Button, MenuToggle, Select, SelectList, SelectOption, Spinner, TextInputGroup, TextInputGroupMain, TextInputGroupUtilities, } from '@patternfly/react-core';
|
|
11
12
|
import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
|
|
12
13
|
import { AlertMessage, AlertType, SingleSelectDropdown, ToastNotification, useSelectKeyboardNavigator, } from '@rh-support/components';
|
|
13
14
|
import { fetchProducts, GlobalMetadataDispatchContext, GlobalMetadataStateContext, useCanEditCase, } from '@rh-support/react-context';
|
|
14
|
-
import {
|
|
15
|
-
import filter from 'lodash/filter';
|
|
15
|
+
import { haventLoadedMetadata, toOption } from '@rh-support/utils';
|
|
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 {
|
|
24
|
+
import { getVersionsDetails, updateCaseDetails } from '../../../../reducers/CaseReducer';
|
|
25
25
|
import { getProductObj } from '../../../shared/utils';
|
|
26
26
|
import { PDFContext } from '../../PDFContainer';
|
|
27
27
|
function ProductNVersion(props) {
|
|
@@ -32,22 +32,21 @@ 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,
|
|
35
|
+
const { product, version, caseNumber, versionsDetails, isCaseUpdating } = useCaseSelector((state) => ({
|
|
36
36
|
product: state.caseDetails.product,
|
|
37
37
|
version: state.caseDetails.version,
|
|
38
|
-
contactSSOName: state.caseDetails.contactSSOName,
|
|
39
38
|
caseNumber: state.caseDetails.caseNumber,
|
|
40
39
|
versionsDetails: state.versionsDetails,
|
|
41
40
|
isCaseUpdating: state.isCaseUpdating,
|
|
42
41
|
}), isEqual);
|
|
43
42
|
const caseDispatch = useCaseDispatch();
|
|
44
43
|
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);
|
|
51
50
|
const [inputValue, setInputValue] = useState(product);
|
|
52
51
|
const [shouldFilter, setShouldFilter] = useState(false);
|
|
53
52
|
const onToggleClick = () => {
|
|
@@ -112,19 +111,11 @@ function ProductNVersion(props) {
|
|
|
112
111
|
}
|
|
113
112
|
setIsProductUpdating(true);
|
|
114
113
|
setIsVersionUpdating(true);
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
-
}
|
|
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
|
+
});
|
|
128
119
|
setIsProductUpdating(false);
|
|
129
120
|
setIsVersionUpdating(false);
|
|
130
121
|
if (onlyVersionChanged) {
|
|
@@ -150,60 +141,29 @@ function ProductNVersion(props) {
|
|
|
150
141
|
});
|
|
151
142
|
// To check if version in invalid
|
|
152
143
|
const checkIfVersionIsInvalid = isVersionInvalid && isEmpty(selectedVersionLocal);
|
|
153
|
-
// when user changes selected product, we need to get the versions
|
|
154
144
|
useEffect(() => {
|
|
155
145
|
if (!selectedProductLocal)
|
|
156
146
|
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
|
|
169
147
|
const productObj = getProductObj(allProducts.data.productsResult, selectedProductLocal);
|
|
170
|
-
if (productObj.
|
|
171
|
-
|
|
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);
|
|
148
|
+
if (productObj.productId) {
|
|
149
|
+
getVersionsDetails(caseDispatch, apolloClient, productObj.productId, productObj.name || selectedProductLocal);
|
|
182
150
|
}
|
|
183
151
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
184
152
|
}, [selectedProductLocal, caseDispatch, allProducts.data]);
|
|
185
|
-
// observe when fetched versions are available
|
|
186
153
|
useEffect(() => {
|
|
187
|
-
|
|
154
|
+
var _a;
|
|
155
|
+
if (versionsDetails.isFetching || !((_a = versionsDetails.data) === null || _a === void 0 ? void 0 : _a.length))
|
|
188
156
|
return;
|
|
189
157
|
const fetchedVersions = versionsDetails.data.map(({ name }) => name);
|
|
158
|
+
setVersions(fetchedVersions);
|
|
190
159
|
if (fetchedVersions.length === 1 && !selectedVersionLocal) {
|
|
191
|
-
setVersions(fetchedVersions);
|
|
192
160
|
setSelectedVersionLocal(fetchedVersions[0]);
|
|
193
161
|
updateProductVerstion(selectedProductLocal, fetchedVersions[0]);
|
|
194
|
-
return;
|
|
195
162
|
}
|
|
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);
|
|
203
163
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
204
164
|
}, [versionsDetails.data]);
|
|
205
165
|
const computeDropdownList = () => {
|
|
206
|
-
const list =
|
|
166
|
+
const list = allProducts.data.productsResult;
|
|
207
167
|
if (!list)
|
|
208
168
|
return [];
|
|
209
169
|
const options = shouldFilter && !isUndefined(inputValue) && !isEmpty(inputValue === null || inputValue === void 0 ? void 0 : inputValue.trim())
|
|
@@ -233,10 +193,10 @@ function ProductNVersion(props) {
|
|
|
233
193
|
};
|
|
234
194
|
useEffect(() => {
|
|
235
195
|
if (haventLoadedMetadata(allProducts, (data) => isEmpty(data.productsResult))) {
|
|
236
|
-
fetchProducts(dispatchToGlobalMetadataReducer,
|
|
196
|
+
fetchProducts(dispatchToGlobalMetadataReducer, apolloClient);
|
|
237
197
|
}
|
|
238
198
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
239
|
-
}, [allProducts, dispatchToGlobalMetadataReducer,
|
|
199
|
+
}, [allProducts, dispatchToGlobalMetadataReducer, apolloClient]);
|
|
240
200
|
return (React.createElement(React.Fragment, null,
|
|
241
201
|
React.createElement(AlertMessage, { show: !allProducts.isFetching && allProducts.isError, title: t('There was an error loading products.'), variant: AlertType.DANGER }),
|
|
242
202
|
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") })),
|
|
@@ -253,6 +213,6 @@ function ProductNVersion(props) {
|
|
|
253
213
|
React.createElement(SingleSelectDropdown, { className: "open-case-version", id: "version-dropdown", placeholder: t(`Select a version`), selected: getVersionSelectedDropdownOption, options: getVersionDropdownOptions, isInvalid: checkIfVersionIsInvalid, isDisabled: isVersionUpdating ||
|
|
254
214
|
(allProducts.isFetching && !allProducts.isError) ||
|
|
255
215
|
isEmpty(selectedProductLocal) ||
|
|
256
|
-
isCaseUpdating, onSelect: onVersionChange, isLoading: isVersionUpdating ||
|
|
216
|
+
isCaseUpdating, onSelect: onVersionChange, isLoading: isVersionUpdating || versionsDetails.isFetching, dataTrackingId: "case-details-version-selector", isScrollable: true }))))));
|
|
257
217
|
}
|
|
258
218
|
export default ProductNVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerifyCaseStatusModal.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/CaseEditView/Tabs/CaseDiscussion/VerifyCaseStatusModal/VerifyCaseStatusModal.tsx"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -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 { useApolloClient } from '@apollo/client/react';
|
|
10
11
|
import { Button, ButtonVariant, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, } from '@patternfly/react-core';
|
|
11
12
|
import { SingleSelectDropdown, ToastNotification } from '@rh-support/components';
|
|
12
13
|
import { GlobalMetadataStateContext, useCanEditCase } from '@rh-support/react-context';
|
|
@@ -43,11 +44,12 @@ export function VerifyCaseStatusModal(props) {
|
|
|
43
44
|
selectedAccountDetails: state.selectedAccountDetails,
|
|
44
45
|
}), isEqual);
|
|
45
46
|
const { status } = caseState.caseDetails;
|
|
46
|
-
const { globalMetadataState: {
|
|
47
|
+
const { globalMetadataState: { loggedInUserRights }, } = useContext(GlobalMetadataStateContext);
|
|
48
|
+
const apolloClient = useApolloClient();
|
|
47
49
|
const canManageCase = loggedInUserRights.data.canManageCases();
|
|
48
50
|
useEffect(() => {
|
|
49
|
-
fetchAllStatuses(caseOverviewDispatch,
|
|
50
|
-
}, [caseOverviewDispatch,
|
|
51
|
+
fetchAllStatuses(caseOverviewDispatch, apolloClient);
|
|
52
|
+
}, [caseOverviewDispatch, apolloClient]);
|
|
51
53
|
const { isCaseUpdating } = caseState;
|
|
52
54
|
const canEditCase = useCanEditCase();
|
|
53
55
|
const caseDispatch = useCaseDispatch();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseInformation.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/CaseInformation.tsx"],"names":[],"mappings":"
|
|
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"}
|