From 38b56dead48dab8499cd91deeedb8e2b54317fea Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Mon, 9 Mar 2026 16:09:06 -0700 Subject: [PATCH] feat(size): Migrate size compare build selection page to builds endpoint --- .../main/sizeCompareSelectionContent.tsx | 26 +++++++++++++------ .../views/preprod/types/listBuildsTypes.ts | 16 ------------ 2 files changed, 18 insertions(+), 24 deletions(-) delete mode 100644 static/app/views/preprod/types/listBuildsTypes.ts diff --git a/static/app/views/preprod/buildComparison/main/sizeCompareSelectionContent.tsx b/static/app/views/preprod/buildComparison/main/sizeCompareSelectionContent.tsx index 61a17532d125c9..6bb95fbe37e115 100644 --- a/static/app/views/preprod/buildComparison/main/sizeCompareSelectionContent.tsx +++ b/static/app/views/preprod/buildComparison/main/sizeCompareSelectionContent.tsx @@ -39,7 +39,6 @@ import { isSizeInfoCompleted, type BuildDetailsApiResponse, } from 'sentry/views/preprod/types/buildDetailsTypes'; -import type {ListBuildsApiResponse} from 'sentry/views/preprod/types/listBuildsTypes'; import { getCompareApiUrl, getCompareBuildPath, @@ -75,19 +74,30 @@ export function SizeCompareSelectionContent({ >(baseBuildDetails); const [searchQuery, setSearchQuery] = useState(''); + const searchFilters: string[] = [`state:${BuildDetailsState.PROCESSED}`]; + if (headBuildDetails.app_info?.app_id) { + searchFilters.push(`app_id:"${headBuildDetails.app_info.app_id}"`); + } + if (headBuildDetails.app_info?.build_configuration) { + searchFilters.push( + `build_configuration_name:"${headBuildDetails.app_info.build_configuration}"` + ); + } + if (searchQuery) { + searchFilters.push(searchQuery); + } + const fullQuery = searchFilters.join(' '); + const queryParams: Record = { per_page: 25, - state: BuildDetailsState.PROCESSED, - app_id: headBuildDetails.app_info?.app_id, - build_configuration: headBuildDetails.app_info?.build_configuration, project: headBuildDetails.project_id, + query: fullQuery, ...(cursor && {cursor}), - ...(searchQuery && {query: searchQuery}), }; - const buildsQuery = useApiQuery( + const buildsQuery = useApiQuery( [ - getApiUrl(`/organizations/$organizationIdOrSlug/preprodartifacts/list-builds/`, { + getApiUrl(`/organizations/$organizationIdOrSlug/builds/`, { path: {organizationIdOrSlug: organization.slug}, }), {query: queryParams}, @@ -186,7 +196,7 @@ export function SizeCompareSelectionContent({ )} {buildsQuery.data && ( - {buildsQuery.data.builds.map(build => { + {buildsQuery.data?.map(build => { if (build.id === headBuildDetails.id) { return null; } diff --git a/static/app/views/preprod/types/listBuildsTypes.ts b/static/app/views/preprod/types/listBuildsTypes.ts deleted file mode 100644 index f25cc0bde37ddd..00000000000000 --- a/static/app/views/preprod/types/listBuildsTypes.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type {BuildDetailsApiResponse} from './buildDetailsTypes'; - -interface PaginationInfo { - has_next: boolean; - has_prev: boolean; - page: number; - per_page: number; - total_count: number | string; - next?: number | null; - prev?: number | null; -} - -export interface ListBuildsApiResponse { - builds: BuildDetailsApiResponse[]; - pagination: PaginationInfo; -}