Skip to content

Commit e99da2b

Browse files
fix(bulk-import): removing extra apis call (#882)
* fix(bulk-import): removing extra apis call Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * adding yarn.lock Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * adding changeset Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * updating yarn.lock Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * using useDebounce Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * removing lodash.debaounce from dependency Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> * removing unused dependency Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com> --------- Signed-off-by: its-mitesh-kumar <itsmiteshkumar98@gmail.com>
1 parent c441de4 commit e99da2b

4 files changed

Lines changed: 29 additions & 9 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
'@red-hat-developer-hub/backstage-plugin-bulk-import': patch
3+
---
4+
5+
Improve Bulk Import UI performance by optimizing API call behavior:
6+
7+
- Prevent unnecessary API calls when switching between **Organizations** and **Repositories** tabs.
8+
- Avoid redundant calls when clicking on pagination controls without changing page or page size.
9+
- Suppress extraneous API requests triggered by random screen clicks.
10+
- Introduce **debouncing** to the search input to reduce network load during fast typing.
11+
12+
These changes reduce client-side overhead and improve the responsiveness of the Bulk Import page.

workspaces/bulk-import/plugins/bulk-import/src/components/AddRepositories/AddRepositoriesTable.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { useEffect, useState } from 'react';
18+
import { useDebounce } from 'react-use';
1819

1920
import Box from '@mui/material/Box';
2021
import Paper from '@mui/material/Paper';
@@ -40,11 +41,18 @@ export const AddRepositoriesTable = ({ title }: { title?: string }) => {
4041
setIsApprovalToolGitlab(values.approvalTool === ApprovalToolEnum.Gitlab);
4142
}, [values.approvalTool]);
4243
const [searchString, setSearchString] = useState<string>('');
44+
const [searchInput, setSearchInput] = useState<string>('');
4345
const [page, setPage] = useState<number>(0);
44-
const handleSearch = (str: string) => {
45-
setSearchString(str);
46-
setPage(0);
47-
};
46+
47+
useDebounce(
48+
() => {
49+
setSearchString(searchInput);
50+
setPage(0);
51+
},
52+
300,
53+
[searchInput],
54+
);
55+
4856
const { numberOfApprovalTools } = useNumberOfApprovalTools();
4957

5058
return (
@@ -61,7 +69,7 @@ export const AddRepositoriesTable = ({ title }: { title?: string }) => {
6169
title ||
6270
`Selected ${isApprovalToolGitlab ? 'projects' : 'repositories'}`
6371
}
64-
setSearchString={handleSearch}
72+
setSearchString={setSearchInput}
6573
onPageChange={setPage}
6674
isApprovalToolGitlab={isApprovalToolGitlab}
6775
/>

workspaces/bulk-import/plugins/bulk-import/src/hooks/useRepositories.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export const useRepositories = (
9999
} = useQuery(
100100
[options?.showOrganizations ? 'organizations' : 'repositories', options],
101101
() => fetchRepositories(options),
102-
{ refetchInterval: pollInterval || 60000 },
102+
{ refetchInterval: pollInterval || 60000, refetchOnWindowFocus: false },
103103
);
104104

105105
const prepareData = useMemo(() => {

workspaces/bulk-import/yarn.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13853,9 +13853,9 @@ __metadata:
1385313853
linkType: hard
1385413854

1385513855
"@types/lodash@npm:^4.14.151":
13856-
version: 4.17.13
13857-
resolution: "@types/lodash@npm:4.17.13"
13858-
checksum: d0bf8fbd950be71946e0076b30fd40d492293baea75f05931b6b5b906fd62583708c6229abdb95b30205ad24ce1ed2f48bc9d419364f682320edd03405cc0c7e
13856+
version: 4.17.17
13857+
resolution: "@types/lodash@npm:4.17.17"
13858+
checksum: cfa34a752f3c540a196e9f92dbaff93ae15fe4058da8cce1918dd9219076dc19eec33b043aae45865e2b3ef8234a845bb57366144ec8e52551e2bc3f119e04a1
1385913859
languageName: node
1386013860
linkType: hard
1386113861

0 commit comments

Comments
 (0)