@@ -23,10 +23,13 @@ import type {
2323 RepositoryProjectPathConfig ,
2424} from 'sentry/types/integrations' ;
2525import { trackAnalytics } from 'sentry/utils/analytics' ;
26+ import { useFetchAllPages } from 'sentry/utils/api/apiFetch' ;
27+ import { apiOptions } from 'sentry/utils/api/apiOptions' ;
2628import { getApiUrl } from 'sentry/utils/api/getApiUrl' ;
2729import { getIntegrationIcon } from 'sentry/utils/integrationUtil' ;
2830import {
2931 useApiQuery ,
32+ useInfiniteQuery ,
3033 useMutation ,
3134 useQueryClient ,
3235 type ApiQueryKey ,
@@ -159,19 +162,28 @@ export function IntegrationCodeMappings({integration}: {integration: Integration
159162 { staleTime : 10_000 }
160163 ) ;
161164
165+ const repositoriesQuery = useInfiniteQuery ( {
166+ ...apiOptions . asInfinite < Repository [ ] > ( ) (
167+ '/organizations/$organizationIdOrSlug/repos/' ,
168+ {
169+ path : { organizationIdOrSlug : organization . slug } ,
170+ query : { status : 'active' , per_page : 100 } ,
171+ staleTime : 10_000 ,
172+ }
173+ ) ,
174+ select : ( data : InfiniteData < ApiResponse < Repository [ ] > > ) =>
175+ data . pages . flatMap ( ( page : ApiResponse < Repository [ ] > ) => page . json ) ,
176+ } ) ;
177+ useFetchAllPages ( { result : repositoriesQuery } ) ;
178+
162179 const {
163180 data : fetchedRepos = [ ] ,
164- isPending : isPendingRepos ,
181+ isPending : isPendingReposQuery ,
165182 isError : isErrorRepos ,
166- } = useApiQuery < Repository [ ] > (
167- [
168- getApiUrl ( `/organizations/$organizationIdOrSlug/repos/` , {
169- path : { organizationIdOrSlug : organization . slug } ,
170- } ) ,
171- { query : { status : 'active' } } ,
172- ] ,
173- { staleTime : 10_000 }
174- ) ;
183+ isFetchingNextPage : isFetchingNextReposPage ,
184+ } = repositoriesQuery ;
185+
186+ const isPendingRepos = isPendingReposQuery || isFetchingNextReposPage ;
175187
176188 const pathConfigs = useMemo ( ( ) => {
177189 return sortBy ( fetchedPathConfigs , [
0 commit comments