diff --git a/static/app/components/nav/issueViews/issueViewNavItems.tsx b/static/app/components/nav/issueViews/issueViewNavItems.tsx index 7bdd6166fef02d..9734b487da03ba 100644 --- a/static/app/components/nav/issueViews/issueViewNavItems.tsx +++ b/static/app/components/nav/issueViews/issueViewNavItems.tsx @@ -20,7 +20,10 @@ import type {IssueView} from 'sentry/views/issueList/issueViews/issueViews'; import {generateTempViewId} from 'sentry/views/issueList/issueViews/issueViews'; import {useUpdateGroupSearchViews} from 'sentry/views/issueList/mutations/useUpdateGroupSearchViews'; import {makeFetchGroupSearchViewsKey} from 'sentry/views/issueList/queries/useFetchGroupSearchViews'; -import type {GroupSearchView} from 'sentry/views/issueList/types'; +import { + type GroupSearchView, + GroupSearchViewVisibility, +} from 'sentry/views/issueList/types'; interface IssueViewNavItemsProps { baseUrl: string; @@ -201,6 +204,8 @@ export function IssueViewNavItems({ ...v, isAllProjects: isEqual(v.projects, [-1]), name: v.label, + lastVisited: null, + visibility: GroupSearchViewVisibility.OWNER, })) ); }, @@ -242,6 +247,8 @@ export function IssueViewNavItems({ ...v, isAllProjects: isEqual(v.projects, [-1]), name: v.label, + lastVisited: null, + visibility: GroupSearchViewVisibility.OWNER, })) ); } diff --git a/static/app/views/issueList/issueViewsHeader.spec.tsx b/static/app/views/issueList/issueViewsHeader.spec.tsx index e9080ca2451327..693c76674f568a 100644 --- a/static/app/views/issueList/issueViewsHeader.spec.tsx +++ b/static/app/views/issueList/issueViewsHeader.spec.tsx @@ -6,7 +6,10 @@ import {render, screen, userEvent} from 'sentry-test/reactTestingLibrary'; import OrganizationStore from 'sentry/stores/organizationStore'; import IssueViewsIssueListHeader from 'sentry/views/issueList/issueViewsHeader'; -import type {GroupSearchView} from 'sentry/views/issueList/types'; +import { + type GroupSearchView, + GroupSearchViewVisibility, +} from 'sentry/views/issueList/types'; import {IssueSortOptions} from 'sentry/views/issueList/utils'; describe('IssueViewsHeader', () => { @@ -34,6 +37,8 @@ describe('IssueViewsHeader', () => { start: '2024-01-02', utc: false, }, + visibility: GroupSearchViewVisibility.OWNER, + lastVisited: null, }, { id: '2', @@ -48,6 +53,8 @@ describe('IssueViewsHeader', () => { period: '1d', utc: null, }, + visibility: GroupSearchViewVisibility.ORGANIZATION, + lastVisited: null, }, { id: '3', @@ -62,6 +69,8 @@ describe('IssueViewsHeader', () => { start: '2024-01-02', utc: true, }, + visibility: GroupSearchViewVisibility.ORGANIZATION, + lastVisited: null, }, ]; diff --git a/static/app/views/issueList/queries/useFetchGroupSearchViews.tsx b/static/app/views/issueList/queries/useFetchGroupSearchViews.tsx index 98dbd95b2ee3f6..2de7eab6434553 100644 --- a/static/app/views/issueList/queries/useFetchGroupSearchViews.tsx +++ b/static/app/views/issueList/queries/useFetchGroupSearchViews.tsx @@ -1,21 +1,39 @@ -import type {UseApiQueryOptions} from 'sentry/utils/queryClient'; +import type {ApiQueryKey, UseApiQueryOptions} from 'sentry/utils/queryClient'; import {useApiQuery} from 'sentry/utils/queryClient'; -import type {GroupSearchView} from 'sentry/views/issueList/types'; +import type { + GroupSearchView, + GroupSearchViewVisibility, +} from 'sentry/views/issueList/types'; type FetchGroupSearchViewsParameters = { orgSlug: string; + cursor?: string; + limit?: number; + visibility?: GroupSearchViewVisibility; }; export const makeFetchGroupSearchViewsKey = ({ orgSlug, -}: FetchGroupSearchViewsParameters) => - [`/organizations/${orgSlug}/group-search-views/`] as const; + visibility, + limit, + cursor, +}: FetchGroupSearchViewsParameters): ApiQueryKey => + [ + `/organizations/${orgSlug}/group-search-views/`, + { + query: { + per_page: limit, + visibility, + cursor, + }, + }, + ] as const; export const useFetchGroupSearchViews = ( - {orgSlug}: FetchGroupSearchViewsParameters, + parameters: FetchGroupSearchViewsParameters, options: Partial> = {} ) => { - return useApiQuery(makeFetchGroupSearchViewsKey({orgSlug}), { + return useApiQuery(makeFetchGroupSearchViewsKey(parameters), { staleTime: Infinity, ...options, }); diff --git a/static/app/views/issueList/types.tsx b/static/app/views/issueList/types.tsx index f4f6043726ca19..b4ce1c5cfc8903 100644 --- a/static/app/views/issueList/types.tsx +++ b/static/app/views/issueList/types.tsx @@ -16,17 +16,25 @@ export type IssueUpdateData = | MarkReviewed | GroupStatusResolution; +export enum GroupSearchViewVisibility { + OWNER = 'owner', + ORGANIZATION = 'organization', +} + export type GroupSearchView = { environments: string[]; id: string; + lastVisited: string | null; name: string; projects: number[]; query: string; querySort: IssueSortOptions; timeFilters: PageFilters['datetime']; + visibility: GroupSearchViewVisibility; }; -export interface UpdateGroupSearchViewPayload extends Omit { +export interface UpdateGroupSearchViewPayload + extends Omit { environments: string[]; projects: number[]; timeFilters: PageFilters['datetime'];