@rh-support/manage 2.5.263 → 2.5.272

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/lib/esm/ManageTabs.d.ts.map +1 -1
  2. package/lib/esm/ManageTabs.js +18 -46
  3. package/lib/esm/Routes.d.ts +0 -1
  4. package/lib/esm/Routes.d.ts.map +1 -1
  5. package/lib/esm/Routes.js +0 -6
  6. package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.d.ts +3 -5
  7. package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.d.ts.map +1 -1
  8. package/lib/esm/components/Groups/DefualtGroupSwitch/DefaultGroupSwitch.js +14 -21
  9. package/lib/esm/components/Groups/GroupSelect/GroupSelect.d.ts +0 -1
  10. package/lib/esm/components/Groups/GroupSelect/GroupSelect.d.ts.map +1 -1
  11. package/lib/esm/components/Groups/GroupSelect/GroupSelect.js +85 -156
  12. package/lib/esm/components/Groups/ManageGroupUsers/ManageGroupUsers.d.ts.map +1 -1
  13. package/lib/esm/components/Groups/ManageGroupUsers/ManageGroupUsers.js +42 -163
  14. package/lib/esm/components/ManagePreferences/sections/PreferencesACL.d.ts.map +1 -1
  15. package/lib/esm/components/ManagePreferences/sections/PreferencesACL.js +4 -3
  16. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.d.ts.map +1 -1
  17. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseCreate.js +58 -73
  18. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseView.d.ts.map +1 -1
  19. package/lib/esm/components/ManagePreferences/sections/PreferencesCaseView.js +98 -43
  20. package/lib/esm/constants/GroupSelectActions.d.ts +1 -2
  21. package/lib/esm/constants/GroupSelectActions.d.ts.map +1 -1
  22. package/lib/esm/constants/GroupSelectActions.js +0 -1
  23. package/lib/esm/hooks/useVersionsDiffer.d.ts.map +1 -1
  24. package/lib/esm/index.js +0 -1
  25. package/lib/esm/scss/_main.scss +0 -77
  26. package/package.json +8 -11
  27. package/lib/esm/components/Groups/AddMembersModal/AddMembersModal.d.ts +0 -12
  28. package/lib/esm/components/Groups/AddMembersModal/AddMembersModal.d.ts.map +0 -1
  29. package/lib/esm/components/Groups/AddMembersModal/AddMembersModal.js +0 -80
  30. package/lib/esm/components/Groups/AddMembersModal/index.d.ts +0 -2
  31. package/lib/esm/components/Groups/AddMembersModal/index.d.ts.map +0 -1
  32. package/lib/esm/components/Groups/AddMembersModal/index.js +0 -1
  33. package/lib/esm/components/ManageCaseLabels/AddEditCaseLabelModal.d.ts +0 -19
  34. package/lib/esm/components/ManageCaseLabels/AddEditCaseLabelModal.d.ts.map +0 -1
  35. package/lib/esm/components/ManageCaseLabels/AddEditCaseLabelModal.js +0 -83
  36. package/lib/esm/components/ManageCaseLabels/ManageCaseLabelsTab.d.ts +0 -3
  37. package/lib/esm/components/ManageCaseLabels/ManageCaseLabelsTab.d.ts.map +0 -1
  38. package/lib/esm/components/ManageCaseLabels/ManageCaseLabelsTab.js +0 -217
  39. package/lib/esm/components/ManageCaseLabels/index.d.ts +0 -2
  40. package/lib/esm/components/ManageCaseLabels/index.d.ts.map +0 -1
  41. package/lib/esm/components/ManageCaseLabels/index.js +0 -1
  42. package/lib/esm/components/ManageCaseLabels/types.d.ts +0 -6
  43. package/lib/esm/components/ManageCaseLabels/types.d.ts.map +0 -1
  44. package/lib/esm/components/ManageCaseLabels/types.js +0 -1
  45. package/lib/esm/hooks/useCaseGroupGraphQL.d.ts +0 -42
  46. package/lib/esm/hooks/useCaseGroupGraphQL.d.ts.map +0 -1
  47. package/lib/esm/hooks/useCaseGroupGraphQL.js +0 -109
  48. package/lib/esm/hooks/useCaseLabelGraphQL.d.ts +0 -26
  49. package/lib/esm/hooks/useCaseLabelGraphQL.d.ts.map +0 -1
  50. package/lib/esm/hooks/useCaseLabelGraphQL.js +0 -99
  51. package/lib/esm/hooks/useCurrentUserContact.d.ts +0 -8
  52. package/lib/esm/hooks/useCurrentUserContact.d.ts.map +0 -1
  53. package/lib/esm/hooks/useCurrentUserContact.js +0 -74
  54. package/lib/esm/utils/caseGroupMapper.d.ts +0 -18
  55. package/lib/esm/utils/caseGroupMapper.d.ts.map +0 -1
  56. package/lib/esm/utils/caseGroupMapper.js +0 -49
