Skip to content

Commit 7797141

Browse files
committed
🚚 Move seer acknowledgement mutation into it's own file
1 parent 92edbee commit 7797141

File tree

3 files changed

+38
-61
lines changed

3 files changed

+38
-61
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import {promptsUpdate} from 'sentry/actionCreators/prompts';
2+
import {useMutation, useQueryClient} from 'sentry/utils/queryClient';
3+
import useApi from 'sentry/utils/useApi';
4+
import useOrganization from 'sentry/utils/useOrganization';
5+
6+
export const setupCheckQueryKey = (orgSlug: string) =>
7+
`/organizations/${orgSlug}/seer/setup-check/`;
8+
9+
export function useSeerAcknowledgeMutation() {
10+
const api = useApi();
11+
const queryClient = useQueryClient();
12+
const organization = useOrganization();
13+
14+
const {mutate, isPending, isError} = useMutation({
15+
mutationKey: [setupCheckQueryKey(organization.slug)],
16+
mutationFn: () => {
17+
return promptsUpdate(api, {
18+
organization,
19+
feature: 'seer_autofix_setup_acknowledged',
20+
status: 'dismissed',
21+
});
22+
},
23+
onSuccess: () => {
24+
queryClient.invalidateQueries({
25+
queryKey: [setupCheckQueryKey(organization.slug)],
26+
});
27+
},
28+
});
29+
30+
return {mutate, isPending, isError};
31+
}

static/app/components/searchQueryBuilder/askSeer.tsx

Lines changed: 5 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,56 +3,26 @@ import styled from '@emotion/styled';
33
import {useOption} from '@react-aria/listbox';
44
import type {ComboBoxState} from '@react-stately/combobox';
55

6-
import {promptsUpdate} from 'sentry/actionCreators/prompts';
76
import {FeatureBadge} from 'sentry/components/core/badge/featureBadge';
87
import InteractionStateLayer from 'sentry/components/core/interactionStateLayer';
98
import {makeOrganizationSeerSetupQueryKey} from 'sentry/components/events/autofix/useOrganizationSeerSetup';
9+
import {
10+
setupCheckQueryKey,
11+
useSeerAcknowledgeMutation,
12+
} from 'sentry/components/events/autofix/useSeerAcknowledgeMutation';
1013
import ExternalLink from 'sentry/components/links/externalLink';
1114
import LoadingIndicator from 'sentry/components/loadingIndicator';
1215
import {useSearchQueryBuilder} from 'sentry/components/searchQueryBuilder/context';
1316
import {IconSeer} from 'sentry/icons';
1417
import {t, tct} from 'sentry/locale';
1518
import {space} from 'sentry/styles/space';
1619
import {trackAnalytics} from 'sentry/utils/analytics';
17-
import {
18-
useIsFetching,
19-
useIsMutating,
20-
useMutation,
21-
useQueryClient,
22-
} from 'sentry/utils/queryClient';
23-
import useApi from 'sentry/utils/useApi';
20+
import {useIsFetching, useIsMutating} from 'sentry/utils/queryClient';
2421
import useOrganization from 'sentry/utils/useOrganization';
2522

2623
export const ASK_SEER_ITEM_KEY = 'ask_seer';
2724
export const ASK_SEER_CONSENT_ITEM_KEY = 'ask_seer_consent';
2825

29-
const setupCheckQueryKey = (orgSlug: string) =>
30-
`/organizations/${orgSlug}/seer/setup-check/`;
31-
32-
export function useSeerAcknowledgeMutation() {
33-
const api = useApi();
34-
const queryClient = useQueryClient();
35-
const organization = useOrganization();
36-
37-
const {mutate} = useMutation({
38-
mutationKey: [setupCheckQueryKey(organization.slug)],
39-
mutationFn: () => {
40-
return promptsUpdate(api, {
41-
organization,
42-
feature: 'seer_autofix_setup_acknowledged',
43-
status: 'dismissed',
44-
});
45-
},
46-
onSuccess: () => {
47-
queryClient.invalidateQueries({
48-
queryKey: [setupCheckQueryKey(organization.slug)],
49-
});
50-
},
51-
});
52-
53-
return {mutate};
54-
}
55-
5626
function AskSeerConsentOption<T>({state}: {state: ComboBoxState<T>}) {
5727
const organization = useOrganization();
5828
const itemRef = useRef<HTMLDivElement>(null);

static/gsApp/components/ai/AiSetupDataConsent.tsx

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,19 @@ import styled from '@emotion/styled';
44
import autofixSetupImg from 'sentry-images/features/autofix-setup.svg';
55

66
import {addSuccessMessage} from 'sentry/actionCreators/indicator';
7-
import {promptsUpdate} from 'sentry/actionCreators/prompts';
87
import {Alert} from 'sentry/components/core/alert';
98
import {Button} from 'sentry/components/core/button';
109
import {Flex} from 'sentry/components/core/layout';
1110
import {useAutofixSetup} from 'sentry/components/events/autofix/useAutofixSetup';
1211
import {useOrganizationSeerSetup} from 'sentry/components/events/autofix/useOrganizationSeerSetup';
12+
import {useSeerAcknowledgeMutation} from 'sentry/components/events/autofix/useSeerAcknowledgeMutation';
1313
import ExternalLink from 'sentry/components/links/externalLink';
1414
import LoadingIndicator from 'sentry/components/loadingIndicator';
1515
import {DATA_CATEGORY_INFO} from 'sentry/constants';
1616
import {IconRefresh, IconSeer} from 'sentry/icons';
1717
import {t, tct} from 'sentry/locale';
1818
import {space} from 'sentry/styles/space';
1919
import {DataCategory} from 'sentry/types/core';
20-
import {useMutation, useQueryClient} from 'sentry/utils/queryClient';
2120
import useApi from 'sentry/utils/useApi';
2221
import {useNavigate} from 'sentry/utils/useNavigate';
2322
import useOrganization from 'sentry/utils/useOrganization';
@@ -37,7 +36,6 @@ type AiSetupDataConsentProps = {
3736
function AiSetupDataConsent({groupId}: AiSetupDataConsentProps) {
3837
const api = useApi({persistInFlight: true});
3938
const organization = useOrganization();
40-
const queryClient = useQueryClient();
4139
const navigate = useNavigate();
4240
const subscription = useSubscription();
4341

@@ -82,29 +80,7 @@ function AiSetupDataConsent({groupId}: AiSetupDataConsentProps) {
8280
!isTouchCustomer &&
8381
!hasSeerButNeedsPayg;
8482

85-
const autofixAcknowledgeMutation = useMutation({
86-
mutationFn: () => {
87-
return promptsUpdate(api, {
88-
organization,
89-
feature: 'seer_autofix_setup_acknowledged',
90-
status: 'dismissed',
91-
});
92-
},
93-
onSuccess: () => {
94-
// Invalidate the appropriate query based on mode
95-
if (isGroupMode && groupId) {
96-
queryClient.invalidateQueries({
97-
queryKey: [
98-
`/organizations/${organization.slug}/issues/${groupId}/autofix/setup/`,
99-
],
100-
});
101-
} else {
102-
queryClient.invalidateQueries({
103-
queryKey: [`/organizations/${organization.slug}/seer/setup-check/`],
104-
});
105-
}
106-
},
107-
});
83+
const autofixAcknowledgeMutation = useSeerAcknowledgeMutation();
10884

10985
function handlePurchaseSeer() {
11086
navigate(`/settings/billing/checkout/?referrer=ai_setup_data_consent`);

0 commit comments

Comments
 (0)