Skip to content

Commit 37dfbd9

Browse files
committed
ref(issue-views): Add visibility and pagination params to issue views hook
1 parent d466ec8 commit 37dfbd9

File tree

4 files changed

+51
-9
lines changed

4 files changed

+51
-9
lines changed

static/app/components/nav/issueViews/issueViewNavItems.tsx

+8-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ import type {IssueView} from 'sentry/views/issueList/issueViews/issueViews';
2020
import {generateTempViewId} from 'sentry/views/issueList/issueViews/issueViews';
2121
import {useUpdateGroupSearchViews} from 'sentry/views/issueList/mutations/useUpdateGroupSearchViews';
2222
import {makeFetchGroupSearchViewsKey} from 'sentry/views/issueList/queries/useFetchGroupSearchViews';
23-
import type {GroupSearchView} from 'sentry/views/issueList/types';
23+
import {
24+
type GroupSearchView,
25+
GroupSearchViewVisibility,
26+
} from 'sentry/views/issueList/types';
2427

2528
interface IssueViewNavItemsProps {
2629
baseUrl: string;
@@ -201,6 +204,8 @@ export function IssueViewNavItems({
201204
...v,
202205
isAllProjects: isEqual(v.projects, [-1]),
203206
name: v.label,
207+
lastVisited: null,
208+
visibility: GroupSearchViewVisibility.OWNER,
204209
}))
205210
);
206211
},
@@ -242,6 +247,8 @@ export function IssueViewNavItems({
242247
...v,
243248
isAllProjects: isEqual(v.projects, [-1]),
244249
name: v.label,
250+
lastVisited: null,
251+
visibility: GroupSearchViewVisibility.OWNER,
245252
}))
246253
);
247254
}

static/app/views/issueList/issueViewsHeader.spec.tsx

+10-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary';
66

77
import OrganizationStore from 'sentry/stores/organizationStore';
88
import IssueViewsIssueListHeader from 'sentry/views/issueList/issueViewsHeader';
9-
import type {GroupSearchView} from 'sentry/views/issueList/types';
9+
import {
10+
type GroupSearchView,
11+
GroupSearchViewVisibility,
12+
} from 'sentry/views/issueList/types';
1013
import {IssueSortOptions} from 'sentry/views/issueList/utils';
1114

1215
describe('IssueViewsHeader', () => {
@@ -34,6 +37,8 @@ describe('IssueViewsHeader', () => {
3437
start: '2024-01-02',
3538
utc: false,
3639
},
40+
visibility: GroupSearchViewVisibility.OWNER,
41+
lastVisited: null,
3742
},
3843
{
3944
id: '2',
@@ -48,6 +53,8 @@ describe('IssueViewsHeader', () => {
4853
period: '1d',
4954
utc: null,
5055
},
56+
visibility: GroupSearchViewVisibility.ORGANIZATION,
57+
lastVisited: null,
5158
},
5259
{
5360
id: '3',
@@ -62,6 +69,8 @@ describe('IssueViewsHeader', () => {
6269
start: '2024-01-02',
6370
utc: true,
6471
},
72+
visibility: GroupSearchViewVisibility.ORGANIZATION,
73+
lastVisited: null,
6574
},
6675
];
6776

static/app/views/issueList/queries/useFetchGroupSearchViews.tsx

+24-6
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,39 @@
1-
import type {UseApiQueryOptions} from 'sentry/utils/queryClient';
1+
import type {ApiQueryKey, UseApiQueryOptions} from 'sentry/utils/queryClient';
22
import {useApiQuery} from 'sentry/utils/queryClient';
3-
import type {GroupSearchView} from 'sentry/views/issueList/types';
3+
import type {
4+
GroupSearchView,
5+
GroupSearchViewVisibility,
6+
} from 'sentry/views/issueList/types';
47

58
type FetchGroupSearchViewsParameters = {
69
orgSlug: string;
10+
cursor?: string;
11+
limit?: number;
12+
visibility?: GroupSearchViewVisibility;
713
};
814

915
export const makeFetchGroupSearchViewsKey = ({
1016
orgSlug,
11-
}: FetchGroupSearchViewsParameters) =>
12-
[`/organizations/${orgSlug}/group-search-views/`] as const;
17+
visibility,
18+
limit,
19+
cursor,
20+
}: FetchGroupSearchViewsParameters): ApiQueryKey =>
21+
[
22+
`/organizations/${orgSlug}/group-search-views/`,
23+
{
24+
query: {
25+
per_page: limit,
26+
visibility,
27+
cursor,
28+
},
29+
},
30+
] as const;
1331

1432
export const useFetchGroupSearchViews = (
15-
{orgSlug}: FetchGroupSearchViewsParameters,
33+
parameters: FetchGroupSearchViewsParameters,
1634
options: Partial<UseApiQueryOptions<GroupSearchView[]>> = {}
1735
) => {
18-
return useApiQuery<GroupSearchView[]>(makeFetchGroupSearchViewsKey({orgSlug}), {
36+
return useApiQuery<GroupSearchView[]>(makeFetchGroupSearchViewsKey(parameters), {
1937
staleTime: Infinity,
2038
...options,
2139
});

static/app/views/issueList/types.tsx

+9-1
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,25 @@ export type IssueUpdateData =
1616
| MarkReviewed
1717
| GroupStatusResolution;
1818

19+
export enum GroupSearchViewVisibility {
20+
OWNER = 'owner',
21+
ORGANIZATION = 'organization',
22+
}
23+
1924
export type GroupSearchView = {
2025
environments: string[];
2126
id: string;
27+
lastVisited: string | null;
2228
name: string;
2329
projects: number[];
2430
query: string;
2531
querySort: IssueSortOptions;
2632
timeFilters: PageFilters['datetime'];
33+
visibility: GroupSearchViewVisibility;
2734
};
2835

29-
export interface UpdateGroupSearchViewPayload extends Omit<GroupSearchView, 'id'> {
36+
export interface UpdateGroupSearchViewPayload
37+
extends Omit<GroupSearchView, 'id' | 'lastVisited' | 'visibility'> {
3038
environments: string[];
3139
projects: number[];
3240
timeFilters: PageFilters['datetime'];

0 commit comments

Comments
 (0)