From 6344233a3a22f90cb5aaa8379097fa553d3cc2d6 Mon Sep 17 00:00:00 2001
From: Alisher Musurmonov <alisher_musurmonov1@epam.com>
Date: Thu, 16 Nov 2023 15:11:05 +0500
Subject: [PATCH] improve useFetchDonors hook

---
 lib/Donors/Donors.js                              |  2 +-
 lib/Donors/DonorsContainer.js                     | 10 +---------
 lib/Donors/DonorsLookup.js                        |  2 --
 lib/Donors/hooks/useFetchDonors/useFetchDonors.js |  7 +++++--
 4 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/lib/Donors/Donors.js b/lib/Donors/Donors.js
index 32d34c5b..69365a09 100644
--- a/lib/Donors/Donors.js
+++ b/lib/Donors/Donors.js
@@ -14,7 +14,7 @@ import { useFetchDonors } from './hooks';
 
 export function Donors({ name, donorOrganizationIds, onChange, ...rest }) {
   const [donorIds, setDonorIds] = useState(donorOrganizationIds);
-  const { donors, isLoading } = useFetchDonors(donorIds);
+  const { donors, isLoading } = useFetchDonors(donorIds, { keepPreviousData: true });
 
   useEffect(() => {
     setDonorIds(donorOrganizationIds);
diff --git a/lib/Donors/DonorsContainer.js b/lib/Donors/DonorsContainer.js
index 319868f3..25286c6a 100644
--- a/lib/Donors/DonorsContainer.js
+++ b/lib/Donors/DonorsContainer.js
@@ -5,10 +5,7 @@ import { useIntl } from 'react-intl';
 
 import { useStripes } from '@folio/stripes/core';
 
-import {
-  defaultContainerVisibleColumns,
-  pluginVisibleColumns,
-} from './constants';
+import { defaultContainerVisibleColumns } from './constants';
 import { DonorsList } from './DonorsList';
 import { DonorsLookup } from './DonorsLookup';
 import { getDonorsFormatter } from './utils';
@@ -21,7 +18,6 @@ export function DonorsContainer({
   formatter,
   id,
   onRemove,
-  pluginVisibleColumns: pluginVisibleColumnsProp,
   setDonorIds,
   searchLabel,
   showTriggerButton,
@@ -84,8 +80,6 @@ export function DonorsContainer({
             onAddDonors={onAddDonors}
             name={id}
             searchLabel={searchLabel}
-            visibleColumns={pluginVisibleColumnsProp}
-            {...rest}
           />
         )
       }
@@ -105,12 +99,10 @@ DonorsContainer.propTypes = {
   setDonorIds: PropTypes.func.isRequired,
   showTriggerButton: PropTypes.bool,
   visibleColumns: PropTypes.arrayOf(PropTypes.string),
-  pluginVisibleColumns: PropTypes.arrayOf(PropTypes.string),
 };
 
 DonorsContainer.defaultProps = {
   onRemove: noop,
   showTriggerButton: true,
   visibleColumns: defaultContainerVisibleColumns,
-  pluginVisibleColumns,
 };
diff --git a/lib/Donors/DonorsLookup.js b/lib/Donors/DonorsLookup.js
index 3a853834..51783418 100644
--- a/lib/Donors/DonorsLookup.js
+++ b/lib/Donors/DonorsLookup.js
@@ -21,7 +21,6 @@ export const DonorsLookup = ({
   onAddDonors,
   searchLabel,
   visibleColumns,
-  ...rest
 }) => {
   const stripes = useStripes();
 
@@ -44,7 +43,6 @@ export const DonorsLookup = ({
       visibleFilters={visibleFilters}
       isMultiSelect
       sortableColumns={sortableColumns}
-      {...rest}
     >
       <span data-test-add-donor>
         <FormattedMessage id="stripes-acq-components.donors.noFindOrganizationPlugin" />
diff --git a/lib/Donors/hooks/useFetchDonors/useFetchDonors.js b/lib/Donors/hooks/useFetchDonors/useFetchDonors.js
index ae7c10e1..6f9e5dd1 100644
--- a/lib/Donors/hooks/useFetchDonors/useFetchDonors.js
+++ b/lib/Donors/hooks/useFetchDonors/useFetchDonors.js
@@ -9,7 +9,7 @@ import { VENDORS_API } from '../../../constants';
 import { batchRequest } from '../../../utils';
 import { DEFAULT_DATA } from './constants';
 
-export const useFetchDonors = (donorOrganizationIds = DEFAULT_DATA) => {
+export const useFetchDonors = (donorOrganizationIds = DEFAULT_DATA, options = {}) => {
   const ky = useOkapiKy();
   const namespace = useNamespace({ key: 'fetch-donors-list' });
 
@@ -24,7 +24,10 @@ export const useFetchDonors = (donorOrganizationIds = DEFAULT_DATA) => {
         donorOrganizationIds,
       );
     },
-    { enabled: Boolean(donorOrganizationIds.length) },
+    {
+      enabled: Boolean(donorOrganizationIds.length),
+      ...options,
+    },
   );
 
   return ({