From b1e86d4befab531d8a266081ddd435bc72bd745e Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Thu, 1 Oct 2026 22:36:13 +0000 Subject: [PATCH 1/2] fix(actionCreators): Migrate mergeGroups to async/await and remove callbacks Co-authored-by: sentry[bot] <39604003+sentry[bot]@users.noreply.github.com> --- static/app/actionCreators/group.tsx | 18 +++++------------ .../similarStackTrace/index.tsx | 20 +++++-------------- static/app/views/issueList/actions/index.tsx | 20 ++++++++----------- 3 files changed, 18 insertions(+), 40 deletions(-) diff --git a/static/app/actionCreators/group.tsx b/static/app/actionCreators/group.tsx index 43c3e3737f50..6ea4bce5bc96 100644 --- a/static/app/actionCreators/group.tsx +++ b/static/app/actionCreators/group.tsx @@ -164,9 +164,8 @@ type MergeGroupsParams = UpdateParams; export async function mergeGroups( api: Client, - params: MergeGroupsParams, - options: RequestCallbacks = {} -) { + params: MergeGroupsParams +): Promise { const {itemIds} = params; const path = getUpdateUrl(params); @@ -175,25 +174,18 @@ export async function mergeGroups( GroupStore.onMerge(id, itemIds); - let responseMeta: any; - let statusText: string | undefined; - try { - const [response, status, meta] = await api.requestPromise(path, { + const [response] = await api.requestPromise(path, { query, method: 'PUT', data: {merge: 1}, includeAllArgs: true, }); - statusText = status; - responseMeta = meta; GroupStore.onMergeSuccess(id, itemIds, response); - options?.success?.(response, statusText, responseMeta); + return response; } catch (error) { GroupStore.onMergeError(id, itemIds, error); - options?.error?.(error); - } finally { - options?.complete?.(responseMeta, statusText ?? ''); + throw error; } } diff --git a/static/app/views/issueDetails/groupSimilarIssues/similarStackTrace/index.tsx b/static/app/views/issueDetails/groupSimilarIssues/similarStackTrace/index.tsx index 3d6849ccb40c..0c42bfecf512 100644 --- a/static/app/views/issueDetails/groupSimilarIssues/similarStackTrace/index.tsx +++ b/static/app/views/issueDetails/groupSimilarIssues/similarStackTrace/index.tsx @@ -94,21 +94,11 @@ export function SimilarStackTrace({project}: Props) { {ids: string[]; projectSlug: string; query?: string} >({ mutationFn: ({ids, projectSlug, query}) => - new Promise((resolve, reject) => { - mergeGroups( - api, - { - orgId: organization.slug, - projectId: projectSlug, - itemIds: [...ids, params.groupId], - query, - }, - { - success: (data: any) => resolve(data), - error: (err: any) => - reject(err instanceof Error ? err : new Error('Failed to merge issues')), - } - ); + mergeGroups(api, { + orgId: organization.slug, + projectId: projectSlug, + itemIds: [...ids, params.groupId], + query, }), onSuccess: data => { if (data?.merge?.parent && data.merge.parent !== params.groupId) { diff --git a/static/app/views/issueList/actions/index.tsx b/static/app/views/issueList/actions/index.tsx index aa7343436264..b58d0496e47c 100644 --- a/static/app/views/issueList/actions/index.tsx +++ b/static/app/views/issueList/actions/index.tsx @@ -223,18 +223,14 @@ export function IssueListActions({ function handleMerge() { actionSelectedGroups(itemIds => { - mergeGroups( - api, - { - orgId: organization.slug, - itemIds, - query: queryExcludingPerformanceIssues, - project: selection.projects, - environment: selection.environments, - ...selection.datetime, - }, - {} - ); + mergeGroups(api, { + orgId: organization.slug, + itemIds, + query: queryExcludingPerformanceIssues, + project: selection.projects, + environment: selection.environments, + ...selection.datetime, + }).catch(() => {}); if (selection.projects[0]) { const trackProject = ProjectsStore.getById(`${selection.projects[0]}`); trackAnalytics('issues_stream.merged', { From b3a20d897cb33d1f6c6f898c7b8e3c9367240bfd Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Thu, 1 Oct 2026 22:37:09 +0000 Subject: [PATCH 2/2] :hammer_and_wrench: apply pre-commit fixes --- static/app/actionCreators/group.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/static/app/actionCreators/group.tsx b/static/app/actionCreators/group.tsx index 6ea4bce5bc96..56f72118a378 100644 --- a/static/app/actionCreators/group.tsx +++ b/static/app/actionCreators/group.tsx @@ -162,10 +162,7 @@ export async function bulkUpdate( type MergeGroupsParams = UpdateParams; -export async function mergeGroups( - api: Client, - params: MergeGroupsParams -): Promise { +export async function mergeGroups(api: Client, params: MergeGroupsParams): Promise { const {itemIds} = params; const path = getUpdateUrl(params);