@@ -7,87 +7,39 @@ 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 { Button, Modal, ModalBody, ModalFooter, ModalHeader, ModalVariant, SearchInput, Tooltip, } from '@patternfly/react-core';
11
- import { ErrorBoundary, ToastNotification, usePrevious } from '@rh-support/components';
12
- import { GlobalMetadataReducerConstants, useGlobalDispatchContext, useGlobalStateContext, } from '@rh-support/react-context';
13
- import { ability, resourceActions, resources } from '@rh-support/user-permissions';
10
+ import { publicApi } from '@cee-eng/hydrajs';
11
+ import { SearchInput } from '@patternfly/react-core';
12
+ import { ErrorBoundary, ToastNotification, useFetch, usePrevious } from '@rh-support/components';
13
+ import { useGlobalStateContext } from '@rh-support/react-context';
14
14
  import isEmpty from 'lodash/isEmpty';
15
15
  import React, { useEffect, useMemo, useState } from 'react';
16
16
  import { Trans, useTranslation } from 'react-i18next';
17
17
  import { useLocation } from 'react-router-dom';
18
- import { useCaseGroupMembers, useDeleteCaseGroupMember } from '../../../hooks/useCaseGroupGraphQL';
19
18
  import { ManageTable } from '../../ManageTable/ManageTable';
20
- import { AddMembersModal } from '../AddMembersModal';
21
19
  import { DefaultGroupSwitch } from '../DefualtGroupSwitch';
22
20
  import { GroupSelect } from '../GroupSelect';
23
- // TODO: Uncomment when updateUsers is migrated to GraphQL
24
- // import { GroupUserPermissionsSelect } from '../GroupUserPermissionsSelect';
25
- const RemoveMemberButton = ({ user, onRemove, isDisabled }) => {
26
- const { t } = useTranslation();
27
- const button = (React.createElement(Button, { variant: "link", isDanger: true, onClick: () => onRemove(user), isAriaDisabled: user.isOrgAdmin || isDisabled }, t('Remove')));
28
- if (user.isOrgAdmin) {
29
- return (React.createElement(Tooltip, { content: t('Organization Administrators cannot be removed because they have access to all groups') }, button));
30
- }
31
- return button;
32
- };
21
+ import { GroupUserPermissionsSelect } from '../GroupUserPermissionsSelect';
33
22
  export const ManageGroupUsers = () => {
34
- var _a, _b;
35
23
  const { t } = useTranslation();
36
24
  const location = useLocation();
37
- const { globalMetadataState: { caseGroups, loggedInUsersAccount, loggedInUser }, } = useGlobalStateContext();
38
- const dispatchToGlobalMetadataReducer = useGlobalDispatchContext();
25
+ const { globalMetadataState: { loggedInUsersAccount }, } = useGlobalStateContext();
39
26
  const disableGroupSelect = !loggedInUsersAccount || !loggedInUsersAccount.data || !loggedInUsersAccount.data.accountNumber;
40
27
  const [selectedGroup, setSelectedGroup] = useState();
41
- const { data: groupUsers, loading: isFetching, fetchMembers, refetch } = useCaseGroupMembers();
42
- const defaultCaseGroupId = (_b = (_a = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _a === void 0 ? void 0 : _a.defaultCaseGroup) !== null && _b !== void 0 ? _b : null;
43
- const membersWithOrgAdmin = useMemo(() => {
44
- var _a, _b, _c, _d;
45
- const loggedInContact = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data;
46
- const selectedGroupId = selectedGroup === null || selectedGroup === void 0 ? void 0 : selectedGroup.groupNum;
47
- const syncLoggedInUserDefault = (members) => {
48
- if (!(loggedInContact === null || loggedInContact === void 0 ? void 0 : loggedInContact.ssoUsername) || !selectedGroupId)
49
- return members;
50
- return members.map((member) => member.ssoUsername === loggedInContact.ssoUsername
51
- ? Object.assign(Object.assign({}, member), { isDefault: defaultCaseGroupId === selectedGroupId }) : member);
52
- };
53
- const members = syncLoggedInUserDefault(groupUsers || []);
54
- const user = loggedInContact;
55
- if (!(user === null || user === void 0 ? void 0 : user.isOrgAdmin) || !user.ssoUsername || !selectedGroup)
56
- return members;
57
- const alreadyPresent = members.some((m) => m.ssoUsername === user.ssoUsername);
58
- if (alreadyPresent)
59
- return members;
60
- const syntheticEntry = {
61
- firstName: (_a = user.firstName) !== null && _a !== void 0 ? _a : '',
62
- lastName: (_b = user.lastName) !== null && _b !== void 0 ? _b : '',
63
- isOrgAdmin: true,
64
- access: true,
65
- write: false,
66
- isDefault: defaultCaseGroupId === selectedGroup.groupNum,
67
- ssoUsername: user.ssoUsername,
68
- email: (_c = user.email) !== null && _c !== void 0 ? _c : '',
69
- contactSfId: (_d = user.id) !== null && _d !== void 0 ? _d : '',
70
- memberRecordId: '',
71
- };
72
- return [...members, syntheticEntry];
73
- }, [groupUsers, loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data, selectedGroup, defaultCaseGroupId]);
74
- const canManageCaseGroups = ability.can(resourceActions.CREATE, resources.CASE_GROUPS);
75
- const [isAddMembersModalOpen, setIsAddMembersModalOpen] = useState(false);
76
- const [memberToRemove, setMemberToRemove] = useState(null);
77
- const { deleteMember, loading: isDeleting } = useDeleteCaseGroupMember();
78
- // TODO: Uncomment when updateUsers is migrated to GraphQL
79
- // function onPermissionError(error: Error, user: IGroupUser) {
80
- // setData([...data]);
81
- // const message = t(`Could not change permission for {{user}}: {{error}}`, {
82
- // user: `${user.firstName} ${user.lastName}`,
83
- // error: error.message,
84
- // });
85
- // ToastNotification.addDangerMessage(message);
86
- // }
28
+ const { clearResponse, isFetching, request, data: response, } = useFetch(publicApi.caseGroups.getCaseGroupUsers);
29
+ const groupUsers = useMemo(() => response || [], [response]);
30
+ // errors
31
+ function onPermissionError(error, user) {
32
+ setData([...data]);
33
+ const message = t(`Could not change permission for {{user}}: {{error}}`, {
34
+ user: `${user.firstName} ${user.lastName}`,
35
+ error: error.message,
36
+ });
37
+ ToastNotification.addDangerMessage(message);
38
+ }
87
39
  // set and sort fetched data.
88
- const [initialData, setInitialData] = useState(membersWithOrgAdmin);
89
- const [data, setData] = useState(membersWithOrgAdmin);
90
- useEffect(() => setAllData(membersWithOrgAdmin || []), [membersWithOrgAdmin]);
40
+ const [initialData, setInitialData] = useState(groupUsers);
41
+ const [data, setData] = useState(groupUsers);
42
+ useEffect(() => setAllData(response || []), [response]);
91
43
  function setAllData(users) {
92
44
  setInitialData(users);
93
45
  setData(users);
@@ -106,63 +58,21 @@ export const ManageGroupUsers = () => {
106
58
  return tempUser;
107
59
  }));
108
60
  };
