Skip to content

Commit 002805b

Browse files
committed
extract organizationRepositoriesInfiniteOptions to a new file
1 parent bb5b983 commit 002805b

File tree

7 files changed

+71
-50
lines changed

7 files changed

+71
-50
lines changed

static/app/components/events/autofix/preferences/hooks/useOrganizationRepositories.ts

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import {useCallback, useEffect, useMemo, useRef} from 'react';
22

3-
import type {Repository, RepositoryWithSettings} from 'sentry/types/integrations';
4-
import type {Organization} from 'sentry/types/organization';
5-
import {apiOptions} from 'sentry/utils/api/apiOptions';
3+
import type {Repository} from 'sentry/types/integrations';
64
import {getApiUrl} from 'sentry/utils/api/getApiUrl';
75
import {useFetchSequentialPages} from 'sentry/utils/api/useFetchSequentialPages';
8-
import {encodeSort} from 'sentry/utils/discover/eventView';
9-
import type {Sort} from 'sentry/utils/discover/fields';
106
import type {ApiQueryKey} from 'sentry/utils/queryClient';
117
import {useOrganization} from 'sentry/utils/useOrganization';
128

@@ -63,30 +59,3 @@ export function useOrganizationRepositories({query = {}} = {} as Props) {
6359
[data, isFetching, rest]
6460
);
6561
}
66-
67-
export function organizationRepositoriesWithSettingsInfiniteOptions({
68-
organization,
69-
query,
70-
staleTime,
71-
}: {
72-
organization: Organization;
73-
query?: {
74-
cursor?: string;
75-
integration_id?: string;
76-
per_page?: number;
77-
query?: string;
78-
sort?: Sort;
79-
status?: 'active' | 'deleted' | 'unmigratable';
80-
};
81-
staleTime?: number;
82-
}) {
83-
const sortQuery = query?.sort ? encodeSort(query.sort) : undefined;
84-
return apiOptions.asInfinite<RepositoryWithSettings[]>()(
85-
'/organizations/$organizationIdOrSlug/repos/',
86-
{
87-
path: {organizationIdOrSlug: organization.slug},
88-
query: {expand: 'settings', per_page: 100, ...query, sort: sortQuery},
89-
staleTime: staleTime ?? 0,
90-
}
91-
);
92-
}

static/app/components/repositories/scmIntegrationTree/useScmIntegrationTreeData.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {useEffect, useMemo} from 'react';
22

3-
import {organizationRepositoriesWithSettingsInfiniteOptions} from 'sentry/components/events/autofix/preferences/hooks/useOrganizationRepositories';
43
import {organizationConfigIntegrationsQueryOptions} from 'sentry/components/repositories/scmIntegrationTree/organizationConfigIntegrationsQueryOptions';
54
import type {
65
IntegrationProvider,
@@ -10,6 +9,7 @@ import type {
109
} from 'sentry/types/integrations';
1110
import {apiOptions} from 'sentry/utils/api/apiOptions';
1211
import {useInfiniteQuery, useQueries, useQuery} from 'sentry/utils/queryClient';
12+
import {organizationRepositoriesWithSettingsInfiniteOptions} from 'sentry/utils/repositories/repoQueryOptions';
1313
import {useOrganization} from 'sentry/utils/useOrganization';
1414
import {organizationIntegrationsQueryOptions} from 'sentry/views/settings/seer/overview/utils/organizationIntegrationsQueryOptions';
1515

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import type {Repository, RepositoryWithSettings} from 'sentry/types/integrations';
2+
import type {Organization} from 'sentry/types/organization';
3+
import {apiOptions} from 'sentry/utils/api/apiOptions';
4+
import {encodeSort} from 'sentry/utils/discover/eventView';
5+
import type {Sort} from 'sentry/utils/discover/fields';
6+
7+
export function organizationRepositoriesInfiniteOptions({
8+
organization,
9+
query,
10+
staleTime,
11+
}: {
12+
organization: Organization;
13+
query?: {
14+
cursor?: string;
15+
integration_id?: string;
16+
per_page?: number;
17+
query?: string;
18+
sort?: Sort;
19+
status?: 'active' | 'deleted' | 'unmigratable';
20+
};
21+
staleTime?: number;
22+
}) {
23+
const sortQuery = query?.sort ? encodeSort(query.sort) : undefined;
24+
return apiOptions.asInfinite<Repository[]>()(
25+
'/organizations/$organizationIdOrSlug/repos/',
26+
{
27+
path: {organizationIdOrSlug: organization.slug},
28+
query: {per_page: 100, ...query, sort: sortQuery},
29+
staleTime: staleTime ?? 0,
30+
}
31+
);
32+
}
33+
34+
export function organizationRepositoriesWithSettingsInfiniteOptions({
35+
organization,
36+
query,
37+
staleTime,
38+
}: {
39+
organization: Organization;
40+
query?: {
41+
cursor?: string;
42+
integration_id?: string;
43+
per_page?: number;
44+
query?: string;
45+
sort?: Sort;
46+
status?: 'active' | 'deleted' | 'unmigratable';
47+
};
48+
staleTime?: number;
49+
}) {
50+
const sortQuery = query?.sort ? encodeSort(query.sort) : undefined;
51+
return apiOptions.asInfinite<RepositoryWithSettings[]>()(
52+
'/organizations/$organizationIdOrSlug/repos/',
53+
{
54+
path: {organizationIdOrSlug: organization.slug},
55+
query: {expand: 'settings', per_page: 100, ...query, sort: sortQuery},
56+
staleTime: staleTime ?? 0,
57+
}
58+
);
59+
}

static/app/views/settings/organizationIntegrations/integrationCodeMappings.tsx

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,9 @@ import {PanelHeader} from 'sentry/components/panels/panelHeader';
1717
import {PanelItem} from 'sentry/components/panels/panelItem';
1818
import {IconAdd} from 'sentry/icons';
1919
import {t, tct} from 'sentry/locale';
20-
import type {
21-
Integration,
22-
Repository,
23-
RepositoryProjectPathConfig,
24-
} from 'sentry/types/integrations';
20+
import type {Integration, RepositoryProjectPathConfig} from 'sentry/types/integrations';
2521
import {trackAnalytics} from 'sentry/utils/analytics';
2622
import {useFetchAllPages} from 'sentry/utils/api/apiFetch';
27-
import {apiOptions} from 'sentry/utils/api/apiOptions';
2823
import {getApiUrl} from 'sentry/utils/api/getApiUrl';
2924
import {getIntegrationIcon} from 'sentry/utils/integrationUtil';
3025
import {
@@ -34,6 +29,7 @@ import {
3429
useQueryClient,
3530
type ApiQueryKey,
3631
} from 'sentry/utils/queryClient';
32+
import {organizationRepositoriesInfiniteOptions} from 'sentry/utils/repositories/repoQueryOptions';
3733
import type {RequestError} from 'sentry/utils/requestError/requestError';
3834
import {useRouteAnalyticsEventNames} from 'sentry/utils/routeAnalytics/useRouteAnalyticsEventNames';
3935
import {useRouteAnalyticsParams} from 'sentry/utils/routeAnalytics/useRouteAnalyticsParams';
@@ -163,14 +159,11 @@ export function IntegrationCodeMappings({integration}: {integration: Integration
163159
);
164160

165161
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-
),
162+
...organizationRepositoriesInfiniteOptions({
163+
organization,
164+
query: {status: 'active', per_page: 100},
165+
staleTime: 10_000,
166+
}),
174167
select: data => data.pages.flatMap(page => page.json),
175168
});
176169
useFetchAllPages({result: repositoriesQuery});

