@rh-support/troubleshoot 2.6.283 → 2.6.292
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/AccountInfo/OwnerSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/OwnerSelector.js +2 -2
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/ActiveCustomerEscalation/RequestEscalationModal.js +43 -12
- package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Case.js +7 -5
- package/lib/esm/components/CaseEditView/CaseDetailsAside.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsAside.js +28 -30
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseDetailsTabs.js +14 -10
- package/lib/esm/components/CaseEditView/CaseOverview/index.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/CaseOverview/index.js +24 -18
- 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 +9 -9
- 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/CaseDetails/Summary.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/Summary.js +16 -9
- 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/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.js +3 -2
- package/lib/esm/components/CaseInformation/CaseGroup.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/CaseGroup.js +8 -5
- 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 +16 -18
- package/lib/esm/components/SessionRestore/SessionRestore.d.ts.map +1 -1
- package/lib/esm/components/SessionRestore/SessionRestore.js +4 -2
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.d.ts.map +1 -1
- package/lib/esm/components/TroubleshootSection/TroubleshootSection.js +1 -0
- package/lib/esm/components/UpdateSeverityModal/UpdateSeverityModal.js +1 -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 +39 -10
- 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/css/app.css +2 -2
- package/lib/esm/graphql/index.d.ts +4 -0
- package/lib/esm/graphql/index.d.ts.map +1 -0
- package/lib/esm/graphql/index.js +3 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.d.ts +2 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.d.ts.map +1 -0
- package/lib/esm/graphql/mutations/createRMECaseEscalation.js +24 -0
- package/lib/esm/graphql/mutations/index.d.ts +2 -0
- package/lib/esm/graphql/mutations/index.d.ts.map +1 -0
- package/lib/esm/graphql/mutations/index.js +1 -0
- package/lib/esm/graphql/queries/getEscalationDetails.d.ts +2 -0
- package/lib/esm/graphql/queries/getEscalationDetails.d.ts.map +1 -0
- package/lib/esm/graphql/queries/getEscalationDetails.js +24 -0
- package/lib/esm/graphql/queries/getParentId.d.ts +2 -0
- package/lib/esm/graphql/queries/getParentId.d.ts.map +1 -0
- package/lib/esm/graphql/queries/getParentId.js +16 -0
- package/lib/esm/graphql/queries/index.d.ts +3 -0
- package/lib/esm/graphql/queries/index.d.ts.map +1 -0
- package/lib/esm/graphql/queries/index.js +2 -0
- package/lib/esm/graphql/schemas/escalation.d.ts +85 -0
- package/lib/esm/graphql/schemas/escalation.d.ts.map +1 -0
- package/lib/esm/graphql/schemas/escalation.js +1 -0
- package/lib/esm/graphql/schemas/index.d.ts +2 -0
- package/lib/esm/graphql/schemas/index.d.ts.map +1 -0
- package/lib/esm/graphql/schemas/index.js +1 -0
- package/lib/esm/hooks/useResetCaseCreate.d.ts.map +1 -1
- package/lib/esm/hooks/useResetCaseCreate.js +18 -11
- package/lib/esm/reducers/CaseConstNTypes.d.ts +86 -2
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +5 -0
- package/lib/esm/reducers/CaseDetailsPageReducer.d.ts +3 -1
- package/lib/esm/reducers/CaseDetailsPageReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseDetailsPageReducer.js +22 -5
- 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 +28 -9
- package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseReducer.js +105 -31
- package/package.json +5 -5
|
@@ -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, fetchCaseSeverities, fetchCaseTypes, GlobalMetadataDispatchContext, GlobalMetadataStateContext, useCanEditCase, } from '@rh-support/react-context';
|
|
15
|
+
import { CloseCaseModal, fetchAllStatuses, fetchCaseSeverities, fetchCaseTypes, 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';
|
|
@@ -22,8 +23,8 @@ import { useCaseDispatch, useCaseSelector } from '../../../context/CaseContext';
|
|
|
22
23
|
import { CaseOverviewDispatchContext, CaseOverviewStateContext } from '../../../context/CaseOverviewContext';
|
|
23
24
|
import { useCaseUpdateErrorMessage } from '../../../hooks/useCaseUpdateErrorMessage';
|
|
24
25
|
import { SupportLevelDisplay } from '../../../reducers/CaseConstNTypes';
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
26
|
+
import { fetchCaseHydra, setSeverityUpdating, setStatusUpdating, setTypeUpdating, } from '../../../reducers/CaseOverviewReducer';
|
|
27
|
+
import { updateCaseDetailsGraphQL } from '../../../reducers/CaseReducer';
|
|
27
28
|
import Severity from '../../CaseInformation/Severity';
|
|
28
29
|
import { usePostComment } from '../../shared/usePostComment';
|
|
29
30
|
import { ReopenCaseModal } from '../ConfirmationModals/ReopenCaseModal';
|
|
@@ -49,14 +50,14 @@ export default function CaseOverview(props) {
|
|
|
49
50
|
const { isExportingPDF, exportPDFButton } = useContext(PDFContext);
|
|
50
51
|
const reopenStatusRef = useRef(null);
|
|
51
52
|
const { postComment, isPostingComment } = usePostComment({ caseNumber: props.caseNumber });
|
|
52
|
-
const { product, version, status, caseType, createdDate,
|
|
53
|
+
const { product, version, status, caseType, createdDate, createdByName, ownerId, caseNumber, entitlementSla, cep, accountNumber, isPrivate, isCaseUpdating, contactIsPartner, hotfixRequested, hotfixDelivered, selectedAccountDetails, firstCaseInactivityWarningSentAt, secondCaseInactivityWarningSentAt, } = useCaseSelector((state) => ({
|
|
53
54
|
product: state.caseDetails.product,
|
|
54
55
|
version: state.caseDetails.version,
|
|
55
56
|
status: state.caseDetails.status,
|
|
56
57
|
caseType: state.caseDetails.caseType,
|
|
57
58
|
caseSeverity: state.caseDetails.severity,
|
|
58
59
|
createdDate: state.caseDetails.createdDate,
|
|
59
|
-
|
|
60
|
+
createdByName: state.caseDetails.createdByName,
|
|
60
61
|
ownerId: state.caseDetails.ownerId,
|
|
61
62
|
caseNumber: state.caseDetails.caseNumber,
|
|
62
63
|
entitlementSla: state.caseDetails.entitlementSla,
|
|
@@ -74,7 +75,12 @@ export default function CaseOverview(props) {
|
|
|
74
75
|
const canEditCase = useCanEditCase();
|
|
75
76
|
const caseDispatch = useCaseDispatch();
|
|
76
77
|
const globalMetadataDispatchContext = useContext(GlobalMetadataDispatchContext);
|
|
77
|
-
const
|
|
78
|
+
const apolloClient = useApolloClient();
|
|
79
|
+
const existingCaseDetails = useCaseSelector((state) => state.caseDetails, isEqual);
|
|
80
|
+
const updateOverviewCaseDetails = (payload) => updateCaseDetailsGraphQL(caseDispatch, apolloClient, props.caseNumber, payload, false, {
|
|
81
|
+
existingCaseDetails,
|
|
82
|
+
});
|
|
83
|
+
const { globalMetadataState: { allCaseTypes, allCaseSeverities, allCaseStatuses, viewAsCustomer, loggedInUsersAccount, loggedInUserRights, }, } = useContext(GlobalMetadataStateContext);
|
|
78
84
|
const canManageCase = loggedInUserRights.data.canManageCases();
|
|
79
85
|
const switchedCaseType = toNewCaseTypeSwitcher(caseType);
|
|
80
86
|
const updatingUser = loggedInUsersAccount.data.name;
|
|
@@ -89,24 +95,24 @@ export default function CaseOverview(props) {
|
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
97
|
if (haventLoadedMetadata(allCaseSeverities)) {
|
|
92
|
-
fetchCaseSeverities(globalMetadataDispatchContext,
|
|
98
|
+
fetchCaseSeverities(globalMetadataDispatchContext, apolloClient);
|
|
93
99
|
}
|
|
94
100
|
if (haventLoadedMetadata(allCaseTypes)) {
|
|
95
|
-
fetchCaseTypes(globalMetadataDispatchContext,
|
|
101
|
+
fetchCaseTypes(globalMetadataDispatchContext, apolloClient);
|
|
96
102
|
}
|
|
97
|
-
if (haventLoadedMetadata(
|
|
98
|
-
fetchAllStatuses(
|
|
103
|
+
if (haventLoadedMetadata(allCaseStatuses)) {
|
|
104
|
+
fetchAllStatuses(globalMetadataDispatchContext, apolloClient);
|
|
99
105
|
}
|
|
100
106
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
101
107
|
}, [
|
|
102
108
|
globalMetadataDispatchContext,
|
|
109
|
+
apolloClient,
|
|
103
110
|
allCaseSeverities,
|
|
104
111
|
allCaseTypes,
|
|
105
|
-
|
|
112
|
+
allCaseStatuses,
|
|
106
113
|
caseOverviewState.caseDetailsHydra,
|
|
107
114
|
canSeeCaseOwnerInfo,
|
|
108
115
|
caseNumber,
|
|
109
|
-
loggedInUsersAccount.data.secureSupport,
|
|
110
116
|
]);
|
|
111
117
|
const onTypeChange = (type) => __awaiter(this, void 0, void 0, function* () {
|
|
112
118
|
if (canEditCase.alert())
|
|
@@ -117,7 +123,7 @@ export default function CaseOverview(props) {
|
|
|
117
123
|
if (type === PreviousCaseTypes.FEATURE_ENHANCEMENT) {
|
|
118
124
|
newCaseDetails = Object.assign(Object.assign({}, newCaseDetails), { fts: false });
|
|
119
125
|
}
|
|
120
|
-
yield
|
|
126
|
+
yield updateOverviewCaseDetails(newCaseDetails);
|
|
121
127
|
setTypeUpdating(caseOverviewDispatch, false);
|
|
122
128
|
ToastNotification.addSuccessMessage(t('Support type has been successfully updated'));
|
|
123
129
|
}
|
|
@@ -138,7 +144,7 @@ export default function CaseOverview(props) {
|
|
|
138
144
|
});
|
|
139
145
|
setSeverityUpdating(caseOverviewDispatch, true);
|
|
140
146
|
try {
|
|
141
|
-
yield
|
|
147
|
+
yield updateOverviewCaseDetails(payLoad);
|
|
142
148
|
setSeverityUpdating(caseOverviewDispatch, false);
|
|
143
149
|
ToastNotification.addSuccessMessage(t('Severity has been successfully updated'));
|
|
144
150
|
}
|
|
@@ -157,7 +163,7 @@ export default function CaseOverview(props) {
|
|
|
157
163
|
reopenedReasonOther: reopenedReasonOther,
|
|
158
164
|
};
|
|
159
165
|
try {
|
|
160
|
-
yield
|
|
166
|
+
yield updateOverviewCaseDetails(updateStatusObj);
|
|
161
167
|
setStatusUpdating(caseOverviewDispatch, false);
|
|
162
168
|
onStatusUpdate && (yield onStatusUpdate());
|
|
163
169
|
ToastNotification.addSuccessMessage(t('Status has been successfully updated'));
|
|
@@ -289,13 +295,13 @@ export default function CaseOverview(props) {
|
|
|
289
295
|
React.createElement("div", { className: "created-by" },
|
|
290
296
|
React.createElement("h3", { className: "subheading subheading-sm" },
|
|
291
297
|
React.createElement(Trans, null, "Created by")),
|
|
292
|
-
React.createElement("div", null,
|
|
298
|
+
React.createElement("div", null, createdByName),
|
|
293
299
|
React.createElement("div", null, createdDate ? React.createElement(DateTime, { dateTimeString: createdDate }) : null)),
|
|
294
300
|
canSeeCaseOwnerInfo && (React.createElement(CaseOwnerInfo, { owner: ownerId, caseDetailsHydra: caseOverviewState.caseDetailsHydra }))),
|
|
295
301
|
React.createElement("div", { className: "case-overview-secondary card card-md card-light push-bottom" },
|
|
296
302
|
React.createElement("div", { className: "pf-v6-l-grid pf-m-gutter pf-m-all-4-col-on-lg" },
|
|
297
303
|
React.createElement("div", { className: "form-wrapper" },
|
|
298
|
-
React.createElement(CaseStatus, { selectedStatus: status, onStatusChange: onStatusChange, isDisabled: !canManageCase ||
|
|
304
|
+
React.createElement(CaseStatus, { selectedStatus: status, onStatusChange: onStatusChange, isDisabled: !canManageCase || allCaseStatuses.isFetching, allStatuses: allCaseStatuses.data, isFetching: caseOverviewState.caseStatusUpdating && isCaseUpdating, hasError: allCaseStatuses.isError })),
|
|
299
305
|
React.createElement("div", { className: "form-wrapper" },
|
|
300
306
|
React.createElement(CaseType, { selectedType: switchedCaseType, onTypeChange: onTypeChange, isDisabled: !canManageCase || allCaseTypes.isFetching || isCaseUpdating, allTypes: newCaseTypesArray, isFetching: caseOverviewState.caseTypeUpdating && isCaseUpdating, hasError: allCaseTypes.isError })),
|
|
301
307
|
React.createElement("div", { className: "form-wrapper" },
|
|
@@ -318,5 +324,5 @@ export default function CaseOverview(props) {
|
|
|
318
324
|
setShowReopenCaseModal(false);
|
|
319
325
|
}), onClose: () => {
|
|
320
326
|
setShowReopenCaseModal(false);
|
|
321
|
-
}, caseNumber: caseNumber, reopenStatus: reopenStatusRef.current, allStatuses:
|
|
327
|
+
}, caseNumber: caseNumber, reopenStatus: reopenStatusRef.current, allStatuses: allCaseStatuses.data, isUpdating: (caseOverviewState.caseStatusUpdating && isCaseUpdating) || isPostingComment, whoIsUpdating: updatingUser }))));
|
|
322
328
|
}
|
|
@@ -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,qBAqE1D"}
|
|
@@ -4,11 +4,11 @@ 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';
|
|
10
|
-
import { RHAssociatesSelector } from '../../../CaseManagement/RHAssociatesSelector';
|
|
11
|
-
import CaseContactSelector from '../../../CaseManagement/SendNotifications/CaseContactSelector';
|
|
9
|
+
// import { Cep } from '../../../CaseManagement/Cep';
|
|
10
|
+
// import { RHAssociatesSelector } from '../../../CaseManagement/RHAssociatesSelector';
|
|
11
|
+
// import CaseContactSelector from '../../../CaseManagement/SendNotifications/CaseContactSelector';
|
|
12
12
|
import { PartnerCaseHelper } from '../../ShareCase/PartnerCaseHelper';
|
|
13
13
|
import { ShareWithPartner } from '../../ShareCase/PartnerShare';
|
|
14
14
|
import { CaseContactPhoneNumber } from './CaseContactPhoneNumber';
|
|
@@ -26,7 +26,11 @@ export default function CaseDetailsManagement(props) {
|
|
|
26
26
|
}), isEqual);
|
|
27
27
|
const accountNumber = caseState.caseDetails.accountNumber;
|
|
28
28
|
const ability = useContext(AbilityContext);
|
|
29
|
-
const canSeeEmailNotifications = ability.can(
|
|
29
|
+
// const canSeeEmailNotifications = ability.can(
|
|
30
|
+
// resourceActions.PATCH,
|
|
31
|
+
// resources.CASE_DETAILS,
|
|
32
|
+
// CaseDetailsFields.CASE_DETAILS_SEND_NOTIFICATIONS
|
|
33
|
+
// );
|
|
30
34
|
const canSeeInternalStatus = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_INTERNAL_STATUS);
|
|
31
35
|
const canSeeSBRGroups = ability.can(resourceActions.PATCH, resources.CASE_DETAILS, CaseDetailsFields.CASE_DETAILS_SBR_GROUP);
|
|
32
36
|
return (React.createElement(React.Fragment, null,
|
|
@@ -41,12 +45,8 @@ export default function CaseDetailsManagement(props) {
|
|
|
41
45
|
React.createElement(CaseContactPhoneNumberAlert, { isConfirm: true }),
|
|
42
46
|
canSeeInternalStatus && React.createElement(CaseInternalStatus, null),
|
|
43
47
|
canSeeSBRGroups && React.createElement(CaseSbrGroups, null),
|
|
44
|
-
React.createElement(CaseGroup, null),
|
|
45
48
|
React.createElement(CaseReferenceNumber, null),
|
|
46
|
-
canSeeEmailNotifications && React.createElement(CaseContactSelector, null),
|
|
47
|
-
React.createElement(RHAssociatesSelector, null),
|
|
48
49
|
React.createElement(Fts, { inlineEditable: true }),
|
|
49
|
-
React.createElement(Cep, null),
|
|
50
50
|
React.createElement(SFDCUrl, null),
|
|
51
51
|
React.createElement(ShareWithPartner, { routeProps: props.routeProps, isUpdatingPartner: isUpdatingPartner, accountNumber: accountNumber })))));
|
|
52
52
|
}
|
|
@@ -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,qBAuUrC;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, updateCaseDetailsGraphQL } from '../../../../reducers/CaseReducer';
|
|
25
25
|
import { getProductObj } from '../../../shared/utils';
|
|
26
26
|
import { PDFContext } from '../../PDFContainer';
|
|
27
27
|
function ProductNVersion(props) {
|
|
@@ -32,22 +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,
|
|
35
|
+
const { product, version, caseNumber, existingCaseDetails, 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,
|
|
39
|
+
existingCaseDetails: state.caseDetails,
|
|
40
40
|
versionsDetails: state.versionsDetails,
|
|
41
41
|
isCaseUpdating: state.isCaseUpdating,
|
|
42
42
|
}), isEqual);
|
|
43
43
|
const caseDispatch = useCaseDispatch();
|
|
44
44
|
const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
|
|
45
|
+
const apolloClient = useApolloClient();
|
|
45
46
|
const { globalMetadataState: { allProducts }, } = useContext(GlobalMetadataStateContext);
|
|
46
47
|
const [isProductInvalid, setIsProductInvalid] = useState(false);
|
|
47
48
|
const [isVersionInvalid, setIsVersionInvalid] = useState(false);
|
|
48
49
|
const [selectedProductLocal, setSelectedProductLocal] = useState(product);
|
|
49
50
|
const [selectedVersionLocal, setSelectedVersionLocal] = useState(version);
|
|
50
|
-
const [isSEProductApiIsDown, setIsSEProductApiIsDown] = useState(false);
|
|
51
51
|
const [inputValue, setInputValue] = useState(product);
|
|
52
52
|
const [shouldFilter, setShouldFilter] = useState(false);
|
|
53
53
|
const onToggleClick = () => {
|
|
@@ -112,19 +112,10 @@ function ProductNVersion(props) {
|
|
|
112
112
|
}
|
|
113
113
|
setIsProductUpdating(true);
|
|
114
114
|
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
|
-
}
|
|
115
|
+
yield updateCaseDetailsGraphQL(caseDispatch, apolloClient, caseNumber, {
|
|
116
|
+
product: selectedProduct,
|
|
117
|
+
version: selectedVersion,
|
|
118
|
+
}, false, { existingCaseDetails });
|
|
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":"Summary.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/Summary.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Summary.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/CaseDetails/Summary.tsx"],"names":[],"mappings":"AASA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAS/D,UAAU,MAAM;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAQD,iBAAS,OAAO,CAAC,KAAK,EAAE,MAAM,qBAiM7B;kBAjMQ,OAAO;;;AAoMhB,eAAe,OAAO,CAAC"}
|
|
@@ -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 { InputGroupText, Spinner, TextInput, ValidatedOptions } from '@patternfly/react-core';
|
|
11
12
|
import CheckIcon from '@patternfly/react-icons/dist/js/icons/check-icon';
|
|
12
13
|
import TimesIcon from '@patternfly/react-icons/dist/js/icons/times-icon';
|
|
@@ -19,7 +20,7 @@ import { Trans, useTranslation } from 'react-i18next';
|
|
|
19
20
|
import { useCaseDispatch, useCaseSelector } from '../../../../context/CaseContext';
|
|
20
21
|
import { useCaseUpdateErrorMessage } from '../../../../hooks/useCaseUpdateErrorMessage';
|
|
21
22
|
import { SUMMARY_LENGTH_LIMIT } from '../../../../reducers/CaseConstNTypes';
|
|
22
|
-
import { setCaseDetails,
|
|
23
|
+
import { setCaseDetails, updateCaseDetailsGraphQL } from '../../../../reducers/CaseReducer';
|
|
23
24
|
import { PDFContext } from '../../PDFContainer';
|
|
24
25
|
const defaultProps = {
|
|
25
26
|
inlineEditable: true,
|
|
@@ -29,11 +30,13 @@ const defaultProps = {
|
|
|
29
30
|
function Summary(props) {
|
|
30
31
|
const { t } = useTranslation();
|
|
31
32
|
const caseUpdateError = useCaseUpdateErrorMessage();
|
|
32
|
-
const { summary, caseNumber } = useCaseSelector((state) => ({
|
|
33
|
+
const { summary, caseNumber, existingCaseDetails } = useCaseSelector((state) => ({
|
|
33
34
|
summary: state.caseDetails.summary,
|
|
34
35
|
caseNumber: state.caseDetails.caseNumber,
|
|
36
|
+
existingCaseDetails: state.caseDetails,
|
|
35
37
|
}), isEqual);
|
|
36
38
|
const caseDispatch = useCaseDispatch();
|
|
39
|
+
const apolloClient = useApolloClient();
|
|
37
40
|
const { isExportingPDF } = useContext(PDFContext);
|
|
38
41
|
const [summaryState, setSummaryState] = useState(summary);
|
|
39
42
|
const [isSummaryUpdating, setIsSummaryUpdating] = useState(false);
|
|
@@ -41,9 +44,11 @@ function Summary(props) {
|
|
|
41
44
|
// value changed logic to show a none local severity change
|
|
42
45
|
const [localSummaryChange, setLocalSummaryChange] = useState(false);
|
|
43
46
|
// To keep track of Cancel button state to close InlineEdit input mode
|
|
44
|
-
const [
|
|
47
|
+
const [cancelToggleKey, setCancelToggleKey] = useState(0);
|
|
45
48
|
// To keep track of Save button state to close InlineEdit input mode
|
|
46
|
-
const [
|
|
49
|
+
const [saveToggleKey, setSaveToggleKey] = useState(0);
|
|
50
|
+
const closeInlineEdit = () => setSaveToggleKey((key) => key + 1);
|
|
51
|
+
const cancelInlineEdit = () => setCancelToggleKey((key) => key + 1);
|
|
47
52
|
const afterLocalChange = () => setLocalSummaryChange(false);
|
|
48
53
|
const getSummaryChangedTT = () => React.createElement(Trans, null, "Summary has been updated");
|
|
49
54
|
// Function to handle when summary changes
|
|
@@ -55,7 +60,9 @@ function Summary(props) {
|
|
|
55
60
|
const onSummaryUpdate = (caseDetails) => __awaiter(this, void 0, void 0, function* () {
|
|
56
61
|
setIsSummaryUpdating(true);
|
|
57
62
|
try {
|
|
58
|
-
yield
|
|
63
|
+
yield updateCaseDetailsGraphQL(caseDispatch, apolloClient, caseNumber, caseDetails, false, {
|
|
64
|
+
existingCaseDetails,
|
|
65
|
+
});
|
|
59
66
|
setIsSummaryUpdating(false);
|
|
60
67
|
ToastNotification.addSuccessMessage(t(`Title has been successfully updated`));
|
|
61
68
|
}
|
|
@@ -81,11 +88,11 @@ function Summary(props) {
|
|
|
81
88
|
setCaseDetails(caseDispatch, caseDetails);
|
|
82
89
|
}
|
|
83
90
|
setLocalSummaryChange(true);
|
|
84
|
-
|
|
91
|
+
closeInlineEdit();
|
|
85
92
|
});
|
|
86
93
|
const onCancel = () => {
|
|
87
94
|
setSummaryState(summary);
|
|
88
|
-
|
|
95
|
+
cancelInlineEdit();
|
|
89
96
|
};
|
|
90
97
|
useEffect(() => {
|
|
91
98
|
setSummaryState(summary);
|
|
@@ -119,14 +126,14 @@ function Summary(props) {
|
|
|
119
126
|
setCaseDetails(caseDispatch, caseDetails);
|
|
120
127
|
}
|
|
121
128
|
setLocalSummaryChange(true);
|
|
122
|
-
|
|
129
|
+
closeInlineEdit();
|
|
123
130
|
}
|
|
124
131
|
});
|
|
125
132
|
return (React.createElement(React.Fragment, null,
|
|
126
133
|
React.createElement(NewInlineEdit, { labelProps: { htmlFor: 'case-details-summary' }, labelContent: React.createElement(React.Fragment, null,
|
|
127
134
|
React.createElement(Trans, null, "Title"),
|
|
128
135
|
React.createElement(ValueChangedIcon, { afterLocalChange: afterLocalChange, isLocalChange: localSummaryChange, value: summary, getTooltipContent: getSummaryChangedTT }),
|
|
129
|
-
React.createElement("span", { className: "form-required", "aria-hidden": true }, "*")), allowInlineEdit: props.inlineEditable, content: summary ? summary : t('No summary to display.'), saveDisabled: saveDisabled, hideLabel: props.hideLabel, hideSaveCancel: props.hideSaveCancel, charCount: (summaryState === null || summaryState === void 0 ? void 0 : summaryState.length) || 0, charTotal: SUMMARY_LENGTH_LIMIT, cancelToggleState:
|
|
136
|
+
React.createElement("span", { className: "form-required", "aria-hidden": true }, "*")), allowInlineEdit: props.inlineEditable, content: summary ? summary : t('No summary to display.'), saveDisabled: saveDisabled, hideLabel: props.hideLabel, hideSaveCancel: props.hideSaveCancel, charCount: (summaryState === null || summaryState === void 0 ? void 0 : summaryState.length) || 0, charTotal: SUMMARY_LENGTH_LIMIT, cancelToggleState: cancelToggleKey % 2 === 1, saveToggleState: saveToggleKey % 2 === 1, isExportingPDF: isExportingPDF },
|
|
130
137
|
React.createElement("div", { className: "pf-v6-u-display-flex pf-v6-u-flex-direction-row pf-v6-u-align-items-center" },
|
|
131
138
|
React.createElement(TextInput, { type: "text", id: "case-details-summary", "aria-required": true, required: true, name: "case-details-summary", value: summaryState, onChange: (_event, value) => onSummaryChange(value), isDisabled: isSummaryUpdating, "data-tracking-id": "case-details-summary", onKeyDown: handleKeyDown, validated: (summaryState === null || summaryState === void 0 ? void 0 : summaryState.length) > SUMMARY_LENGTH_LIMIT || isSummaryEmpty
|
|
132
139
|
? ValidatedOptions.error
|
|
@@ -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":"RMEEscalationList.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RMEEscalationList.d.ts","sourceRoot":"","sources":["../../../../../../src/components/CaseEditView/Tabs/RMEEscalations/RMEEscalationList.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAqB,MAAM,2CAA2C,CAAC;AAe/F,OAAO,KAAsC,MAAM,OAAO,CAAC;AAiB3D,UAAU,MAAM;IACZ,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACtB;AAOD,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAK,EAAE,MAAM,qBA8MtD"}
|