109
- const onDefaultToggleSuccess = (user, isChecked) => {
110
- var _a;
111
- if (user.ssoUsername !== ((_a = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _a === void 0 ? void 0 : _a.ssoUsername) || !selectedGroup)
112
- return;
113
- const groupId = isChecked ? selectedGroup.groupNum : null;
114
- const updatedLoggedInUserData = Object.assign(Object.assign({}, loggedInUser.data), { defaultCaseGroup: groupId });
115
- dispatchToGlobalMetadataReducer({
116
- type: GlobalMetadataReducerConstants.setLoggedInUser,
117
- payload: {
118
- loggedInUser: Object.assign(Object.assign({}, loggedInUser), { data: updatedLoggedInUserData }),
119
- },
120
- });
121
- if (caseGroups === null || caseGroups === void 0 ? void 0 : caseGroups.data) {
122
- const updatedGroups = caseGroups.data.map((group) => (Object.assign(Object.assign({}, group), { isDefault: groupId !== null && group.groupNum === groupId })));
123
- dispatchToGlobalMetadataReducer({
124
- type: GlobalMetadataReducerConstants.setCaseGroups,
125
- payload: {
126
- caseGroups: Object.assign(Object.assign({}, caseGroups), { data: updatedGroups }),
127
- },
128
- });
129
- }
130
- };
131
61
  const onGroupSelect = (group) => __awaiter(void 0, void 0, void 0, function* () {
132
62
  setSelectedGroup(group);
133
63
  if (group) {
134
- fetchMembers(group.groupNum);
64
+ request(loggedInUsersAccount.data.accountNumber, group.groupNum);
135
65
  }
136
66
  else {
137
- setAllData([]);
138
- }
139
- });
140
- const handleRemoveMember = () => __awaiter(void 0, void 0, void 0, function* () {
141
- if (!(memberToRemove === null || memberToRemove === void 0 ? void 0 : memberToRemove.memberRecordId))
142
- return;
143
- try {
144
- yield deleteMember(memberToRemove.memberRecordId);
145
- ToastNotification.addSuccessMessage(t('{{name}} has been removed from the group', {
146
- name: `${memberToRemove.firstName} ${memberToRemove.lastName}`,
147
- }));
148
- refetch();
149
- }
150
- catch (error) {
151
- ToastNotification.addDangerMessage(t('Could not remove member from group: {{message}}', {
152
- message: error instanceof Error ? error.message : String(error),
153
- }));
154
- }
155
- finally {
156
- setMemberToRemove(null);
67
+ clearResponse();
157
68
  }
158
69
  });
159
- // TODO: Uncomment when updateUsers is migrated to GraphQL
160
- // function onPermissionsChange(user: IGroupUser) {
161
- // const initialUsers = initialData.map((value) => (value.ssoUsername === user.ssoUsername ? user : value));
162
- // const users = data.map((value) => (value.ssoUsername === user.ssoUsername ? user : value));
163
- // setInitialData(initialUsers);
164
- // setData(users);
165
- // }
70
+ function onPermissionsChange(user) {
71
+ const initialUsers = initialData.map((value) => (value.ssoUsername === user.ssoUsername ? user : value));
72
+ const users = data.map((value) => (value.ssoUsername === user.ssoUsername ? user : value));
73
+ setInitialData(initialUsers);
74
+ setData(users);
75
+ }
166
76
  const columns = [
167
77
  {
168
78
  accessor: (user) => user.firstName,
@@ -182,38 +92,16 @@ export const ManageGroupUsers = () => {
182
92
  id: 'sso-username',
183
93
  title: t('Login'),
184
94
  },
185
- // TODO: Uncomment when updateUsers is migrated to GraphQL
186
- // {
187
- // id: 'permissions',
188
- // title: t('Permissions'),
189
- // cell: (user) =>
190
- // user.isOrgAdmin ? (
191
- // t('Admin/Full access')
192
- // ) : (
193
- // <GroupUserPermissionsSelect
194
- // onChange={onPermissionsChange}
195
- // account={loggedInUsersAccount.data}
196
- // group={selectedGroup}
197
- // users={data}
198
- // user={user}
199
- // onError={onPermissionError}
200
- // />
201
- // ),
202
- // },
203
- ...(canManageCaseGroups
204
- ? [
205
- {
206
- id: 'default',
207
- title: t('Default group'),
208
- cell: (user, index) => (React.createElement(DefaultGroupSwitch, { id: `${index}`, onToggle: onDefaultToggle, onToggleSuccess: onDefaultToggleSuccess, group: selectedGroup, user: user })),
209
- },
210
- {
211
- id: 'remove',
212
- title: '',
213
- cell: (user) => (React.createElement(RemoveMemberButton, { user: user, onRemove: setMemberToRemove, isDisabled: isDeleting })),
214
- },
215
- ]
216
- : []),
95
+ {
96
+ id: 'permissions',
97
+ title: t('Permissions'),
98
+ cell: (user) => user.isOrgAdmin ? (t('Admin/Full access')) : (React.createElement(GroupUserPermissionsSelect, { onChange: onPermissionsChange, account: loggedInUsersAccount.data, group: selectedGroup, users: data, user: user, onError: onPermissionError })),
99
+ },
100
+ {
101
+ id: 'default',
102
+ title: t('Default group'),
103
+ cell: (user, index) => (React.createElement(DefaultGroupSwitch, { id: `${index}`, onToggle: onDefaultToggle, group: selectedGroup, user: user })),
104
+ },
217
105
  ];
218
106
  // filter out search query.
219
107
  const [userSearch, setUserSearch] = useState('');
@@ -233,12 +121,12 @@ export const ManageGroupUsers = () => {
233
121
  else {
234
122
  setData(initialData);
235
123
  }
236
- }, [initialData, userSearch, setData, previousUserSearch, membersWithOrgAdmin]);
124
+ }, [initialData, userSearch, setData, previousUserSearch, groupUsers]);
237
125
  useEffect(() => {
238
126
  if (location.pathname !== '/manage/groups') {
239
127
  return;
240
128
  }
241
- setAllData(membersWithOrgAdmin || []);
129
+ setAllData(response || []);
242
130
  // eslint-disable-next-line react-hooks/exhaustive-deps
243
131
  }, [location.pathname, loggedInUsersAccount.data]);
