@rh-support/troubleshoot 2.2.128 → 2.2.129-beta.0
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/OwnerSelector.d.ts.map +1 -1
- package/lib/esm/components/AccountInfo/OwnerSelector.js +1 -77
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumber.js +99 -34
- package/lib/esm/components/CaseInformation/ContactPhoneNumberAlert.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/ContactPhoneNumberAlert.js +12 -15
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +0 -20
- package/lib/esm/reducers/CaseReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseReducer.js +8 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OwnerSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/AccountInfo/OwnerSelector.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAkB/D,UAAU,MAAM;CAAG;AAEnB,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"OwnerSelector.d.ts","sourceRoot":"","sources":["../../../../src/components/AccountInfo/OwnerSelector.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAkB/D,UAAU,MAAM;CAAG;AAEnB,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,qBAsTnC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -28,14 +28,13 @@ import { getChangedValueTooltip } from '../shared/utils';
|
|
|
28
28
|
function OwnerSelector(props) {
|
|
29
29
|
const { t } = useTranslation();
|
|
30
30
|
const caseUpdateError = useCaseUpdateErrorMessage();
|
|
31
|
-
const { accountNumber, caseNumber, selectedNotificationContacts, selectedOwner, selectedCaseGroupUsers, isCaseOwnerUpdating,
|
|
31
|
+
const { accountNumber, caseNumber, selectedNotificationContacts, selectedOwner, selectedCaseGroupUsers, isCaseOwnerUpdating, hasLoggedInUserConfirmedPhoneNumber, } = useCaseSelector((state) => ({
|
|
32
32
|
accountNumber: state.caseDetails.accountNumberRef,
|
|
33
33
|
caseNumber: state.caseDetails.caseNumber,
|
|
34
34
|
selectedNotificationContacts: state.selectedNotificationContacts,
|
|
35
35
|
selectedOwner: state.selectedOwner,
|
|
36
36
|
selectedCaseGroupUsers: state.selectedCaseGroupUsers,
|
|
37
37
|
isCaseOwnerUpdating: state.isCaseOwnerUpdating,
|
|
38
|
-
caseDetailes: state.caseDetails,
|
|
39
38
|
hasLoggedInUserConfirmedPhoneNumber: state.hasLoggedInUserConfirmedPhoneNumber,
|
|
40
39
|
}), isEqual);
|
|
41
40
|
const { routeState: { isNextBtnClickedToShowValidationError }, } = useContext(RouteContext);
|
|
@@ -52,60 +51,6 @@ function OwnerSelector(props) {
|
|
|
52
51
|
!isEmpty(pvalue.ssoUsername) &&
|
|
53
52
|
value.ssoUsername !== pvalue.ssoUsername;
|
|
54
53
|
const canEditCase = useCanEditCase();
|
|
55
|
-
// set owner on creating a case
|
|
56
|
-
const setContactPhoneNumber = (sso) => __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
// logged in user and case owner are the same
|
|
58
|
-
if (sso === loggedInUser.data.ssoUsername) {
|
|
59
|
-
if (loggedInUser.data.supportPhoneAreaCodePrefixLineNumber) {
|
|
60
|
-
setCaseDetails(caseDispatch, {
|
|
61
|
-
phoneAreaCodePrefixLineNumber: loggedInUser.data.supportPhoneAreaCodePrefixLineNumber,
|
|
62
|
-
phoneCountryCode: loggedInUser.data.supportPhoneCountryCode,
|
|
63
|
-
suppliedPhoneNumberVerified: isEqual(hasLoggedInUserConfirmedPhoneNumber, 'True') || //hasLoggedInUserConfirmedPhoneNumber: global verification phone state for contactSSOName === loggedInUser.data.ssoUsername
|
|
64
|
-
isEqual(hasLoggedInUserConfirmedPhoneNumber, 'Deferred')
|
|
65
|
-
? hasLoggedInUserConfirmedPhoneNumber
|
|
66
|
-
: 'False',
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
const phoneLine = getPhoneObj(loggedInUser.data.phone).phoneLine || '';
|
|
71
|
-
const countryCode = getPhoneObj(loggedInUser.data.phone).countryCode;
|
|
72
|
-
setCaseDetails(caseDispatch, {
|
|
73
|
-
phoneAreaCodePrefixLineNumber: phoneLine,
|
|
74
|
-
phoneCountryCode: countryCode,
|
|
75
|
-
suppliedPhoneNumberVerified: isEqual(hasLoggedInUserConfirmedPhoneNumber, 'True') ||
|
|
76
|
-
isEqual(hasLoggedInUserConfirmedPhoneNumber, 'Deferred')
|
|
77
|
-
? hasLoggedInUserConfirmedPhoneNumber
|
|
78
|
-
: 'False',
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
try {
|
|
84
|
-
const selectedContact = yield contacts.getSFDCContactBySso(sso);
|
|
85
|
-
if (selectedContact.supportPhoneAreaCodePrefixLineNumber) {
|
|
86
|
-
setCaseDetails(caseDispatch, {
|
|
87
|
-
phoneAreaCodePrefixLineNumber: selectedContact.supportPhoneAreaCodePrefixLineNumber,
|
|
88
|
-
phoneCountryCode: selectedContact.supportPhoneCountryCode,
|
|
89
|
-
suppliedPhoneNumberVerified: 'Deferred',
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
setCaseDetails(caseDispatch, {
|
|
94
|
-
phoneAreaCodePrefixLineNumber: getPhoneObj(selectedContact.phone).phoneLine || '',
|
|
95
|
-
phoneCountryCode: getPhoneObj(selectedContact.phone).countryCode || '',
|
|
96
|
-
suppliedPhoneNumberVerified: 'Deferred',
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
catch (e) {
|
|
101
|
-
setCaseDetails(caseDispatch, {
|
|
102
|
-
phoneAreaCodePrefixLineNumber: '',
|
|
103
|
-
phoneCountryCode: '',
|
|
104
|
-
suppliedPhoneNumberVerified: 'False',
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
54
|
const updatePhone = (phoneSetting) => __awaiter(this, void 0, void 0, function* () {
|
|
110
55
|
yield updateCaseDetails(caseDispatch, caseNumber, phoneSetting);
|
|
111
56
|
setCaseDetails(caseDispatch, Object.assign({}, phoneSetting));
|
|
@@ -190,7 +135,6 @@ function OwnerSelector(props) {
|
|
|
190
135
|
setLocalOwnerChange(true);
|
|
191
136
|
!isEmpty(selectedContact) &&
|
|
192
137
|
setNotifiedUser(dispatch, filter(notificationContacts, (c) => c.ssoUsername !== selectedContact.ssoUsername));
|
|
193
|
-
setContactPhoneNumber(selectedContact.ssoUsername);
|
|
194
138
|
});
|
|
195
139
|
/** Reset owner when selected account number changes */
|
|
196
140
|
useEffect(() => {
|
|
@@ -286,26 +230,6 @@ function OwnerSelector(props) {
|
|
|
286
230
|
users.length > 0 && setUsersWithGroupAccess(sortHydraContacts(users));
|
|
287
231
|
}
|
|
288
232
|
}, [selectedCaseGroupUsers, caseNumber]);
|
|
289
|
-
// to populate the phone number with the logged in user data
|
|
290
|
-
useEffect(() => {
|
|
291
|
-
if (caseDetailes.contactSSOName === loggedInUser.data.ssoUsername) {
|
|
292
|
-
if (loggedInUser.data.supportPhoneAreaCodePrefixLineNumber) {
|
|
293
|
-
setCaseDetails(caseDispatch, {
|
|
294
|
-
phoneAreaCodePrefixLineNumber: loggedInUser.data.supportPhoneAreaCodePrefixLineNumber,
|
|
295
|
-
phoneCountryCode: loggedInUser.data.supportPhoneCountryCode,
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
const phoneLine = getPhoneObj(loggedInUser.data.phone).phoneLine || '';
|
|
300
|
-
const countryCode = getPhoneObj(loggedInUser.data.phone).countryCode;
|
|
301
|
-
setCaseDetails(caseDispatch, {
|
|
302
|
-
phoneAreaCodePrefixLineNumber: phoneLine,
|
|
303
|
-
phoneCountryCode: countryCode,
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
308
|
-
}, []);
|
|
309
233
|
const showUsersWithSelectedGroupAccess = caseNumber &&
|
|
310
234
|
(selectedCaseGroupUsers.isFetching ||
|
|
311
235
|
(!selectedCaseGroupUsers.isFetching && (selectedCaseGroupUsers.data || []).length > 0));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactPhoneNumber.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/ContactPhoneNumber.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAkB/D,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"ContactPhoneNumber.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/ContactPhoneNumber.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAkB/D,wBAAgB,kBAAkB,sBA2OjC"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { contacts } from '@cee-eng/hydrajs';
|
|
1
11
|
import { ValidatedOptions } from '@patternfly/react-core';
|
|
2
12
|
import { getPhoneObj, PhoneInput } from '@rh-support/components';
|
|
3
13
|
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
4
|
-
import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
5
14
|
import isEmpty from 'lodash/isEmpty';
|
|
6
15
|
import isEqual from 'lodash/isEqual';
|
|
7
16
|
import isUndefined from 'lodash/isUndefined';
|
|
@@ -17,23 +26,35 @@ import { trimAndReplacePlus } from '../shared/utils';
|
|
|
17
26
|
import { ContactPhoneNumberPopOver } from './ContactPhoneNumberPopOver';
|
|
18
27
|
import MandatoryPhonePopOver from './MandatoryPhonePopOver';
|
|
19
28
|
export function ContactPhoneNumber() {
|
|
20
|
-
const { suppliedPhoneNumberVerified, phoneCountryCode = '', phoneAreaCodePrefixLineNumber = '',
|
|
29
|
+
const { suppliedPhoneNumberVerified, phoneCountryCode = '', phoneAreaCodePrefixLineNumber = '', hasLoggedInUserConfirmedPhoneNumber, contactSSOName, } = useCaseSelector((state) => ({
|
|
21
30
|
suppliedPhoneNumberVerified: state.caseDetails.suppliedPhoneNumberVerified,
|
|
22
31
|
phoneCountryCode: state.caseDetails.phoneCountryCode,
|
|
23
32
|
phoneAreaCodePrefixLineNumber: state.caseDetails.phoneAreaCodePrefixLineNumber,
|
|
24
|
-
|
|
33
|
+
hasLoggedInUserConfirmedPhoneNumber: state.hasLoggedInUserConfirmedPhoneNumber,
|
|
34
|
+
contactSSOName: state.caseDetails.contactSSOName,
|
|
25
35
|
}), isEqual);
|
|
26
36
|
const { routeState: { isNextBtnClickedToShowValidationError }, } = useContext(RouteContext);
|
|
27
37
|
const { globalMetadataState: { loggedInUser }, } = useContext(GlobalMetadataStateContext);
|
|
28
38
|
const [invalid, setInvalid] = useState(false);
|
|
29
39
|
const [localFullPhone, setLocalFullPhone] = useState(phoneCountryCode + ' ' + phoneAreaCodePrefixLineNumber);
|
|
40
|
+
const [isFetchingSso, setIsFetchingSso] = useState(false);
|
|
30
41
|
const { isExportingPDF } = useContext(PDFContext);
|
|
31
|
-
const canChangeAccountInfo = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ACCOUNT_AND_OWNER);
|
|
32
42
|
const getPhone = () => phoneCountryCode + ' ' + phoneAreaCodePrefixLineNumber;
|
|
33
43
|
const caseDispatch = useCaseDispatch();
|
|
34
44
|
const { t } = useTranslation();
|
|
45
|
+
const checkingPlusInLocalFullPhone = (_localFullPhone) => {
|
|
46
|
+
if (isEqual(_localFullPhone.trim(), '+')) {
|
|
47
|
+
return '';
|
|
48
|
+
}
|
|
49
|
+
else if (!isEmpty(_localFullPhone) && !_localFullPhone.startsWith('+')) {
|
|
50
|
+
return '+' + _localFullPhone.replace(' ', '');
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return _localFullPhone;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
35
56
|
const onPhoneChange = (fullPhone) => {
|
|
36
|
-
setLocalFullPhone(fullPhone);
|
|
57
|
+
setLocalFullPhone(checkingPlusInLocalFullPhone(fullPhone));
|
|
37
58
|
setCaseDetails(caseDispatch, {
|
|
38
59
|
phoneAreaCodePrefixLineNumber: getPhoneObj(fullPhone).phoneLine,
|
|
39
60
|
phoneCountryCode: getPhoneObj(fullPhone).countryCode,
|
|
@@ -52,7 +73,6 @@ export function ContactPhoneNumber() {
|
|
|
52
73
|
isEmpty(phoneAreaCodePrefixLineNumber === null || phoneAreaCodePrefixLineNumber === void 0 ? void 0 : phoneAreaCodePrefixLineNumber.replace(phoneCountryCode, ''));
|
|
53
74
|
const isPhoneNumberValid = !isEmpty(phoneAreaCodePrefixLineNumber) &&
|
|
54
75
|
!isNextBtnClickedToShowValidationError &&
|
|
55
|
-
isExistingPhoneNumber &&
|
|
56
76
|
!isEmpty(trimAndReplacePlus(phoneCountryCode)) &&
|
|
57
77
|
(isEqual(suppliedPhoneNumberVerified, 'False') || isUndefined(suppliedPhoneNumberVerified))
|
|
58
78
|
? ValidatedOptions.warning
|
|
@@ -66,47 +86,92 @@ export function ContactPhoneNumber() {
|
|
|
66
86
|
: invalid
|
|
67
87
|
? ValidatedOptions.error
|
|
68
88
|
: ValidatedOptions.default;
|
|
89
|
+
// This useEffect initialize phone number inputbox
|
|
90
|
+
// - User open case for first time for herself/himself -> show portal phone number
|
|
91
|
+
// - User open case for NOT first time for herself/himself -> show phone number that we have on user contact in SF
|
|
69
92
|
useEffect(() => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
93
|
+
if (isEmpty(loggedInUser.data.phone) &&
|
|
94
|
+
isEmpty(loggedInUser.data.supportPhoneAreaCodePrefixLineNumber) &&
|
|
95
|
+
isEmpty(loggedInUser.data.supportPhoneCountryCode))
|
|
96
|
+
setLocalFullPhone('');
|
|
97
|
+
const initContactPhoneNumber = () => __awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
let _phoneAreaCodePrefixLineNumber;
|
|
99
|
+
let _phoneCountryCode;
|
|
100
|
+
let _suppliedPhoneNumberVerified;
|
|
101
|
+
// logged in user and case owner are the same
|
|
102
|
+
if (contactSSOName === loggedInUser.data.ssoUsername) {
|
|
103
|
+
if (loggedInUser.data.supportPhoneAreaCodePrefixLineNumber) {
|
|
104
|
+
// User has opened a case before and has phone and area code in her/his contact on SF
|
|
105
|
+
_phoneAreaCodePrefixLineNumber = loggedInUser.data.supportPhoneAreaCodePrefixLineNumber;
|
|
106
|
+
_phoneCountryCode = loggedInUser.data.supportPhoneCountryCode;
|
|
107
|
+
_suppliedPhoneNumberVerified =
|
|
108
|
+
isEqual(hasLoggedInUserConfirmedPhoneNumber, 'True') ||
|
|
109
|
+
isEqual(hasLoggedInUserConfirmedPhoneNumber, 'Deferred')
|
|
110
|
+
? hasLoggedInUserConfirmedPhoneNumber
|
|
111
|
+
: 'False';
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// User is openning a case for the first time
|
|
115
|
+
const phoneLine = getPhoneObj(loggedInUser.data.phone).phoneLine || '';
|
|
116
|
+
const countryCode = getPhoneObj(loggedInUser.data.phone).countryCode;
|
|
117
|
+
_phoneAreaCodePrefixLineNumber = phoneLine;
|
|
118
|
+
_phoneCountryCode = countryCode;
|
|
119
|
+
_suppliedPhoneNumberVerified =
|
|
120
|
+
isEqual(hasLoggedInUserConfirmedPhoneNumber, 'True') ||
|
|
121
|
+
isEqual(hasLoggedInUserConfirmedPhoneNumber, 'Deferred')
|
|
122
|
+
? hasLoggedInUserConfirmedPhoneNumber
|
|
123
|
+
: 'False';
|
|
124
|
+
}
|
|
78
125
|
}
|
|
79
126
|
else {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
127
|
+
// user is openning case for others (use is partner or red hatter)
|
|
128
|
+
try {
|
|
129
|
+
if (!contactSSOName)
|
|
130
|
+
return;
|
|
131
|
+
setIsFetchingSso(true);
|
|
132
|
+
const selectedContact = yield contacts.getSFDCContactBySso(contactSSOName);
|
|
133
|
+
setIsFetchingSso(false);
|
|
134
|
+
if (selectedContact.supportPhoneAreaCodePrefixLineNumber) {
|
|
135
|
+
_phoneAreaCodePrefixLineNumber = selectedContact.supportPhoneAreaCodePrefixLineNumber;
|
|
136
|
+
_phoneCountryCode = selectedContact.supportPhoneCountryCode;
|
|
137
|
+
_suppliedPhoneNumberVerified = 'Deferred';
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
_phoneAreaCodePrefixLineNumber = getPhoneObj(selectedContact.phone).phoneLine || '';
|
|
141
|
+
_phoneCountryCode = getPhoneObj(selectedContact.phone).countryCode || '';
|
|
142
|
+
_suppliedPhoneNumberVerified = 'Deferred';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (e) {
|
|
146
|
+
_phoneAreaCodePrefixLineNumber = '';
|
|
147
|
+
_phoneCountryCode = '';
|
|
148
|
+
_suppliedPhoneNumberVerified = 'False';
|
|
149
|
+
setIsFetchingSso(false);
|
|
89
150
|
}
|
|
90
151
|
}
|
|
152
|
+
setCaseDetails(caseDispatch, {
|
|
153
|
+
phoneAreaCodePrefixLineNumber: _phoneAreaCodePrefixLineNumber,
|
|
154
|
+
phoneCountryCode: _phoneCountryCode,
|
|
155
|
+
suppliedPhoneNumberVerified: _suppliedPhoneNumberVerified,
|
|
156
|
+
});
|
|
157
|
+
let _localFullPhone = _phoneCountryCode + ' ' + _phoneAreaCodePrefixLineNumber;
|
|
158
|
+
setLocalFullPhone(checkingPlusInLocalFullPhone(_localFullPhone));
|
|
159
|
+
});
|
|
160
|
+
// if phone not initialized with portal and user contact value, initialize it else populate phone inputbox
|
|
161
|
+
if (isEmpty(phoneAreaCodePrefixLineNumber) && isEmpty(phoneCountryCode)) {
|
|
162
|
+
initContactPhoneNumber();
|
|
91
163
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}, [phoneAreaCodePrefixLineNumber, phoneCountryCode, loggedInUser.data.phone]);
|
|
95
|
-
useEffect(() => {
|
|
96
|
-
if (isEqual(localFullPhone.trim(), '+')) {
|
|
97
|
-
setLocalFullPhone('');
|
|
98
|
-
}
|
|
99
|
-
else if (!isEmpty(localFullPhone) && !localFullPhone.startsWith('+')) {
|
|
100
|
-
setLocalFullPhone('+' + localFullPhone.replace(' ', ''));
|
|
164
|
+
else {
|
|
165
|
+
setLocalFullPhone(checkingPlusInLocalFullPhone(phoneCountryCode + ' ' + phoneAreaCodePrefixLineNumber));
|
|
101
166
|
}
|
|
102
167
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
103
|
-
}, [
|
|
168
|
+
}, [contactSSOName]);
|
|
104
169
|
return (React.createElement("div", { className: "form-group", style: { minWidth: '200px' } },
|
|
105
170
|
React.createElement("label", null,
|
|
106
171
|
React.createElement(Trans, null, "Case owner's phone number"),
|
|
107
172
|
React.createElement("span", { className: `form-required ${isExportingPDF ? 'hide-in-pdf' : ''}`, "aria-hidden": true }, "*"),
|
|
108
173
|
ContactPhoneNumberPopOver()),
|
|
109
|
-
React.createElement(PhoneInput, { phoneValue: localFullPhone, onPhoneValueChange: onPhoneChange, onCountryCodeChange: onCountryCodeChange, validations: isPhoneNumberValid, invalid: invalid, setInvalid: setInvalid }),
|
|
174
|
+
React.createElement(PhoneInput, { phoneValue: localFullPhone, onPhoneValueChange: onPhoneChange, onCountryCodeChange: onCountryCodeChange, validations: isPhoneNumberValid, invalid: invalid, setInvalid: setInvalid, isLoading: isFetchingSso }),
|
|
110
175
|
React.createElement(MandatoryPhonePopOver, null),
|
|
111
176
|
!invalid &&
|
|
112
177
|
getPhone().length < PHONE_LIMIT &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContactPhoneNumberAlert.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/ContactPhoneNumberAlert.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ContactPhoneNumberAlert.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/ContactPhoneNumberAlert.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAQrD,wBAAgB,uBAAuB,sBAqFtC"}
|
|
@@ -12,45 +12,42 @@ import { trimAndReplacePlus } from '../shared/utils';
|
|
|
12
12
|
export function ContactPhoneNumberAlert() {
|
|
13
13
|
const { t } = useTranslation();
|
|
14
14
|
const caseDispatch = useCaseDispatch();
|
|
15
|
-
const {
|
|
16
|
-
caseDetails: state.caseDetails,
|
|
15
|
+
const { phoneCountryCode, phoneAreaCodePrefixLineNumber, contactSSOName, suppliedPhoneNumberVerified } = useCaseSelector((state) => ({
|
|
17
16
|
phoneCountryCode: state.caseDetails.phoneCountryCode,
|
|
18
17
|
phoneAreaCodePrefixLineNumber: state.caseDetails.phoneAreaCodePrefixLineNumber,
|
|
19
|
-
isExistingPhoneNumber: state.isExistingPhoneNumber,
|
|
20
18
|
contactSSOName: state.caseDetails.contactSSOName,
|
|
19
|
+
suppliedPhoneNumberVerified: state.caseDetails.suppliedPhoneNumberVerified,
|
|
21
20
|
}), isEqual);
|
|
22
21
|
const { globalMetadataState: { loggedInUser }, } = useContext(GlobalMetadataStateContext);
|
|
23
22
|
const { isExportingPDF } = useContext(PDFContext);
|
|
24
|
-
const
|
|
25
|
-
setCaseDetails(caseDispatch,
|
|
23
|
+
const onSuppliedPhoneNumberVerifiedChange = (suppliedPhoneNumberVerified) => {
|
|
24
|
+
setCaseDetails(caseDispatch, { suppliedPhoneNumberVerified });
|
|
26
25
|
if (contactSSOName === loggedInUser.data.ssoUsername) {
|
|
27
26
|
// edge case: when loggedInUser === contactSSOName while opening a case confirms or deffers the phone
|
|
28
27
|
// we need to save the verification state globallly so that we don't show the phone review banner again
|
|
29
28
|
// to the user where he changes it to another owner and then again assigns himself as the case owner
|
|
30
29
|
setCaseState(caseDispatch, {
|
|
31
|
-
hasLoggedInUserConfirmedPhoneNumber:
|
|
30
|
+
hasLoggedInUserConfirmedPhoneNumber: suppliedPhoneNumberVerified,
|
|
32
31
|
});
|
|
33
32
|
}
|
|
34
33
|
};
|
|
35
34
|
const isPhoneNumberEmpty = isEmpty(trimAndReplacePlus(phoneCountryCode)) &&
|
|
36
35
|
isEmpty(phoneAreaCodePrefixLineNumber === null || phoneAreaCodePrefixLineNumber === void 0 ? void 0 : phoneAreaCodePrefixLineNumber.replace(phoneCountryCode, ''));
|
|
37
36
|
useEffect(() => {
|
|
38
|
-
if (isPhoneNumberEmpty && !
|
|
39
|
-
|
|
37
|
+
if (isPhoneNumberEmpty && !suppliedPhoneNumberVerified) {
|
|
38
|
+
onSuppliedPhoneNumberVerifiedChange(undefined);
|
|
40
39
|
}
|
|
41
40
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
42
41
|
}, []);
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
!isEmpty(trimAndReplacePlus(phoneCountryCode)) &&
|
|
47
|
-
isExistingPhoneNumber;
|
|
42
|
+
const phoneAndCountryHaveValues = !isEmpty(phoneAreaCodePrefixLineNumber) && !isEmpty(trimAndReplacePlus(phoneCountryCode));
|
|
43
|
+
const phoneNotVerifiedOrVerificationIsUndefined = isEqual(suppliedPhoneNumberVerified, 'False') || isUndefined(suppliedPhoneNumberVerified);
|
|
44
|
+
const showAlert = phoneNotVerifiedOrVerificationIsUndefined && phoneAndCountryHaveValues;
|
|
48
45
|
if (!showAlert)
|
|
49
46
|
return React.createElement(React.Fragment, null);
|
|
50
47
|
return (React.createElement(Alert, { className: `form-group ${isExportingPDF ? 'hide-in-pdf' : ''} phone-review-banner`, isInline: true, variant: AlertVariant.warning, title: t('Review phone number'), actionLinks: [
|
|
51
|
-
React.createElement(Button, { variant: ButtonVariant.link, isInline: true, onClick: () =>
|
|
48
|
+
React.createElement(Button, { variant: ButtonVariant.link, isInline: true, onClick: () => onSuppliedPhoneNumberVerifiedChange('True'), "data-tracking-id": "case-contact-phone-number-confirm", key: "case-contact-phone-number-confirm" },
|
|
52
49
|
React.createElement(Trans, null, "Confirm phone number")),
|
|
53
|
-
React.createElement(Button, { variant: ButtonVariant.link, isInline: true, onClick: () =>
|
|
50
|
+
React.createElement(Button, { variant: ButtonVariant.link, isInline: true, onClick: () => onSuppliedPhoneNumberVerifiedChange('Deferred'), "data-tracking-id": "case-contact-phone-number-dont-know", key: "case-contact-phone-number-dont-know" },
|
|
54
51
|
React.createElement(Trans, null, "I don't know")),
|
|
55
52
|
] },
|
|
56
53
|
React.createElement(Trans, null, "Please confirm the phone number we have on file is correct.")));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AASrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"GlobalTroubleshootEffects.d.ts","sourceRoot":"","sources":["../../../../src/components/wizardLayout/GlobalTroubleshootEffects.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAWvD,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AASrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAwVtD"}
|
|
@@ -162,26 +162,6 @@ export function GlobalTroubleshootEffects(props) {
|
|
|
162
162
|
setCaseOwner(caseDispatch, loggedInUserRights.data.getHydraContactFromLoggedInUser(), product, undefined, undefined, true);
|
|
163
163
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
164
164
|
}, [caseDispatch, loggedInUserRights.data]);
|
|
165
|
-
/**
|
|
166
|
-
* Setting supplied phone number
|
|
167
|
-
*/
|
|
168
|
-
useEffect(() => {
|
|
169
|
-
// Since we are receiving both `phone` and `supportPhoneNumber` from the user contact API, it is causing confusion regarding which field should be used to pre-populate the user contact information.
|
|
170
|
-
// Hence, we are going to honor `supportPhoneAreaCodePrefixLineNumber` and `supportPhoneCountryCode` for it.
|
|
171
|
-
if ((!isEmpty(loggedInUser.data.supportPhoneCountryCode) &&
|
|
172
|
-
!isEmpty(loggedInUser.data.supportPhoneAreaCodePrefixLineNumber)) ||
|
|
173
|
-
!isEmpty(loggedInUser.data.phone)) {
|
|
174
|
-
setCaseState(caseDispatch, { isExistingPhoneNumber: true });
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
setCaseState(caseDispatch, { isExistingPhoneNumber: false });
|
|
178
|
-
}
|
|
179
|
-
setCaseDetails(caseDispatch, {
|
|
180
|
-
phone: loggedInUser.data.phone,
|
|
181
|
-
phoneAreaCodePrefixLineNumber: loggedInUser.data.supportPhoneAreaCodePrefixLineNumber,
|
|
182
|
-
phoneCountryCode: loggedInUser.data.supportPhoneCountryCode,
|
|
183
|
-
});
|
|
184
|
-
}, [caseDispatch, loggedInUser.data]);
|
|
185
165
|
/**
|
|
186
166
|
* handling top content call
|
|
187
167
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CaseReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseReducer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAEtH,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAA+B,MAAM,qCAAqC,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAWxD,OAAO,EAEH,uBAAuB,EAEvB,UAAU,EAEb,MAAM,mBAAmB,CAAC;AAS3B,OAAO,EAAE,0BAA0B,EAAiB,MAAM,yBAAyB,CAAC;AAEpF,eAAO,MAAM,WAAW,WAAY,UAAU,UAAU,GAAG,KAAG,UAgN7D,CAAC;AAGF,eAAO,MAAM,cAAc,aAAc,uBAAuB,aAAa,QAAQ,YAAY,CAAC,SAEjG,CAAC;AAEF,eAAO,MAAM,YAAY,aAAc,uBAAuB,aAAa,QAAQ,UAAU,CAAC,SAE7F,CAAC;AAEF,eAAO,MAAM,eAAe,aAAc,uBAAuB,gCAAgC,QAAQ,EAAE,SAK1G,CAAC;AAEF,eAAO,MAAM,UAAU,aACT,uBAAuB,0BACT,0BAA0B,eACrC,UAAU,eACV,YAAY,gBACX,OAAO,mBACJ,MAAM,GAAG,WAAW,2BACZ,MAAM,mBACd,OAAO,cACZ,OAAO,kBA8CtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,aAAc,uBAAuB,qBAUrF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,aAAc,uBAAuB,eAAe,OAAO,SAOpG,CAAC;AAEF,eAAO,MAAM,wBAAwB,aAAoB,uBAAuB,cAAc,MAAM,kBAsBnG,CAAC;AAGF,eAAO,MAAM,0BAA0B,oBAClB,OAAO,YACd,uBAAuB,0BACT,0BAA0B,eACrC,YAAY,cACb,MAAM,eACL,UAAU,kBAK1B,CAAC;AAGF,eAAO,MAAM,cAAc,2BACC,0BAA0B,eACrC,YAAY,cACb,MAAM,kBAQrB,CAAC;AAIF,eAAO,MAAM,cAAc,aACb,uBAAuB,cACrB,MAAM,cACN,WAAW,kBAoB1B,CAAC;AAEF,eAAO,MAAM,sBAAsB,aACrB,uBAAuB,QAC3B,mBAAmB,EAAE,sBACP,iBAAiB,EAAE,SAO1C,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAAoB,uBAAuB,WAAW,MAAM,eAAe,MAAM,kBAYhH,CAAC;AAEF,eAAO,MAAM,kBAAkB,aACjB,uBAAuB,cACrB,MAAM,eACL,QAAQ,UAAU,CAAC,kBAmBnC,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAClB,uBAAuB,cACrB,MAAM,gBACJ,MAAM,EAAE,kBAoBzB,CAAC;AAEF,eAAO,MAAM,mBAAmB,aAClB,uBAAuB,cACrB,MAAM,cACN,QAAQ,EAAE,kBAmBzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,aAAc,uBAAuB,SASrE,CAAC;AAEF,eAAO,MAAM,oBAAoB,aACnB,uBAAuB,iBAClB,MAAM,0DAEA,QAAQ,QAAQ,CAAC,kBA8CzC,CAAC;AAEF,eAAO,MAAM,YAAY,aACX,uBAAuB,SAC1B,QAAQ,WACN,MAAM,yBACQ,WAAW,4BACR,WAAW,2DAEV,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"CaseReducer.d.ts","sourceRoot":"","sources":["../../../src/reducers/CaseReducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -418,7 +418,14 @@ export const setCaseOwner = (dispatch, owner, product, abortSignalCaseGroup, abo
|
|
|
418
418
|
if (isEmpty(owner) || isEmpty(owner.ssoUsername)) {
|
|
419
419
|
dispatch({
|
|
420
420
|
type: CaseReducerConstants.caseDetailChanged,
|
|
421
|
-
payload: {
|
|
421
|
+
payload: {
|
|
422
|
+
caseDetails: {
|
|
423
|
+
contactSSOName: '',
|
|
424
|
+
phoneAreaCodePrefixLineNumber: '',
|
|
425
|
+
phoneCountryCode: '',
|
|
426
|
+
suppliedPhoneNumberVerified: undefined,
|
|
427
|
+
},
|
|
428
|
+
},
|
|
422
429
|
});
|
|
423
430
|
canUpdateCaseGroup && setCaseDetails(dispatch, { groupNumber: '-1' });
|
|
424
431
|
dispatch({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/troubleshoot",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.129-beta.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"@progress/kendo-react-pdf": "^5.16.0",
|
|
62
62
|
"@redux-devtools/extension": "^3.3.0",
|
|
63
63
|
"@rh-support/components": "2.1.61",
|
|
64
|
-
"@rh-support/react-context": "2.1.
|
|
64
|
+
"@rh-support/react-context": "2.1.69",
|
|
65
65
|
"@rh-support/types": "2.0.3",
|
|
66
66
|
"@rh-support/user-permissions": "2.1.44",
|
|
67
67
|
"@rh-support/utils": "2.1.33",
|
|
@@ -131,5 +131,5 @@
|
|
|
131
131
|
"defaults and supports es6-module",
|
|
132
132
|
"maintained node versions"
|
|
133
133
|
],
|
|
134
|
-
"gitHead": "
|
|
134
|
+
"gitHead": "551efecd97ae065d49e77f7089014d373aa248a2"
|
|
135
135
|
}
|