Skip to content

Commit 0c19860

Browse files
committed
refactor code according to the comments
1 parent 47c05d5 commit 0c19860

19 files changed

+58
-65
lines changed

lib/Donors/DonorsContainer.js

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
import { map, noop, sortBy } from 'lodash';
1+
import {
2+
keyBy,
3+
map,
4+
noop,
5+
sortBy,
6+
} from 'lodash';
27
import PropTypes from 'prop-types';
38
import { useMemo } from 'react';
49
import { useIntl } from 'react-intl';
@@ -28,23 +33,18 @@ export function DonorsContainer({
2833
const intl = useIntl();
2934
const canViewOrganizations = stripes.hasPerm('ui-organizations.view');
3035

31-
const donorsMap = useMemo(() => {
32-
return donors.reduce((acc, contact) => {
33-
acc[contact.id] = contact;
34-
35-
return acc;
36-
}, {});
37-
}, [donors]);
36+
const donorsMap = useMemo(() => keyBy(donors, 'id'), [donors]);
3837

3938
const listOfDonors = useMemo(() => (fields.value || [])
40-
.map((contactId, _index) => {
39+
.reduce((acc, contactId, _index) => {
4140
const contact = donorsMap?.[contactId];
4241

43-
return {
44-
...(contact || { isDeleted: true }),
45-
_index,
46-
};
47-
}), [donorsMap, fields.value]);
42+
if (contact?.id) {
43+
acc.push({ ...contact, _index });
44+
}
45+
46+
return acc;
47+
}, []), [donorsMap, fields.value]);
4848

4949
const contentData = useMemo(() => sortBy(listOfDonors, [({ name }) => name?.toLowerCase()]), [listOfDonors]);
5050

lib/PrivilegedDonorContacts/PrivilegedDonorContactsContainer.js renamed to lib/PrivilegedDonorContacts/ContactsContainer.js

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
1-
import { map, sortBy } from 'lodash';
1+
import {
2+
keyBy,
3+
map,
4+
sortBy,
5+
} from 'lodash';
26
import PropTypes from 'prop-types';
37
import { useMemo } from 'react';
48
import { useIntl } from 'react-intl';
59

10+
import { useCategories } from '../hooks';
611
import { acqRowFormatter } from '../utils';
712
import { defaultContainerVisibleColumns } from './constants';
8-
import { useCategories } from './hooks';
913
import { PrivilegedDonorContactsList } from './PrivilegedDonorContactsList';
1014
import { PrivilegedDonorContactsLookup } from './PrivilegedDonorContactsLookup';
1115
import {
1216
getContactsUrl,
1317
getResultsFormatter,
1418
} from './utils';
1519

16-
export function PrivilegedDonorContactsContainer({
20+
export function ContactsContainer({
1721
columnMapping,
1822
columnWidths,
1923
contacts,
@@ -23,31 +27,25 @@ export function PrivilegedDonorContactsContainer({
2327
orgId,
2428
setContactIds,
2529
searchLabel,
26-
selectedContactIds,
2730
showTriggerButton,
2831
visibleColumns,
2932
...rest
3033
}) {
3134
const intl = useIntl();
3235
const { categories } = useCategories();
3336

34-
const contactsMap = useMemo(() => {
35-
return contacts.reduce((acc, contact) => {
36-
acc[contact.id] = contact;
37-
38-
return acc;
39-
}, {});
40-
}, [contacts]);
37+
const contactsMap = useMemo(() => keyBy(contacts, 'id'), [contacts]);
4138

4239
const listOfDonors = useMemo(() => (fields.value || [])
43-
.map((contactId, _index) => {
40+
.reduce((acc, contactId, _index) => {
4441
const contact = contactsMap?.[contactId];
4542

46-
return {
47-
...(contact || { isDeleted: true }),
48-
_index,
49-
};
50-
}), [contactsMap, fields.value]);
43+
if (contact?.id) {
44+
acc.push({ ...contact, _index });
45+
}
46+
47+
return acc;
48+
}, []), [contactsMap, fields.value]);
5149

5250
const contentData = useMemo(() => sortBy(listOfDonors, [({ lastName }) => lastName?.toLowerCase()]), [listOfDonors]);
5351

@@ -96,15 +94,14 @@ export function PrivilegedDonorContactsContainer({
9694
searchLabel={searchLabel}
9795
columnWidths={columnWidths}
9896
orgId={orgId}
99-
selectedContactIds={selectedContactIds}
10097
/>
10198
)
10299
}
103100
</>
104101
);
105102
}
106103

107-
PrivilegedDonorContactsContainer.propTypes = {
104+
ContactsContainer.propTypes = {
108105
columnMapping: PropTypes.object,
109106
columnWidths: PropTypes.object,
110107
contacts: PropTypes.arrayOf(PropTypes.object),
@@ -113,13 +110,12 @@ PrivilegedDonorContactsContainer.propTypes = {
113110
id: PropTypes.string,
114111
orgId: PropTypes.string,
115112
searchLabel: PropTypes.node,
116-
selectedContactIds: PropTypes.arrayOf(PropTypes.string),
117113
setContactIds: PropTypes.func.isRequired,
118114
showTriggerButton: PropTypes.bool,
119115
visibleColumns: PropTypes.arrayOf(PropTypes.string),
120116
};
121117

122-
PrivilegedDonorContactsContainer.defaultProps = {
118+
ContactsContainer.defaultProps = {
123119
showTriggerButton: true,
124120
visibleColumns: defaultContainerVisibleColumns,
125121
};

lib/PrivilegedDonorContacts/PrivilegedDonorContactsContainer.test.js renamed to lib/PrivilegedDonorContacts/ContactsContainer.test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import user from '@testing-library/user-event';
44

55
import stripesFinalForm from '@folio/stripes/final-form';
66

7-
import { PrivilegedDonorContactsContainer } from './PrivilegedDonorContactsContainer';
8-
import { useCategories } from './hooks';
7+
import { useCategories } from '../hooks';
8+
import { ContactsContainer } from './ContactsContainer';
99

1010
const mockVendor = { id: '1', name: 'Amazon' };
1111

@@ -38,7 +38,7 @@ jest.mock('./PrivilegedDonorContactsLookup', () => ({
3838

3939
const setContactIds = jest.fn();
4040

41-
jest.mock('./hooks', () => ({
41+
jest.mock('../hooks', () => ({
4242
useCategories: jest.fn().mockReturnValue({
4343
categories: [],
4444
isLoading: false,
@@ -65,7 +65,7 @@ const defaultProps = {
6565

6666
const renderForm = (props = {}) => (
6767
<form>
68-
<PrivilegedDonorContactsContainer
68+
<ContactsContainer
6969
{...defaultProps}
7070
{...props}
7171
/>

lib/PrivilegedDonorContacts/PrivilegedDonorContacts.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010

1111
import { defaultColumnMapping } from './constants';
1212
import { useFetchPrivilegedContacts } from './hooks';
13-
import { PrivilegedDonorContactsContainer } from './PrivilegedDonorContactsContainer';
13+
import { ContactsContainer } from './ContactsContainer';
1414

1515
export function PrivilegedDonorContacts({ name, privilegedContactIds, onChange, ...rest }) {
1616
const [contactIds, setContactIds] = useState(privilegedContactIds);
@@ -31,11 +31,10 @@ export function PrivilegedDonorContacts({ name, privilegedContactIds, onChange,
3131
<FieldArray
3232
name={name}
3333
id={name}
34-
component={PrivilegedDonorContactsContainer}
34+
component={ContactsContainer}
3535
setContactIds={onSetContactIds}
3636
contacts={contacts}
3737
loading={isLoading}
38-
selectedContactIds={contactIds}
3938
{...rest}
4039
/>
4140
</Col>

lib/PrivilegedDonorContacts/PrivilegedDonorContacts.test.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,12 @@ import stripesFinalForm from '@folio/stripes/final-form';
77
import { useFetchPrivilegedContacts } from './hooks';
88
import { PrivilegedDonorContacts } from './PrivilegedDonorContacts';
99

10+
jest.mock('../hooks', () => ({
11+
useCategories: jest.fn().mockReturnValue({ categories: [] }),
12+
}));
13+
1014
jest.mock('./hooks', () => ({
1115
useFetchPrivilegedContacts: jest.fn(),
12-
useCategories: jest.fn().mockReturnValue({ categories: [] }),
1316
}));
1417

1518
jest.mock('./PrivilegedDonorContactsLookup', () => ({

lib/PrivilegedDonorContacts/PrivilegedDonorContactsList.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import { useIntl } from 'react-intl';
44

55
import { MultiColumnList } from '@folio/stripes/components';
66

7+
import { useCategories } from '../hooks';
78
import { acqRowFormatter } from '../utils';
89
import {
910
alignRowProps,
1011
defaultColumnMapping,
1112
defaultVisibleColumns,
1213
} from './constants';
13-
import { useCategories } from './hooks';
1414
import { getResultsFormatter } from './utils';
1515

1616
export const PrivilegedDonorContactsList = ({

lib/PrivilegedDonorContacts/PrivilegedDonorContactsList.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { render, screen } from '@testing-library/react';
33

44
import { PrivilegedDonorContactsList } from './PrivilegedDonorContactsList';
55

6-
jest.mock('./hooks', () => ({
6+
jest.mock('../hooks', () => ({
77
useCategories: jest.fn().mockReturnValue({
88
categories: [],
99
isLoading: false,

lib/PrivilegedDonorContacts/PrivilegedDonorContactsLookup.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export const PrivilegedDonorContactsLookup = ({
1414
orgId,
1515
searchButtonStyle,
1616
searchLabel,
17-
selectedContactIds,
1817
}) => {
1918
const stripes = useStripes();
2019

@@ -44,7 +43,6 @@ export const PrivilegedDonorContactsLookup = ({
4443
addContacts={onAddContacts}
4544
renderNewContactBtn={renderNewContactBtn}
4645
isPrivilegedContactEnabled
47-
selectedContactIds={selectedContactIds}
4846
>
4947
<span data-test-add-contact>
5048
<FormattedMessage id="stripes-acq-components.privilegedContacts.noFindContactPlugin" />
@@ -58,11 +56,9 @@ PrivilegedDonorContactsLookup.propTypes = {
5856
searchLabel: PropTypes.node,
5957
searchButtonStyle: PropTypes.string,
6058
orgId: PropTypes.string,
61-
selectedContactIds: PropTypes.arrayOf(PropTypes.string),
6259
};
6360

6461
PrivilegedDonorContactsLookup.defaultProps = {
6562
searchLabel: <FormattedMessage id="stripes-acq-components.privilegedContacts.button.addDonor" />,
6663
searchButtonStyle: 'default',
67-
selectedContactIds: [],
6864
};
Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,2 @@
11
export const DEFAULT_DATA = [];
22
export const PRIVILEGED_CONTACTS_API = 'organizations-storage/privileged-contacts';
3-
export const CATEGORIES_API = 'organizations-storage/categories';
4-
5-
export const UNCATEGORIZED_VALUE = 'Uncategorized';
6-
7-
export const VENDOR_DEFAULT_CATEGORIES = {
8-
'Customer Service': 'customerService',
9-
'Payments': 'payments',
10-
'Returns': 'returns',
11-
'Shipments': 'shipments',
12-
[UNCATEGORIZED_VALUE]: 'uncategorized',
13-
};
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
11
export { useFetchPrivilegedContacts } from './useFetchPrivilegedContacts';
2-
export { useCategories } from './useCategories';
3-
export { useTranslatedCategories } from './useTranslatedCategories';

0 commit comments

Comments
 (0)