244
132
  return (React.createElement(React.Fragment, null,
@@ -246,20 +134,11 @@ export const ManageGroupUsers = () => {
246
134
  React.createElement("h2", { className: "pf-v6-u-pb-sm" }, t('Groups')),
247
135
  React.createElement("p", null, t('To filter cases while searching, add or edit groups.'))),
248
136
  React.createElement("div", { className: "toolbar pf-v6-u-justify-content-space-between" },
249
- React.createElement(GroupSelect, { isDisabled: isFetching || disableGroupSelect, onSelect: onGroupSelect, onAddMembers: () => setIsAddMembersModalOpen(true) }),
137
+ React.createElement(GroupSelect, { isDisabled: isFetching || disableGroupSelect, onSelect: onGroupSelect }),
250
138
  React.createElement("span", { className: "toolbar-right" },
251
139
  React.createElement("label", { htmlFor: "account-group-filter" },
252
140
  React.createElement(Trans, null, "Filter by")),
253
141
  React.createElement(SearchInput, { className: "pf-v6-u-flex-grow-1 pf-v6-c-search-input pf-v6-u-background-color-100", id: "account-group-filter", value: userSearch, isDisabled: isFetching || !selectedGroup, onChange: (_, value) => setUserSearch(value), placeholder: t('Search for people in this group'), "aria-label": "Group search input", onClear: () => setUserSearch('') }))),
254
142
  React.createElement(ErrorBoundary, { errorMsgInfo: { message: t('There was an error loading group users list') } },
255
- React.createElement(ManageTable, { ariaLabel: t('Table to manage groups'), columns: columns, data: data, sortInfo: { column: 'first-name', direction: 'asc' }, isFetching: isFetching, isError: false, pagination: false })),
256
- memberToRemove && (React.createElement(Modal, { variant: ModalVariant.small, isOpen: true, onClose: () => setMemberToRemove(null), "aria-label": t('Confirm removal') },
257
- React.createElement(ModalHeader, { title: t('Remove member') }),
258
- React.createElement(ModalBody, null, t('Are you sure you want to remove {{name}} from this group?', {
259
- name: `${memberToRemove.firstName} ${memberToRemove.lastName}`,
260
- })),
261
- React.createElement(ModalFooter, null,
262
- React.createElement(Button, { variant: "danger", onClick: handleRemoveMember, isLoading: isDeleting, isDisabled: isDeleting }, t('Remove')),
263
- React.createElement(Button, { variant: "link", onClick: () => setMemberToRemove(null), isDisabled: isDeleting }, t('Cancel'))))),
264
- canManageCaseGroups && isAddMembersModalOpen && selectedGroup && (React.createElement(AddMembersModal, { group: selectedGroup, existingMembers: initialData, onSuccess: refetch, onClose: () => setIsAddMembersModalOpen(false) }))));
143
+ React.createElement(ManageTable, { ariaLabel: t('Table to manage groups'), columns: columns, data: data, sortInfo: { column: 'first-name', direction: 'asc' }, isFetching: isFetching, isError: false }))));
265
144
  };
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesACL.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesACL.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAKpD,wBAAgB,cAAc,sBAuF7B"}
1
+ {"version":3,"file":"PreferencesACL.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesACL.tsx"],"names":[],"mappings":"AASA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAKpD,wBAAgB,cAAc,sBAwF7B"}
@@ -11,14 +11,15 @@ import { accounts } from '@cee-eng/hydrajs';
11
11
  import { Card, CardBody, CardHeader, Spinner, Tooltip } from '@patternfly/react-core';