static/app/views/settings/seer/overview/codeReviewOverviewSection.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {Text} from '@sentry/scraps/text';
1111

1212
import {addErrorMessage, addSuccessMessage} from 'sentry/actionCreators/indicator';
1313
import {updateOrganization} from 'sentry/actionCreators/organizations';
14-
import {organizationRepositoriesWithSettingsInfiniteOptions} from 'sentry/components/events/autofix/preferences/hooks/useOrganizationRepositories';
1514
import {useSeerSupportedProviderIds} from 'sentry/components/events/autofix/utils';
1615
import {useBulkUpdateRepositorySettings} from 'sentry/components/repositories/useBulkUpdateRepositorySettings';
1716
import {getRepositoryWithSettingsQueryKey} from 'sentry/components/repositories/useRepositoryWithSettings';
@@ -23,6 +22,7 @@ import {useFetchAllPages} from 'sentry/utils/api/apiFetch';
2322
import {getSeerOnboardingCheckQueryOptions} from 'sentry/utils/getSeerOnboardingCheckQueryOptions';
2423
import {useInfiniteQuery, useQueryClient} from 'sentry/utils/queryClient';
2524
import {fetchMutation} from 'sentry/utils/queryClient';
25+
import {organizationRepositoriesWithSettingsInfiniteOptions} from 'sentry/utils/repositories/repoQueryOptions';
2626
import {useOrganization} from 'sentry/utils/useOrganization';
2727

2828
export function useCodeReviewOverviewSection() {

static/gsApp/views/seerAutomation/components/repoTable/seerRepoTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {Flex, Grid} from '@sentry/scraps/layout';
1111
import {Text} from '@sentry/scraps/text';
1212

1313
import {openModal} from 'sentry/actionCreators/modal';
14-
import {organizationRepositoriesWithSettingsInfiniteOptions} from 'sentry/components/events/autofix/preferences/hooks/useOrganizationRepositories';
1514
import {
1615
isSeerSupportedProvider,
1716
useSeerSupportedProviderIds,
@@ -32,6 +31,7 @@ import {
3231
useListItemCheckboxContext,
3332
} from 'sentry/utils/list/useListItemCheckboxState';
3433
import {useInfiniteQuery, useQueryClient} from 'sentry/utils/queryClient';
34+
import {organizationRepositoriesWithSettingsInfiniteOptions} from 'sentry/utils/repositories/repoQueryOptions';
3535
import {parseAsSort} from 'sentry/utils/url/parseAsSort';
3636
import {useOrganization} from 'sentry/utils/useOrganization';
3737

static/gsApp/views/seerAutomation/onboarding/hooks/seerOnboardingContext.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ import {
1111
import * as Sentry from '@sentry/react';
1212
import uniqBy from 'lodash/uniqBy';
1313

14-
import {organizationRepositoriesWithSettingsInfiniteOptions} from 'sentry/components/events/autofix/preferences/hooks/useOrganizationRepositories';
1514
import type {
1615
IntegrationProvider,
1716
OrganizationIntegration,
1817
RepositoryWithSettings,
1918
} from 'sentry/types/integrations';
2019
import {useFetchAllPages} from 'sentry/utils/api/apiFetch';
2120
import {useInfiniteQuery} from 'sentry/utils/queryClient';
21+
import {organizationRepositoriesWithSettingsInfiniteOptions} from 'sentry/utils/repositories/repoQueryOptions';
2222
import {useOrganization} from 'sentry/utils/useOrganization';
2323

2424
import {useIntegrationInstallation} from './useIntegrationInstallation';

0 commit comments

Comments
 (0)