@rh-support/troubleshoot 2.6.303 → 2.6.305
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 +11 -9
- package/lib/esm/components/CaseEditView/Case.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Case.js +5 -17
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDetails/CaseOpenshiftClusterId/CaseOpenshiftClusterId.js +7 -18
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseAttachment.js +69 -21
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/CaseDiscussion.js +53 -72
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts +1 -2
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment/useMarkdownFileUploader.js +13 -8
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts +2 -0
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.d.ts.map +1 -1
- package/lib/esm/components/CaseEditView/Tabs/CaseDiscussion/PostComment.js +63 -26
- package/lib/esm/components/CaseInformation/CaseInformation.js +1 -1
- package/lib/esm/components/CaseInformation/FileDiag.d.ts.map +1 -1
- package/lib/esm/components/CaseInformation/FileDiag.js +10 -3
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenShiftClusterId.js +12 -20
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.d.ts.map +1 -1
- package/lib/esm/components/CaseManagement/OpenshiftDropdownV4.js +7 -16
- package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.d.ts.map +1 -1
- package/lib/esm/components/ConfirmationModals/NoAttachmentSelectedModal.js +5 -3
- package/lib/esm/components/ProductSelector/ProductNotEntitledModal.d.ts +8 -0
- package/lib/esm/components/ProductSelector/ProductNotEntitledModal.d.ts.map +1 -0
- package/lib/esm/components/ProductSelector/ProductNotEntitledModal.js +11 -0
- package/lib/esm/components/SubmitCase/SubmitCase.d.ts.map +1 -1
- package/lib/esm/components/SubmitCase/SubmitCase.js +1 -1
- package/lib/esm/components/shared/fileUpload/FileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/FileUploader.js +1 -1
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/WidgetFileUploader.js +2 -2
- package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts +1 -1
- package/lib/esm/components/shared/fileUpload/fileSelectors/FileSelectorButton.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts +8 -7
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/reducer/AttachmentHelper.js +52 -48
- package/lib/esm/components/shared/fileUpload/types/index.d.ts +2 -1
- package/lib/esm/components/shared/fileUpload/types/index.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts +2 -2
- package/lib/esm/components/shared/fileUpload/useFileUploader.d.ts.map +1 -1
- package/lib/esm/components/shared/fileUpload/useFileUploader.js +38 -14
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/GlobalTroubleshootEffects.js +55 -31
- package/lib/esm/components/wizardLayout/WizardLayout.d.ts.map +1 -1
- package/lib/esm/components/wizardLayout/WizardLayout.js +32 -3
- package/lib/esm/hooks/useS3Upload.d.ts +5 -4
- package/lib/esm/hooks/useS3Upload.d.ts.map +1 -1
- package/lib/esm/hooks/useS3Upload.js +25 -30
- package/lib/esm/reducers/CaseConstNTypes.d.ts +2 -0
- package/lib/esm/reducers/CaseConstNTypes.d.ts.map +1 -1
- package/lib/esm/reducers/CaseConstNTypes.js +2 -0
- package/lib/esm/reducers/CaseDetailsPageReducer.d.ts +2 -1
- package/lib/esm/reducers/CaseDetailsPageReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseDetailsPageReducer.js +12 -4
- package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts +2 -1
- package/lib/esm/reducers/CaseDiscussionTabReducer.d.ts.map +1 -1
- package/lib/esm/reducers/CaseDiscussionTabReducer.js +11 -4
- package/lib/esm/reducers/CaseHelpers.d.ts +2 -2
- package/lib/esm/reducers/CaseHelpers.d.ts.map +1 -1
- package/lib/esm/reducers/CaseHelpers.js +47 -49
- package/package.json +6 -6
|
@@ -7,46 +7,43 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
// TODO: Re-enable after GraphQL migration of attachments
|
|
11
|
-
// import { IAttachment } from '@cee-eng/hydrajs/@types/models/attachment';
|
|
12
10
|
import { Button, ButtonVariant, Checkbox } from '@patternfly/react-core';
|
|
11
|
+
import PlusIcon from '@patternfly/react-icons/dist/js/icons/plus-icon';
|
|
13
12
|
import { EditorMode, LoadingIndicator, MarkdownEditor, ToastNotification, usePrevious } from '@rh-support/components';
|
|
14
13
|
import { GlobalMetadataStateContext, useCanEditCase, useUserPreferences } from '@rh-support/react-context';
|
|
15
|
-
import { ability, CaseDiscussionFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
14
|
+
import { ability, CaseDiscussionFields, CaseListFields, resourceActions, resources, } from '@rh-support/user-permissions';
|
|
16
15
|
import isEmpty from 'lodash/isEmpty';
|
|
17
16
|
import isEqual from 'lodash/isEqual';
|
|
18
17
|
import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';
|
|
18
|
+
import { useDropzone } from 'react-dropzone';
|
|
19
19
|
import { Trans, useTranslation } from 'react-i18next';
|
|
20
20
|
import { useCaseDispatch, useCaseSelector } from '../../../../context/CaseContext';
|
|
21
21
|
import { useCreateCaseComment } from '../../../../hooks/useCaseComments';
|
|
22
22
|
import { useCaseUpdateErrorMessage } from '../../../../hooks/useCaseUpdateErrorMessage';
|
|
23
23
|
import { checkForCaseStatusToggleOnAttachOrComment } from '../../../../reducers/CaseReducer';
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// AttachmentDispatchContext,
|
|
28
|
-
// AttachmentStateContext,
|
|
29
|
-
// hasSomeSelectedFiles,
|
|
30
|
-
// hasSomeUnUploadedAttachments,
|
|
31
|
-
// isUploadingAttachment,
|
|
32
|
-
// resetAttachment,
|
|
33
|
-
// } from '../../../shared/fileUpload';
|
|
34
|
-
// import FileSelectorButton from '../../../shared/fileUpload/fileSelectors/FileSelectorButton';
|
|
35
|
-
// import FileUpload from '../../../shared/fileUpload/FileUpload';
|
|
24
|
+
import { AttachmentDispatchContext, AttachmentStateContext, hasSomeSelectedFiles, hasSomeUnUploadedAttachments, isUploadingAttachment, resetAttachment, } from '../../../shared/fileUpload';
|
|
25
|
+
import FileSelectorButton from '../../../shared/fileUpload/fileSelectors/FileSelectorButton';
|
|
26
|
+
import FileUpload from '../../../shared/fileUpload/FileUpload';
|
|
36
27
|
import { PDFContext } from '../../PDFContainer';
|
|
37
|
-
|
|
38
|
-
// import { useAttachmentUploadCompletion } from './PostComment/useAttachmentUploadCompletion';
|
|
28
|
+
import { useAttachmentUploadCompletion } from './PostComment/useAttachmentUploadCompletion';
|
|
39
29
|
import { useCommentDrafts } from './PostComment/useCommentDrafts';
|
|
40
|
-
|
|
30
|
+
import { useMarkdownFileUploader } from './PostComment/useMarkdownFileUploader';
|
|
41
31
|
import { VerifyCaseStatusModal } from './VerifyCaseStatusModal/VerifyCaseStatusModal';
|
|
42
32
|
export function PostComment(props) {
|
|
43
|
-
var _a;
|
|
33
|
+
var _a, _b, _c;
|
|
44
34
|
const { t } = useTranslation();
|
|
45
35
|
const caseUpdateError = useCaseUpdateErrorMessage();
|
|
46
36
|
let { caseNumber } = props;
|
|
47
37
|
const [isTextAreaFocused, setIsTextAreaFocused] = useState(false);
|
|
38
|
+
const canAddAttachments = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ATTACHMENTS);
|
|
48
39
|
const canPostPrivateComments = ability.can(resourceActions.PATCH, resources.CASE_COMMENTS, CaseDiscussionFields.POST_PRIVATE_COMMENT);
|
|
49
40
|
const { createComment, loading: isPostingComment } = useCreateCaseComment();
|
|
41
|
+
const dispatchToAttachmentReducer = useContext(AttachmentDispatchContext);
|
|
42
|
+
const { attachmentState } = useContext(AttachmentStateContext);
|
|
43
|
+
const isUploadingAttachmentPrevious = useRef(false);
|
|
44
|
+
const isUploadingAttachments = isUploadingAttachment(attachmentState.caseFiles.selectedLocalFiles);
|
|
45
|
+
const hasSomeUnUploadedFiles = hasSomeUnUploadedAttachments(attachmentState.caseFiles.selectedLocalFiles);
|
|
46
|
+
const hasSomeSelectedFilesLocal = hasSomeSelectedFiles(attachmentState.caseFiles.selectedLocalFiles);
|
|
50
47
|
const [isPublic, setIsPublic] = useState(props.defaultIsPublic === null ? true : props.defaultIsPublic);
|
|
51
48
|
const [commentType, setCommentType] = useState(EditorMode.PLAIN);
|
|
52
49
|
const [commentSignature, setCommentSignature] = useState('');
|
|
@@ -83,11 +80,21 @@ export function PostComment(props) {
|
|
|
83
80
|
const [cssCommentAgreed, setCssCommentAgreed] = useState(false);
|
|
84
81
|
const [isProcessing, setIsProcessing] = useState(false);
|
|
85
82
|
const { globalMetadataState: { loggedInUser, loggedInUserRights, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
|
|
83
|
+
const { onFileAttach, cancelFileUpload } = useMarkdownFileUploader({
|
|
84
|
+
caseNumber,
|
|
85
|
+
onAttachmentAdded: (_a = props.onAttachmentAdded) !== null && _a !== void 0 ? _a : (() => undefined),
|
|
86
|
+
});
|
|
87
|
+
const { getRootProps, getInputProps } = useDropzone({
|
|
88
|
+
onDrop: (files) => onFileAttach(files, isPublic),
|
|
89
|
+
multiple: false,
|
|
90
|
+
noClick: true,
|
|
91
|
+
noKeyboard: true,
|
|
92
|
+
});
|
|
86
93
|
const { status, caseSalesforceId } = useCaseSelector((state) => ({
|
|
87
94
|
status: state.caseDetails.status,
|
|
88
95
|
caseSalesforceId: state.caseDetails.id,
|
|
89
96
|
}), isEqual);
|
|
90
|
-
const isConfirmedStateSideSupport = (
|
|
97
|
+
const isConfirmedStateSideSupport = (_b = loggedInUsersAccount === null || loggedInUsersAccount === void 0 ? void 0 : loggedInUsersAccount.data) === null || _b === void 0 ? void 0 : _b.hasConfirmedStatesideSupport;
|
|
91
98
|
const caseDispatch = useCaseDispatch();
|
|
92
99
|
const [isCommentTooLong, setIsCommentTooLong] = useState(false);
|
|
93
100
|
const canEditCase = useCanEditCase();
|
|
@@ -132,8 +139,24 @@ export function PostComment(props) {
|
|
|
132
139
|
(_a = props.onCommentClear) === null || _a === void 0 ? void 0 : _a.call(props);
|
|
133
140
|
setCommentText(commentSignature ? `\n ${commentSignature}` : '');
|
|
134
141
|
});
|
|
142
|
+
const resetAttachmentSection = () => {
|
|
143
|
+
resetAttachment(dispatchToAttachmentReducer);
|
|
144
|
+
};
|
|
145
|
+
useAttachmentUploadCompletion({
|
|
146
|
+
isUploadingAttachments,
|
|
147
|
+
hasSomeUnUploadedFiles,
|
|
148
|
+
isUploadingAttachmentPrevious,
|
|
149
|
+
caseDispatch,
|
|
150
|
+
isInternal: loggedInUserRights.data.isInternal(),
|
|
151
|
+
status,
|
|
152
|
+
resetAttachmentSection,
|
|
153
|
+
onAttachmentAdded: (_c = props.onAttachmentAdded) !== null && _c !== void 0 ? _c : (() => undefined),
|
|
154
|
+
setCssCommentAgreed,
|
|
155
|
+
});
|
|
135
156
|
const onCancelClick = () => {
|
|
136
157
|
resetCommentSection();
|
|
158
|
+
resetAttachmentSection();
|
|
159
|
+
cancelFileUpload();
|
|
137
160
|
};
|
|
138
161
|
const onCommentTextChange = (value, mode) => __awaiter(this, void 0, void 0, function* () {
|
|
139
162
|
setCommentType(mode !== null && mode !== void 0 ? mode : commentType);
|
|
@@ -210,6 +233,10 @@ export function PostComment(props) {
|
|
|
210
233
|
return commentText.trim() === commentSignature;
|
|
211
234
|
}
|
|
212
235
|
const isPostCommentDisabled = isProcessing || !commentText || isCommentSignatureMatch();
|
|
236
|
+
const isFileUploadDisabled = isConfirmedStateSideSupport && !cssCommentAgreed;
|
|
237
|
+
const onFileUploadClick = () => {
|
|
238
|
+
ToastNotification.addInfoMessage(t('Uploading Attachment(s)'));
|
|
239
|
+
};
|
|
213
240
|
/**
|
|
214
241
|
* Formats a reply as a markdown blockquote. Truncates the original text
|
|
215
242
|
* to 1000 characters, prepends an attribution header, and prefixes each
|
|
@@ -251,12 +278,15 @@ export function PostComment(props) {
|
|
|
251
278
|
const isSubmitDisabled = isReplyDisabled() ||
|
|
252
279
|
isCommentEmpty ||
|
|
253
280
|
isPostCommentDisabled ||
|
|
281
|
+
isUploadingAttachments ||
|
|
282
|
+
hasSomeUnUploadedFiles ||
|
|
254
283
|
(isConfirmedStateSideSupport && !cssCommentAgreed);
|
|
255
284
|
return (React.createElement("div", { className: `pf-v6-u-mb-md ${isExportingPDF ? 'hide-in-pdf' : ''}`, ref: componentRef },
|
|
256
|
-
React.createElement(MarkdownEditor, { className: `${!isPublic && canPostPrivateComments ? 'is-private' : ''}`, disabled: isProcessing || canEditCase.isCaseNotEditable, "aria-label": "comment text area", editorMode: commentType, hideToolbars: true, onFocus: () => setIsTextAreaFocused(true), onBlur: onTextAreaBlur, onChange: onCommentTextChange, value: commentText, rows: isTextAreaFocused ? 12 : 4, bindTextArea: textAreaRef, onCommentExceedCharsLimit: onCommentExceedCharsLimit,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
285
|
+
React.createElement(MarkdownEditor, { className: `${!isPublic && canPostPrivateComments ? 'is-private' : ''}`, disabled: isProcessing || canEditCase.isCaseNotEditable, "aria-label": "comment text area", editorMode: commentType, hideToolbars: true, onFocus: () => setIsTextAreaFocused(true), onBlur: onTextAreaBlur, onChange: onCommentTextChange, value: commentText, rows: isTextAreaFocused ? 12 : 4, bindTextArea: textAreaRef, onCommentExceedCharsLimit: onCommentExceedCharsLimit, mdPlaceholder: !isPublic && canPostPrivateComments
|
|
286
|
+
? 'Add a comment or attach a file privately'
|
|
287
|
+
: 'Add a comment to this case', plainTextPlaceholder: !isPublic && canPostPrivateComments
|
|
288
|
+
? 'Add a comment or attach a file privately'
|
|
289
|
+
: 'Add a comment to this case' }),
|
|
260
290
|
isConfirmedStateSideSupport && (React.createElement("div", { className: "pf-v6-u-mt-md pf-v6-u-mb-lg" },
|
|
261
291
|
React.createElement("input", { type: "checkbox", id: "css-case-comment-agreement", name: "css-case-comment-agreement", "data-tracking-id": "css-case-comment-agreement", checked: cssCommentAgreed, onChange: (e) => setCssCommentAgreed(e.target.checked) }),
|
|
262
292
|
React.createElement("label", { htmlFor: "css-case-comment-agreement", className: "pf-v6-u-font-weight-normal pf-v6-u-font-size-sm" },
|
|
@@ -266,8 +296,15 @@ export function PostComment(props) {
|
|
|
266
296
|
isModalOpen && loggedInUserRights.data.isInternal() && isPublic && (React.createElement(VerifyCaseStatusModal, { onClose: onCancel, onConfirm: onConfirm, isUpdating: isPostingComment, caseNumber: props.caseNumber })),
|
|
267
297
|
React.createElement(Button, { "data-tracking-id": "postcomment-submit-button", type: "button", variant: ButtonVariant.primary, onClick: loggedInUser.data.isInternal && isPublic ? onBtnClick : isNotInternalConfirm, isDisabled: isSubmitDisabled, className: "postcomment-submit" },
|
|
268
298
|
React.createElement(Trans, null, "Submit")),
|
|
269
|
-
React.createElement(Button, { className: "secondary-button-pill", "data-tracking-id": "postcomment-cancel-button", type: "button", variant: ButtonVariant.link, onClick: onCancelClick, isDisabled: isPostCommentDisabled },
|
|
299
|
+
React.createElement(Button, { className: "secondary-button-pill", "data-tracking-id": "postcomment-cancel-button", type: "button", variant: ButtonVariant.link, onClick: onCancelClick, isDisabled: isPostCommentDisabled && !hasSomeSelectedFilesLocal },
|
|
270
300
|
React.createElement(Trans, null, "Cancel")),
|
|
301
|
+
canAddAttachments && (React.createElement(FileSelectorButton, { isSessionId: false, isDisabled: isFileUploadDisabled, buttonLabel: React.createElement(React.Fragment, null,
|
|
302
|
+
React.createElement(PlusIcon, null),
|
|
303
|
+
" ",
|
|
304
|
+
React.createElement(Trans, null, "Attach a file")) })),
|
|
271
305
|
canPostPrivateComments && (React.createElement("span", { className: "post-comment-checkbox" },
|
|
272
|
-
React.createElement(Checkbox, { label: t('Private'), isChecked: !isPublic && canPostPrivateComments, onChange: handleCheckboxToggle, "aria-label": t('Private'), id: "private-comment", name: "private-comment", "data-tracking-id": "private-comment-checkbox" })))))
|
|
306
|
+
React.createElement(Checkbox, { label: t('Private'), isChecked: !isPublic && canPostPrivateComments, onChange: handleCheckboxToggle, "aria-label": t('Private'), id: "private-comment", name: "private-comment", "data-tracking-id": "private-comment-checkbox" }))))),
|
|
307
|
+
canAddAttachments && (React.createElement("div", Object.assign({}, getRootProps(), { className: "post-comment-dropzone" }),
|
|
308
|
+
React.createElement("input", Object.assign({}, getInputProps())),
|
|
309
|
+
React.createElement(FileUpload, { className: `file-upload-section ${hasSomeSelectedFilesLocal ? 'card card-white pf-v6-u-mt-lg pf-v6-u-p-lg' : ''}`, idToUploadTo: caseNumber, caseSalesforceId: caseSalesforceId, onUploadClick: onFileUploadClick, isSessionId: false, needsAnalyzing: false, autoUploadOnSelect: true, isPrivate: !isPublic, showDescriptionInfoMsg: true })))));
|
|
273
310
|
}
|
|
@@ -20,7 +20,7 @@ export default function CaseInformation(props) {
|
|
|
20
20
|
contactSSOName: state.caseDetails.contactSSOName,
|
|
21
21
|
ownersCaseGroups: state.ownersCaseGroups,
|
|
22
22
|
selectedAccountDetails: state.selectedAccountDetails,
|
|
23
|
-
hasInvalidEntitlements:
|
|
23
|
+
hasInvalidEntitlements: false, // TODO: remove this once we have a proper entitlement check
|
|
24
24
|
}), isEqual);
|
|
25
25
|
const isMetadataLoading = () => {
|
|
26
26
|
return !isMetadataLoadingError() && (loggedInUser.isFetching || selectedAccountDetails.isFetching);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileDiag.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/FileDiag.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FileDiag.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseInformation/FileDiag.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAQ/D,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,qBAuCrC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
// TODO: Re-enable when Hydra/GraphQL attachment APIs support secure support again
|
|
2
|
+
// import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
2
3
|
import { ability, CaseListFields, resourceActions, resources } from '@rh-support/user-permissions';
|
|
3
4
|
import { PreviousCaseTypes } from '@rh-support/utils';
|
|
4
5
|
import isEqual from 'lodash/isEqual';
|
|
@@ -11,7 +12,10 @@ import { WidgetFileUploader } from '../shared/fileUpload/WidgetFileUploader';
|
|
|
11
12
|
export function FileDiag(props) {
|
|
12
13
|
const { sessionRestore: { activeSessionId }, } = useContext(SessionRestoreStateContext);
|
|
13
14
|
const canAddAttachments = ability.can(resourceActions.PATCH, resources.CASE_CREATE, CaseListFields.ATTACHMENTS);
|
|
14
|
-
|
|
15
|
+
// TODO: Re-enable when Hydra/GraphQL attachment APIs support secure support again
|
|
16
|
+
// const {
|
|
17
|
+
// globalMetadataState: { loggedInUsersAccount },
|
|
18
|
+
// } = useContext(GlobalMetadataStateContext);
|
|
15
19
|
const { rulesState } = useContext(RulesStateContext);
|
|
16
20
|
const { caseType } = useCaseSelector((state) => ({
|
|
17
21
|
caseType: state.caseDetails.caseType,
|
|
@@ -22,5 +26,8 @@ export function FileDiag(props) {
|
|
|
22
26
|
}, [caseType]);
|
|
23
27
|
if (!canAddAttachments)
|
|
24
28
|
return null;
|
|
25
|
-
return (React.createElement(WidgetFileUploader, { className: props.className, idToUploadTo: activeSessionId, isPrivate: false, needsAnalyzing: isIdea ? false : true, isSessionId: true,
|
|
29
|
+
return (React.createElement(WidgetFileUploader, { className: props.className, idToUploadTo: activeSessionId, isPrivate: false, needsAnalyzing: isIdea ? false : true, isSessionId: true,
|
|
30
|
+
// isSecureSupport={loggedInUsersAccount.data.secureSupport!}
|
|
31
|
+
// autoUploadOnSelect={loggedInUsersAccount.data.secureSupport ? false : true}
|
|
32
|
+
autoUploadOnSelect: true, helperText: getValidAttachmentRules(rulesState.EARules.rules).length > 0 ? React.createElement(FileEARule, null) : null, isIdea: isIdea }));
|
|
26
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenShiftClusterId.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenShiftClusterId.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAuB/D,eAAO,MAAM,oBAAoB,yBAShC,CAAC;AAEF,eAAO,MAAM,uBAAuB,yBAInC,CAAC;AAEF,eAAO,MAAM,4BAA4B,yBAYxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAIjC,CAAC;AAEF,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"OpenShiftClusterId.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenShiftClusterId.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAuB/D,eAAO,MAAM,oBAAoB,yBAShC,CAAC;AAEF,eAAO,MAAM,uBAAuB,yBAInC,CAAC;AAEF,eAAO,MAAM,4BAA4B,yBAYxC,CAAC;AAEF,eAAO,MAAM,qBAAqB,yBAIjC,CAAC;AAEF,UAAU,MAAM;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,qBA2U/C"}
|
|
@@ -199,37 +199,31 @@ export function OpenShiftClusterId(props) {
|
|
|
199
199
|
fetchClusterRecommendations(clusterRecommendationsDispatch, selectedId, clusterRecommendationsCache);
|
|
200
200
|
};
|
|
201
201
|
const clusterIdDropdownFormInstructions = () => {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
// : null;
|
|
208
|
-
// TODO: Re-enable empty cluster ID check when cluster ID is made mandatory again
|
|
209
|
-
// const errorMessage = isClusterIdInvalid
|
|
210
|
-
// ? isInvalidErrorMessage()
|
|
211
|
-
// : isEmpty(openshiftClusterID) && isEmpty(selectedReason)
|
|
212
|
-
// ? discoverV4ClusterIdLinkError()
|
|
213
|
-
// : null;
|
|
214
|
-
const errorMessage = isClusterIdInvalid ? isInvalidErrorMessage() : null;
|
|
202
|
+
const errorMessage = isClusterIdInvalid
|
|
203
|
+
? isInvalidErrorMessage()
|
|
204
|
+
: isEmpty(openshiftClusterID) && isEmpty(selectedReason)
|
|
205
|
+
? discoverV4ClusterIdLinkError()
|
|
206
|
+
: null;
|
|
215
207
|
const infoMessage = v3Selected ? v3Tov4TransitionLink() : discoverV4ClusterIdLink();
|
|
216
208
|
return isNextBtnClickedToShowValidationError && errorMessage ? errorMessage : infoMessage;
|
|
217
209
|
};
|
|
218
|
-
const onReasonExplanationInputBoxChanged = (
|
|
210
|
+
const onReasonExplanationInputBoxChanged = (explanation) => {
|
|
219
211
|
if (noClusterIdReason === 'Other') {
|
|
220
|
-
|
|
212
|
+
const description = getUpdatedDescription(issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, product, version, noClusterIdReason, explanation);
|
|
213
|
+
setCaseDetails(caseDispatch, { noClusterIdReasonExplanation: explanation, description });
|
|
221
214
|
}
|
|
222
215
|
};
|
|
223
216
|
const v3ClusterNameInputBoxChanged = (v3Cluster) => {
|
|
224
217
|
const v3ClusterName = product === 'OpenShift Container Platform' && version !== '3.11' && isEmpty(v3Cluster.trim())
|
|
225
218
|
? ''
|
|
226
219
|
: v3Cluster;
|
|
227
|
-
const description = getUpdatedDescription(issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, product, version);
|
|
220
|
+
const description = getUpdatedDescription(issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, product, version, noClusterIdReason, noClusterIdReasonExplanation);
|
|
228
221
|
setCaseState(caseDispatch, { v3ClusterName });
|
|
229
222
|
setCaseDetails(caseDispatch, { description });
|
|
230
223
|
};
|
|
231
224
|
const onReasonChange = (reason) => {
|
|
232
|
-
|
|
225
|
+
const description = getUpdatedDescription(issue, environment, periodicityOfIssue, timeFramesAndUrgency, v3ClusterName, product, version, reason, noClusterIdReasonExplanation);
|
|
226
|
+
setCaseDetails(caseDispatch, { noClusterIdReason: reason, description });
|
|
233
227
|
};
|
|
234
228
|
const isInVaidNoClusterIdReason = isNextBtnClickedToShowValidationError &&
|
|
235
229
|
(isEmpty(noClusterIdReason) ||
|
|
@@ -240,9 +234,7 @@ export function OpenShiftClusterId(props) {
|
|
|
240
234
|
return null;
|
|
241
235
|
return (React.createElement("div", { className: `${props.className ? props.className : ''}` },
|
|
242
236
|
!showV3TextBox && (React.createElement(OpenshiftDropdownV4, { openshiftDisplayName: openshiftDisplayName, openshiftClusterIDState: openshiftClusterID || selectedReason, onClusterIdStateUpdate: onClusterIdStateUpdate, isClusterIdInvalid: isNextBtnClickedToShowValidationError &&
|
|
243
|
-
|
|
244
|
-
// ((isEmpty(openshiftClusterID) && isEmpty(selectedReason)) ||
|
|
245
|
-
isClusterIdInvalid, clusterIdDropdownFormInstructions: clusterIdDropdownFormInstructions(), onClusterClear: resetClusterData, isV3: product !== 'OpenShift Container Platform' })),
|
|
237
|
+
((isEmpty(openshiftClusterID) && isEmpty(selectedReason)) || isClusterIdInvalid), clusterIdDropdownFormInstructions: clusterIdDropdownFormInstructions(), onClusterClear: resetClusterData, isV3: product !== 'OpenShift Container Platform' })),
|
|
246
238
|
noClusterIdReasonExplanation !== 'v3-cluster' && dontKnowSelected && !showV3TextBox && (React.createElement(NoClusterIDReasonSelector, { noClusterIdReasonExplanation: noClusterIdReasonExplanation, noClusterIdReason: noClusterIdReason, onReasonInputBoxChanged: onReasonExplanationInputBoxChanged, onReasonChange: onReasonChange, isInValid: isInVaidNoClusterIdReason, isCustomer: isCustomer })),
|
|
247
239
|
(v3Selected || showV3TextBox) && (React.createElement(OpenShiftV3Inputbox, { v3ClusterName: v3ClusterName, onReasonInputBoxChanged: v3ClusterNameInputBoxChanged, isInValid: isEmpty(v3ClusterName.trim()) && isNextBtnClickedToShowValidationError, v3Selected: v3Selected }))));
|
|
248
240
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenshiftDropdownV4.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenshiftDropdownV4.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAA2D,MAAM,OAAO,CAAC;AAOhF,UAAU,MAAO,SAAQ,gBAAgB;IACrC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,IAAI,CAAC;CAC3C;AAsBD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"OpenshiftDropdownV4.d.ts","sourceRoot":"","sources":["../../../../src/components/CaseManagement/OpenshiftDropdownV4.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAgB5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAA2D,MAAM,OAAO,CAAC;AAOhF,UAAU,MAAO,SAAQ,gBAAgB;IACrC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzF,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iCAAiC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,IAAI,CAAC;CAC3C;AAsBD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAkfzC;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -117,8 +117,7 @@ function OpenshiftDropdownV4(props) {
|
|
|
117
117
|
// Define dropdown options for keyboard navigation
|
|
118
118
|
const dropdownOptions = useMemo(() => [
|
|
119
119
|
{ type: 'checkbox', key: 'show-hide-archived-clusters', label: t('Show archived clusters') },
|
|
120
|
-
|
|
121
|
-
// { type: 'option', key: 'dont-have-id', label: t("I don't have my Cluster ID") },
|
|
120
|
+
{ type: 'option', key: 'dont-have-id', label: t("I don't have my Cluster ID") },
|
|
122
121
|
...(props.isV3 ? [{ type: 'option', key: 'v3-cluster', label: t('The case is for a v3 cluster') }] : []),
|
|
123
122
|
], [props.isV3, t]);
|
|
124
123
|
// Use the keyboard navigation hook
|
|
@@ -133,10 +132,10 @@ function OpenshiftDropdownV4(props) {
|
|
|
133
132
|
setShowArchivedClusters(!showArchivedClusters);
|
|
134
133
|
props.onClusterClear();
|
|
135
134
|
setClustersRawResponse([]);
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
135
|
+
}
|
|
136
|
+
else if (item.key === 'dont-have-id') {
|
|
137
|
+
props.onClusterIdStateUpdate(createState('dont-have-id', t("I don't have my Cluster ID")));
|
|
138
|
+
setIsOpen(false);
|
|
140
139
|
}
|
|
141
140
|
else if (item.key === 'v3-cluster') {
|
|
142
141
|
props.onClusterIdStateUpdate(createState('v3-cluster', t('The case is for a v3 cluster')));
|
|
@@ -147,16 +146,7 @@ function OpenshiftDropdownV4(props) {
|
|
|
147
146
|
const dropdownHeaderOptions = useMemo(() => [
|
|
148
147
|
React.createElement(SelectOption, { hasCheckbox: true, key: "show-archived-clusters", "aria-label": t('Show archived clusters'), id: "show-archived-clusters", className: "archived-clusters-checkbox", "data-tracking-id": "show-hide-archived-clusters", value: { type: 'checkbox' }, isSelected: showArchivedClusters }, t('Show archived clusters')),
|
|
149
148
|
React.createElement(Divider, { component: "div", key: 'cluster-id-options-divider-e' }),
|
|
150
|
-
|
|
151
|
-
<SelectOption
|
|
152
|
-
key={'dont-have-id'}
|
|
153
|
-
value={createState('dont-have-id', t("I don't have my Cluster ID"))}
|
|
154
|
-
data-tracking-id="dont-have-cluster-id"
|
|
155
|
-
isFocused={focusedItemIndex === 1}
|
|
156
|
-
>
|
|
157
|
-
{"I don't have my Cluster ID"}
|
|
158
|
-
</SelectOption>,
|
|
159
|
-
*/
|
|
149
|
+
React.createElement(SelectOption, { key: 'dont-have-id', value: createState('dont-have-id', t("I don't have my Cluster ID")), "data-tracking-id": "dont-have-cluster-id", isFocused: focusedItemIndex === 1 }, "I don't have my Cluster ID"),
|
|
160
150
|
...(props.isV3
|
|
161
151
|
? [
|
|
162
152
|
React.createElement(SelectOption, { key: 'v3-cluster', value: createState('v3-cluster', t('The case is for a v3 cluster')), isFocused: focusedItemIndex === 2 }),
|
|
@@ -358,6 +348,7 @@ function OpenshiftDropdownV4(props) {
|
|
|
358
348
|
React.createElement("div", { className: `${props.className} form-group` },
|
|
359
349
|
React.createElement("label", { htmlFor: "case-details-cluster-nickname-selector" },
|
|
360
350
|
React.createElement(Trans, null, "OpenShift Cluster ID"),
|
|
351
|
+
React.createElement("span", { className: `form-required ${isExportingPDF ? 'hide-in-pdf' : ''}`, "aria-hidden": true }, "*"),
|
|
361
352
|
!isExportingPDF ? React.createElement(CaseOpenShiftPopover, null) : ''),
|
|
362
353
|
React.createElement("span", { id: titleId, hidden: true }, "Select a state"),
|
|
363
354
|
React.createElement(Select, { id: "openshift-cluster-selector", isOpen: isOpen, selected: getSelectedItem(), onSelect: onSelect, onOpenChange: (nextOpen) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NoAttachmentSelectedModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ConfirmationModals/NoAttachmentSelectedModal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"NoAttachmentSelectedModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ConfirmationModals/NoAttachmentSelectedModal.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAiBvE,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;CACzB;AAID,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,qBAgJtD"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Button, ButtonVariant, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, } from '@patternfly/react-core';
|
|
2
|
-
import { GlobalMetadataStateContext } from '@rh-support/react-context';
|
|
3
2
|
import { ability, resourceActions, resources } from '@rh-support/user-permissions';
|
|
4
3
|
import { pendoTrackEvent } from '@rh-support/utils';
|
|
5
4
|
import React, { useContext, useEffect, useRef, useState } from 'react';
|
|
@@ -16,7 +15,6 @@ const TIMEOUT_DURATION = 9000;
|
|
|
16
15
|
export function NoAttachmentSelectedModal(props) {
|
|
17
16
|
const { t } = useTranslation();
|
|
18
17
|
const { sessionRestore: { activeSessionId }, } = useContext(SessionRestoreStateContext);
|
|
19
|
-
const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
|
|
20
18
|
const { attachmentState: { caseFiles: { selectedLocalFiles }, }, } = useContext(AttachmentStateContext);
|
|
21
19
|
const [isUploading, setIsUploading] = useState(false);
|
|
22
20
|
const isAnyFileAttachedLocal = isAnyFileAttached(selectedLocalFiles);
|
|
@@ -78,7 +76,11 @@ export function NoAttachmentSelectedModal(props) {
|
|
|
78
76
|
React.createElement("p", { className: "pf-v6-u-mb-md" },
|
|
79
77
|
React.createElement(Trans, null, "Uploading an attachment will speed up your case's resolution time")),
|
|
80
78
|
React.createElement(FileEARule, { isInline: true })))),
|
|
81
|
-
React.createElement(FileUpload, { idToUploadTo: activeSessionId, onUploadClick: onFileUploadClick, isSessionId: true, needsAnalyzing: true,
|
|
79
|
+
React.createElement(FileUpload, { idToUploadTo: activeSessionId, onUploadClick: onFileUploadClick, isSessionId: true, needsAnalyzing: true,
|
|
80
|
+
// TODO: Re-enable when Hydra/GraphQL attachment APIs support secure support again
|
|
81
|
+
// autoUploadOnSelect={loggedInUsersAccount.data.secureSupport ? false : true}
|
|
82
|
+
// isSecureSupport={loggedInUsersAccount.data.secureSupport}
|
|
83
|
+
autoUploadOnSelect: true, isPrivate: false }),
|
|
82
84
|
React.createElement(ModalFooter, null, isUploading ? (React.createElement(Button, { key: "create-case", variant: ButtonVariant.primary, onClick: props.onConfirm, "data-tracking-id": "skip-upload-or-analysis-and-submit" },
|
|
83
85
|
React.createElement(Trans, null, "Skip analyze and create my case"))) : isAnyFileAttachedLocal ? (!canUseSessionManagement && (React.createElement(Button, { className: "pf-v6-u-mt-sm", variant: ButtonVariant.primary, onClick: props.onConfirm, "data-tracking-id": "no-attachment-modal-create-case" },
|
|
84
86
|
React.createElement(Trans, null, "Create Case")))) : (React.createElement(React.Fragment, null,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductNotEntitledModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ProductSelector/ProductNotEntitledModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,MAAM;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,qBAkBlE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Button, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant } from '@patternfly/react-core';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
export function ProductNotEntitledModal({ isOpen, onClose }) {
|
|
5
|
+
const { t } = useTranslation();
|
|
6
|
+
return (React.createElement(Modal, { variant: ModalVariant.small, isOpen: isOpen, onClose: onClose, "aria-label": t('Product Not Entitled') },
|
|
7
|
+
React.createElement(ModalHeader, { title: t('Product Not Entitled'), titleIconVariant: "warning" }),
|
|
8
|
+
React.createElement(ModalBody, null, t('The selected product is not included in your current subscription entitlements. Please choose an entitled product or contact your administrator to update your subscription.')),
|
|
9
|
+
React.createElement(ModalFooter, null,
|
|
10
|
+
React.createElement(Button, { variant: "primary", onClick: onClose }, t('Okay')))));
|
|
11
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubmitCase.d.ts","sourceRoot":"","sources":["../../../../src/components/SubmitCase/SubmitCase.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAQ,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAQ1E,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAWrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SubmitCase.d.ts","sourceRoot":"","sources":["../../../../src/components/SubmitCase/SubmitCase.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,EAAQ,mBAAmB,EAAe,MAAM,kBAAkB,CAAC;AAQ1E,OAAO,EAAqB,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAWrF,UAAU,MAAM;IACZ,UAAU,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,MAAM,qBA8Y/C"}
|
|
@@ -214,7 +214,7 @@ export default function SubmitCase(props) {
|
|
|
214
214
|
React.createElement(Button, { className: "pf-v6-u-ml-md view-case-button", component: "a", href: getCaseURL(), variant: "primary", "data-tracking-id": "get-support-view-case", "aria-label": t('View case'), isAriaDisabled: isUploadingAttachment(attachmentState.caseFiles.selectedLocalFiles) },
|
|
215
215
|
React.createElement(Trans, null, "View case"))))) : (React.createElement(Button, { component: (props) => (React.createElement(Link, Object.assign({}, props, { to: `/case/${caseNoOfCreatedCase}` }))), variant: "primary", "data-tracking-id": "get-support-view-case", "aria-label": t('View case'), className: "view-case-button" },
|
|
216
216
|
React.createElement(Trans, null, "View case"))))))),
|
|
217
|
-
!isEmpty(attachmentState.caseFiles.selectedLocalFiles) && (React.createElement(FileUploader, { idToUploadTo: caseNoOfCreatedCase, isSessionId: false
|
|
217
|
+
!isEmpty(attachmentState.caseFiles.selectedLocalFiles) && (React.createElement(FileUploader, { idToUploadTo: caseNoOfCreatedCase, isSessionId: false })),
|
|
218
218
|
React.createElement("div", null,
|
|
219
219
|
(!isEmpty(topContent.data) || !rulesState.EARules.rules || !clusterRecommendations) &&
|
|
220
220
|
!isIdea && (React.createElement(Content, { className: "pf-v6-u-mt-2xl pf-v6-u-font-weight-light", component: ContentVariants.h2 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/FileUploader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGnD,UAAU,MAAO,SAAQ,wBAAwB;CAAG;AAQpD,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/FileUploader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAYrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGnD,UAAU,MAAO,SAAQ,wBAAwB;CAAG;AAQpD,iBAAS,YAAY,CAAC,KAAK,EAAE,MAAM,qBA+ClC;kBA/CQ,YAAY;;;AAiDrB,eAAe,YAAY,CAAC"}
|
|
@@ -26,7 +26,7 @@ function FileUploader(props) {
|
|
|
26
26
|
uploadFile(index);
|
|
27
27
|
}
|
|
28
28
|
else if (isSessionUploadComplete(file.uploadProgress.uploadStatus)) {
|
|
29
|
-
moveSessionAttachmentToCase(dispatchToAttachmentReducer, props.idToUploadTo, activeSessionId, file, index, apolloClient);
|
|
29
|
+
moveSessionAttachmentToCase(dispatchToAttachmentReducer, props.idToUploadTo, activeSessionId, file, index, apolloClient, props.caseSalesforceId);
|
|
30
30
|
}
|
|
31
31
|
});
|
|
32
32
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetFileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/WidgetFileUploader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AA0B/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAInD,UAAU,MAAO,SAAQ,wBAAwB,EAAE,gBAAgB;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"WidgetFileUploader.d.ts","sourceRoot":"","sources":["../../../../../src/components/shared/fileUpload/WidgetFileUploader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,KAA0C,MAAM,OAAO,CAAC;AA0B/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAInD,UAAU,MAAO,SAAQ,wBAAwB,EAAE,gBAAgB;IAC/D,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAGpB;AAYD,iBAAS,kBAAkB,CAAC,KAAK,EAAE,MAAM,qBA8OxC;kBA9OQ,kBAAkB;;;AAkP3B,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -28,7 +28,7 @@ const defaultProps = {
|
|
|
28
28
|
autoUploadOnSelect: false,
|
|
29
29
|
isPrivate: false,
|
|
30
30
|
isIdea: false,
|
|
31
|
-
isSecureSupport: false,
|
|
31
|
+
// isSecureSupport: false,
|
|
32
32
|
};
|
|
33
33
|
function WidgetFileUploader(props) {
|
|
34
34
|
const { t } = useTranslation();
|
|
@@ -148,7 +148,7 @@ function WidgetFileUploader(props) {
|
|
|
148
148
|
});
|
|
149
149
|
return (React.createElement(Card, { id: "file-uploader-card", className: "file-diag pf-v6-u-mb-md", onPaste: handlePaste },
|
|
150
150
|
React.createElement(CardHeader, { "aria-label": t('File uploader') },
|
|
151
|
-
React.createElement("h3", { id: "file-uploader-title" }, props.isIdea
|
|
151
|
+
React.createElement("h3", { id: "file-uploader-title" }, props.isIdea ? React.createElement(Trans, null, "File uploader") : React.createElement(Trans, null, "Upload a file for Red Hat to analyze"))),
|
|
152
152
|
React.createElement(CardBody, { "aria-label": t('File upload area'), className: "file-upload-body" },
|
|
153
153
|
React.createElement(WidgetFileSelector, { isSessionId: props.isSessionId, isPrivate: props.isPrivate, isIdea: props.isIdea, showFileExceed: fileExceedInfo }),
|
|
154
154
|
!hasSomeSelectedFiles(selectedLocalFiles) ? ((!props.isIdea && props.helperText) || (React.createElement("p", { className: "pf-v6-u-mt-md" },
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
interface IProps extends React.HTMLProps<HTMLButtonElement> {
|
|
3
3
|
isSessionId: boolean;
|
|
4
4
|
isPrivate?: boolean;
|
|
5
|
-
buttonLabel?:
|
|
5
|
+
buttonLabel?: React.ReactNode;
|
|
6
6
|
isDisabled?: boolean;
|
|
7
7
|
}
|
|
8
8
|
declare function FileSelectorButton({ isSessionId, id, className, buttonLabel, isPrivate, isDisabled, ...btnProps }: IProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileSelectorButton.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/fileSelectors/FileSelectorButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAO1C,UAAU,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"FileSelectorButton.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/fileSelectors/FileSelectorButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAO1C,UAAU,MAAO,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,iBAAS,kBAAkB,CAAC,EACxB,WAAW,EACX,EAAO,EACP,SAA4B,EAC5B,WAA6B,EAC7B,SAAiB,EACjB,UAAkB,EAClB,GAAG,QAAQ,EACd,EAAE,MAAM,qBA8BR;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CaseDiagnosticsStatus } from '@cee-eng/hydrajs/@types/api/pcm/preCaseDiagnostics';
|
|
2
2
|
import { ISlowUploadDetectionConfig } from '@cee-eng/hydrajs/@types/models/attachment';
|
|
3
|
+
import { ApolloQueryClient } from '@rh-support/utils';
|
|
3
4
|
import { AnalysisStatusConstants, AttachmentReducerDispatchType, IAnalysisResults, ICaseFiles, IFileLocal, IUploadMetadata, UploadStatusConstants } from './AttachmentReducer';
|
|
4
5
|
export declare const onDrop: (dispatchToAttachmentReducer: AttachmentReducerDispatchType, isSessionId: boolean, isPrivate?: boolean) => (acceptedFiles: File[]) => void;
|
|
5
6
|
export declare const isUploadingOnSession: (status: string) => status is UploadStatusConstants.uploadingOnSession;
|
|
@@ -37,32 +38,32 @@ export declare const isUploadedAndAnalysisFailed: (file: IFileLocal) => boolean;
|
|
|
37
38
|
export declare const isUploadedSuccessfully: (file: IFileLocal) => string;
|
|
38
39
|
export declare const isUploadedAndAnalysisSkipped: (file: IFileLocal) => boolean;
|
|
39
40
|
export declare const updateUploadMetadata: (dispatch: AttachmentReducerDispatchType, fileIndexToEdit: number, newUploadMetadata: Partial<IUploadMetadata>) => void;
|
|
40
|
-
export declare const uploadAllFiles: ({ dispatch, idToUploadTo, caseFiles,
|
|
41
|
+
export declare const uploadAllFiles: ({ dispatch, idToUploadTo, caseFiles, needsAnalyzing, isSessionId, slowUploadConfig, apolloClient, caseSalesforceId, }: {
|
|
41
42
|
dispatch: AttachmentReducerDispatchType;
|
|
42
43
|
idToUploadTo: string;
|
|
43
44
|
caseFiles: ICaseFiles;
|
|
44
|
-
isSecureSupport: boolean;
|
|
45
45
|
needsAnalyzing?: boolean;
|
|
46
46
|
isSessionId?: boolean;
|
|
47
47
|
slowUploadConfig?: ISlowUploadDetectionConfig;
|
|
48
|
+
apolloClient?: ApolloQueryClient;
|
|
49
|
+
caseSalesforceId?: string;
|
|
48
50
|
}) => Promise<void>;
|
|
49
|
-
export declare const uploadFile: ({ dispatch, idToUploadTo, localFile, originalFile, index,
|
|
51
|
+
export declare const uploadFile: ({ dispatch, idToUploadTo, localFile, originalFile, index, needsAnalyzing, isSessionId, slowUploadConfig, apolloClient, caseSalesforceId, }: {
|
|
50
52
|
dispatch: AttachmentReducerDispatchType;
|
|
51
53
|
idToUploadTo: string;
|
|
52
54
|
localFile: IFileLocal;
|
|
53
55
|
originalFile: File;
|
|
54
56
|
index: number;
|
|
55
|
-
isSecureSupport: boolean;
|
|
56
57
|
needsAnalyzing?: boolean;
|
|
57
58
|
isSessionId?: boolean;
|
|
58
59
|
slowUploadConfig?: ISlowUploadDetectionConfig;
|
|
60
|
+
apolloClient?: ApolloQueryClient;
|
|
61
|
+
caseSalesforceId?: string;
|
|
59
62
|
}) => Promise<void>;
|
|
60
63
|
export declare function doSosReportAnalysisForAllFiles(dispatch: any, idToUploadTo: string, localFiles: IFileLocal[], isSessionId: boolean): Promise<void>;
|
|
61
64
|
export declare function doSosReportAnalysisForFile(dispatch: any, idToUploadTo: string, attachmentId: string, localFile: IFileLocal, isSessionId: boolean, fileIndex: number, fileUploadStatus?: UploadStatusConstants): Promise<void>;
|
|
62
65
|
export declare function computeAnalysisResults(idToUploadTo: string, attachmentId: string, fileSize: number, isSessionId: boolean, listener: (status: CaseDiagnosticsStatus) => void): Promise<IAnalysisResults>;
|
|
63
|
-
export declare function moveSessionAttachmentToCase(dispatch: any, caseNumber: string, sessionId: string, localFile: IFileLocal, fileIndex: number, apolloClient?:
|
|
64
|
-
query: (options: any) => Promise<any>;
|
|
65
|
-
}): Promise<void>;
|
|
66
|
+
export declare function moveSessionAttachmentToCase(dispatch: any, caseNumber: string, sessionId: string, localFile: IFileLocal, fileIndex: number, apolloClient?: ApolloQueryClient, caseSalesforceId?: string): Promise<void>;
|
|
66
67
|
export declare function restoreFilesFromSession(dispatch: any, sessionId: string): Promise<void>;
|
|
67
68
|
export declare function isFileAnalysisFailedForAllFiles(localFiles: IFileLocal[]): boolean;
|
|
68
69
|
export declare function isAnyFileAttached(localFiles: IFileLocal[]): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentHelper.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/reducer/AttachmentHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"AttachmentHelper.d.ts","sourceRoot":"","sources":["../../../../../../src/components/shared/fileUpload/reducer/AttachmentHelper.ts"],"names":[],"mappings":"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"}
|