12
12
  import InfoCircleIcon from '@patternfly/react-icons/dist/js/icons/info-circle-icon';
13
13
  import { useFetch } from '@rh-support/components';
14
- import { GlobalMetadataStateContext } from '@rh-support/react-context';
14
+ import { fetchLoggedInUsersAccount, GlobalMetadataDispatchContext, GlobalMetadataStateContext, } from '@rh-support/react-context';
15
15
  import React, { useContext, useState } from 'react';
16
16
  import { Trans, useTranslation } from 'react-i18next';
17
17
  import { PreferenceSwitch } from '../components/PreferenceSwitch';
18
18
  export function PreferencesACL() {
19
19
  var _a;
20
20
  const { t } = useTranslation();
21
- const { globalMetadataState: { loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
21
+ const { globalMetadataState: { loggedInUsersAccount, loggedInUserJwtToken }, } = useContext(GlobalMetadataStateContext);
22
+ const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
22
23
  const [isAclActivated, setIsAclActivated] = useState((_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.hasGroupACLs);
23
24
  const [isAclLoading, setIsAclLoading] = useState(false);
24
25
  const { request: updateAcl } = useFetch(accounts.updateAcl);
@@ -26,7 +27,7 @@ export function PreferencesACL() {
26
27
  try {
27
28
  setIsAclLoading(true);
28
29
  yield updateAcl(!isAclActivated, loggedInUsersAccount.data.accountNumber);
29
- // TODO: migrate to GraphQL - fetchLoggedInUsersAccount(dispatchToGlobalMetadataReducer, loggedInUserJwtToken, true, apolloClient);
30
+ fetchLoggedInUsersAccount(dispatchToGlobalMetadataReducer, loggedInUserJwtToken, true);
30
31
  setIsAclActivated(!isAclActivated);
31
32
  }
32
33
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesCaseCreate.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseCreate.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAA2D,MAAM,OAAO,CAAC;AAkBhF,UAAU,MAAM;CAAG;AACnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBAwNlD"}
1
+ {"version":3,"file":"PreferencesCaseCreate.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseCreate.tsx"],"names":[],"mappings":"AAcA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAO/D,UAAU,MAAM;CAAG;AACnB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,qBA0MlD"}
@@ -7,74 +7,62 @@ 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
+ import { publicApi } from '@cee-eng/hydrajs';
11
11
  import { Card, CardBody, CardHeader, SelectOption } from '@patternfly/react-core';
12
- import { ToastNotification } from '@rh-support/components';
13
- import { fetchCaseGroupsForAccount, fetchCaseGroupsForSSO, fetchLanguageMetadata, GlobalMetadataDispatchContext, GlobalMetadataReducerConstants, GlobalMetadataStateContext, } from '@rh-support/react-context';
12
+ import { ToastNotification, useFetch } from '@rh-support/components';
13
+ import { fetchLanguageMetadata, GlobalMetadataDispatchContext, GlobalMetadataReducerConstants, GlobalMetadataStateContext, } from '@rh-support/react-context';
14
14
  import { haventLoadedMetadata, PreferredLanguages } from '@rh-support/utils';
15
15
  import isEmpty from 'lodash/isEmpty';
16
16
  import map from 'lodash/map';
17
- import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
17
+ import React, { useContext, useEffect, useState } from 'react';
18
18
  import { Trans, useTranslation } from 'react-i18next';
19
- import { useToggleDefaultGroup } from '../../../hooks/useCaseGroupGraphQL';
19
+ import { useLocation } from 'react-router-dom';
20
20
  import { useUserPreferences } from '../../../hooks/useUserPreferences';
21
21
  import { PreferenceSelect } from '../components/PreferenceSelect';
22
- const UNGROUPED_CASE_LABEL = 'Ungrouped Case';
23
- function resolveDefaultGroupLabel(defaultCaseGroupId, groupList) {
24
- var _a;
25
- if (!defaultCaseGroupId || defaultCaseGroupId === '-1') {
26
- return UNGROUPED_CASE_LABEL;
27
- }
28
- const defaultGroup = groupList.find((group) => group.groupNum === defaultCaseGroupId);
29
- return (_a = defaultGroup === null || defaultGroup === void 0 ? void 0 : defaultGroup.name) !== null && _a !== void 0 ? _a : UNGROUPED_CASE_LABEL;
30
- }
31
22
  export function PreferencesCaseCreate(props) {
32
- var _a, _b, _c, _d, _e, _f;
33
23
  const { t } = useTranslation();
34
- const apolloClient = useApolloClient();
35
- const { globalMetadataState: { caseGroups, caseLanguages, loggedInUser, loggedInUserJwtToken, loggedInUsersAccount }, } = useContext(GlobalMetadataStateContext);
24
+ const location = useLocation();
25
+ const { globalMetadataState: { caseGroups, caseLanguages, loggedInUserJwtToken, loggedInUserRights, loggedInUsersAccount, }, } = useContext(GlobalMetadataStateContext);
36
26
  const dispatchToGlobalMetadataReducer = useContext(GlobalMetadataDispatchContext);
37
27
  const languageConst = caseLanguages.data;
38
- const { toggleDefault } = useToggleDefaultGroup();
39
- const groupList = useMemo(() => caseGroups.data || [], [caseGroups.data]);
40
- const contactId = (_a = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _a === void 0 ? void 0 : _a.id;
41
- const defaultCaseGroupId = (_c = (_b = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _b === void 0 ? void 0 : _b.defaultCaseGroup) !== null && _c !== void 0 ? _c : null;
42
- const salesforceAccountId = (_d = loggedInUsersAccount.data) === null || _d === void 0 ? void 0 : _d.salesforceAccountId;
43
- const loggedInContactId = (_e = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _e === void 0 ? void 0 : _e.id;
44
- const loggedInIsOrgAdmin = (_f = loggedInUser === null || loggedInUser === void 0 ? void 0 : loggedInUser.data) === null || _f === void 0 ? void 0 : _f.isOrgAdmin;
45
- const hasFetchedCaseGroups = useRef(false);
46
- const updateDefaultGroupPref = (groupId) => __awaiter(this, void 0, void 0, function* () {
47
- if (!contactId) {
48
- ToastNotification.addDangerMessage(t('Cannot update default group: contact information is missing'));
49
- throw new Error('Missing contact id');
28
+ const getDefaultGroupFetch = useFetch(publicApi.caseGroups.getCaseGroupsForSSO, {
29
+ propgateErrors: true,
30
+ });
31
+ const toggleDefaultGroupFetch = useFetch(publicApi.caseGroups.toggleDefaultGroup, {
32
+ propgateErrors: true,
33
+ });
34
+ const grabDefaultGroupList = (ssoUser) => __awaiter(this, void 0, void 0, function* () {
35
+ try {
36
+ let list = yield getDefaultGroupFetch.request(ssoUser);
37
+ setUserDefaultGroupList(list);
38
+ let filteredDefaultGroup = (list ? list : []).filter((group) => group.isDefault === true);
39
+ if (!isEmpty(filteredDefaultGroup)) {
40
+ setOriginalDefaultGroup(filteredDefaultGroup[0].name);
41
+ }
42
+ else {
43
+ setOriginalDefaultGroup('Ungrouped Case');
44
+ }
45
+ }
46
+ catch (error) {
47
+ console.log(error);
50
48
  }
49
+ });
50
+ const updateDefaultGroupPref = (groupNum) => __awaiter(this, void 0, void 0, function* () {
51
+ var _a;
51
52
  try {
52
- yield toggleDefault(contactId, groupId);
53
- const updatedGroups = groupList.map((group) => (Object.assign(Object.assign({}, group), { isDefault: groupId !== null && group.groupNum === groupId })));
53
+ yield toggleDefaultGroupFetch.request(groupNum, loggedInUserRights.data.getSSOUsername(), true, loggedInUsersAccount.data.secureSupport);
54
+ const updatedGroups = (caseGroups.data || []).map((group) => (Object.assign(Object.assign({}, group), { isDefault: group.groupNum === groupNum })));
54
55
  dispatchToGlobalMetadataReducer({
55
56
  type: GlobalMetadataReducerConstants.setCaseGroups,
56
57
  payload: {
57
58
  caseGroups: Object.assign(Object.assign({}, caseGroups), { data: updatedGroups }),
58
59
  },
59
60
  });
60
- const updatedLoggedInUserData = Object.assign(Object.assign({}, loggedInUser.data), { defaultCaseGroup: groupId });
61
- dispatchToGlobalMetadataReducer({
62
- type: GlobalMetadataReducerConstants.setLoggedInUser,
63
- payload: {
64
- loggedInUser: Object.assign(Object.assign({}, loggedInUser), { data: updatedLoggedInUserData }),
65
- },
66
- });
67
- setOriginalDefaultGroup(resolveDefaultGroupLabel(groupId, updatedGroups));
61
+ setUserDefaultGroupList(updatedGroups);
62
+ setOriginalDefaultGroup(((_a = updatedGroups.find((g) => g.isDefault)) === null || _a === void 0 ? void 0 : _a.name) || 'Ungrouped Case');
68
63
  }
69
64
  catch (error) {
70
- const message = String((error === null || error === void 0 ? void 0 : error.message) || '');
71
- if (message.includes('insufficient access rights')) {
72
- ToastNotification.addDangerMessage(t('You do not have permission to change the default group'));
73
- }
74
- else if (message !== 'Missing contact id') {
75
- ToastNotification.addDangerMessage(t('Failed to update default group'));
76
- }
77
- throw error;
65
+ console.log(error);
78
66
  }
79
67
  });
80
68
  const languagesList = map(languageConst, (cl) => ({
@@ -83,6 +71,7 @@ export function PreferencesCaseCreate(props) {
83
71
  }));
84
72
  const [originalPreferredLanguage, setOriginalPreferredLanguage] = useState('');
85
73
  const [originalDefaultGroup, setOriginalDefaultGroup] = useState('');
74
+ const [userDefaultGroupList, setUserDefaultGroupList] = useState();
86
75
  const { getPreferredLanguage, updatePreferredLanguage } = useUserPreferences();
87
76
  const preferredLangTitleId = 'preferred-language-select';
88
77
  const defaultGroupTitleId = 'default-group-select';
@@ -106,13 +95,18 @@ export function PreferencesCaseCreate(props) {
106
95
  }
107
96
  });
108
97
  const onDefaultGroupSelect = (event, selection) => __awaiter(this, void 0, void 0, function* () {
109
- if (selection === UNGROUPED_CASE_LABEL) {
110
- yield updateDefaultGroupPref(null);
111
- return;
98
+ try {
99
+ if (selection === 'Ungrouped Case') {
100
+ updateDefaultGroupPref('-1');
101
+ }
102
+ if (!isEmpty(userDefaultGroupList)) {
103
+ let filteredGroupSelect = userDefaultGroupList.filter((group) => group.name === selection);
104
+ yield updateDefaultGroupPref(filteredGroupSelect[0].groupNum);
105
+ setOriginalDefaultGroup(filteredGroupSelect[0].name);
106
+ }
112
107
  }
113
- const selectedGroup = groupList.find((group) => group.name === selection);
114
- if (selectedGroup) {
115
- yield updateDefaultGroupPref(selectedGroup.groupNum);
108
+ catch (error) {
109
+ console.log(error);
116
110
  }
117
111
  });
118
112
  useEffect(() => {
@@ -130,31 +124,22 @@ export function PreferencesCaseCreate(props) {
130
124
  // eslint-disable-next-line react-hooks/exhaustive-deps
131
125
  }, [caseLanguages, caseGroups, dispatchToGlobalMetadataReducer, loggedInUserJwtToken]);
132
126
  useEffect(() => {
133
- if (loggedInUser.isFetching)
134
- return;
135
- setOriginalDefaultGroup(resolveDefaultGroupLabel(defaultCaseGroupId, groupList));
136
- }, [defaultCaseGroupId, groupList, loggedInUser.isFetching]);
137
- useEffect(() => {
138
- if (haventLoadedMetadata(caseLanguages)) {
139
- fetchLanguageMetadata(dispatchToGlobalMetadataReducer, apolloClient);
140
- }
127
+ grabDefaultGroupList(loggedInUserRights.data.getSSOUsername());
141
128
  // eslint-disable-next-line react-hooks/exhaustive-deps
142
- }, [caseLanguages, apolloClient]);
129
+ }, [loggedInUserRights, caseGroups]);
143
130
  useEffect(() => {
144
- var _a;
145
- if (!salesforceAccountId || loggedInUser.isFetching || !contactId)
131
+ if (location.pathname !== '/manage/preferences') {
146
132
  return;
147
- if (hasFetchedCaseGroups.current)
148
- return;
149
- hasFetchedCaseGroups.current = true;
150
- if ((_a = loggedInUsersAccount.data) === null || _a === void 0 ? void 0 : _a.isInternal) {
151
- fetchCaseGroupsForAccount(dispatchToGlobalMetadataReducer, apolloClient, salesforceAccountId, defaultCaseGroupId, loggedInContactId, loggedInIsOrgAdmin);
152
133
  }
153
- else {
154
- fetchCaseGroupsForSSO(dispatchToGlobalMetadataReducer, apolloClient, salesforceAccountId, defaultCaseGroupId, loggedInContactId, loggedInIsOrgAdmin);
134
+ grabDefaultGroupList(loggedInUserRights.data.getSSOUsername());
135
+ // eslint-disable-next-line react-hooks/exhaustive-deps
136
+ }, [location.pathname]);
137
+ useEffect(() => {
138
+ if (haventLoadedMetadata(caseLanguages)) {
139
+ fetchLanguageMetadata(dispatchToGlobalMetadataReducer);
155
140
  }
156
141
  // eslint-disable-next-line react-hooks/exhaustive-deps
157
- }, [salesforceAccountId, loggedInUser.isFetching, contactId, defaultCaseGroupId]);
142
+ }, [caseLanguages]);
158
143
  return (React.createElement(Card, { variant: "secondary", className: "preference-card" },
159
144
  React.createElement(CardHeader, null,
160
145
  React.createElement("h3", null,
@@ -166,5 +151,5 @@ export function PreferencesCaseCreate(props) {
166
151
  React.createElement("p", { className: "form-instructions" },
167
152
  React.createElement(Trans, null, "Preferred language will impact future cases, not existing ones."))),
168
153
  React.createElement("div", { className: "form-group" },
169
- React.createElement(PreferenceSelect, { label: "Default group", id: defaultGroupTitleId, onSelect: onDefaultGroupSelect, selections: originalDefaultGroup }, [UNGROUPED_CASE_LABEL, ...groupList.map((group) => group.name)].map((name, index) => (React.createElement(SelectOption, { key: index, value: name })))))))));
154
+ React.createElement(PreferenceSelect, { label: "Default group", id: defaultGroupTitleId, onSelect: onDefaultGroupSelect, selections: originalDefaultGroup }, (userDefaultGroupList ? userDefaultGroupList : []).map((option, index) => (React.createElement(SelectOption, { key: index, value: option.name })))))))));
170
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PreferencesCaseView.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseView.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAO/D,UAAU,MAAM;CAAG;AAEnB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBA0OhD"}
1
+ {"version":3,"file":"PreferencesCaseView.d.ts","sourceRoot":"","sources":["../../../../../src/components/ManagePreferences/sections/PreferencesCaseView.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAO/D,UAAU,MAAM;CAAG;AAEnB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,qBAqShD"}