Skip to content

Commit b969f87

Browse files
committed
🚚 Move seer acknowledgement mutation into it's own file
1 parent b499912 commit b969f87

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,55 +3,25 @@ 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 InteractionStateLayer from 'sentry/components/core/interactionStateLayer';
87
import {makeOrganizationSeerSetupQueryKey} from 'sentry/components/events/autofix/useOrganizationSeerSetup';
8+
import {
9+
setupCheckQueryKey,
10+
useSeerAcknowledgeMutation,
11+
} from 'sentry/components/events/autofix/useSeerAcknowledgeMutation';
912
import ExternalLink from 'sentry/components/links/externalLink';
1013
import LoadingIndicator from 'sentry/components/loadingIndicator';
1114
import {useSearchQueryBuilder} from 'sentry/components/searchQueryBuilder/context';
1215
import {IconSeer} from 'sentry/icons';
1316
import {t, tct} from 'sentry/locale';
1417
import {space} from 'sentry/styles/space';
1518
import {trackAnalytics} from 'sentry/utils/analytics';
16-
import {
17-
useIsFetching,
18-
useIsMutating,
19-
useMutation,
20-
useQueryClient,
21-
} from 'sentry/utils/queryClient';
22-
import useApi from 'sentry/utils/useApi';
19+
import {useIsFetching, useIsMutating} from 'sentry/utils/queryClient';
2320
import useOrganization from 'sentry/utils/useOrganization';
2421

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

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