Skip to content

Commit deebcbc

Browse files
chore(js): Wrap queryClient.setQueryData (#47130)
For the useApiQuery stuff we'll need this to abstract away the response object cache managment
1 parent b9fb026 commit deebcbc

File tree

5 files changed

+32
-10
lines changed

5 files changed

+32
-10
lines changed

static/app/utils/queryClient.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,17 @@ function useApiQuery<TQueryFnData, TError = RequestError, TData = TQueryFnData>(
130130
return reactQuery.useQuery(queryKey, queryFn, options);
131131
}
132132

133+
function setApiQueryData<TResponseData>(
134+
queryClient: reactQuery.QueryClient,
135+
queryKey: ApiQueryKey,
136+
updater: reactQuery.Updater<TResponseData | undefined, TResponseData | undefined>,
137+
options?: reactQuery.SetDataOptions
138+
): TResponseData | undefined {
139+
return queryClient.setQueryData(queryKey, updater, options);
140+
}
141+
133142
// eslint-disable-next-line import/export
134143
export * from '@tanstack/react-query';
135144

136145
// eslint-disable-next-line import/export
137-
export {DEFAULT_QUERY_CLIENT_CONFIG, useApiQuery};
146+
export {DEFAULT_QUERY_CLIENT_CONFIG, useApiQuery, setApiQueryData};

static/app/views/issueList/mutations/useCreateSavedSearch.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
import {SavedSearch, SavedSearchType, SavedSearchVisibility} from 'sentry/types';
2-
import {useMutation, UseMutationOptions, useQueryClient} from 'sentry/utils/queryClient';
2+
import {
3+
setApiQueryData,
4+
useMutation,
5+
UseMutationOptions,
6+
useQueryClient,
7+
} from 'sentry/utils/queryClient';
38
import RequestError from 'sentry/utils/requestError/requestError';
49
import useApi from 'sentry/utils/useApi';
510
import {makeFetchSavedSearchesForOrgQueryKey} from 'sentry/views/issueList/queries/useFetchSavedSearchesForOrg';
@@ -37,7 +42,8 @@ export const useCreateSavedSearch = (
3742
data,
3843
}),
3944
onSuccess: (savedSearch, parameters, context) => {
40-
queryClient.setQueryData(
45+
setApiQueryData(
46+
queryClient,
4147
makeFetchSavedSearchesForOrgQueryKey({orgSlug: parameters.orgSlug}),
4248
oldData => {
4349
if (!Array.isArray(oldData)) {

static/app/views/issueList/mutations/useDeleteSavedSearch.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import {addErrorMessage} from 'sentry/actionCreators/indicator';
22
import {t} from 'sentry/locale';
33
import {SavedSearch} from 'sentry/types';
4-
import {useMutation, UseMutationOptions, useQueryClient} from 'sentry/utils/queryClient';
4+
import {
5+
setApiQueryData,
6+
useMutation,
7+
UseMutationOptions,
8+
useQueryClient,
9+
} from 'sentry/utils/queryClient';
510
import RequestError from 'sentry/utils/requestError/requestError';
611
import useApi from 'sentry/utils/useApi';
712
import {makeFetchSavedSearchesForOrgQueryKey} from 'sentry/views/issueList/queries/useFetchSavedSearchesForOrg';
@@ -46,7 +51,8 @@ export const useDeleteSavedSearchOptimistic = (
4651
makeFetchSavedSearchesForOrgQueryKey({orgSlug: variables.orgSlug})
4752
);
4853

49-
queryClient.setQueryData(
54+
setApiQueryData(
55+
queryClient,
5056
makeFetchSavedSearchesForOrgQueryKey({orgSlug: variables.orgSlug}),
5157
oldData => {
5258
if (!Array.isArray(oldData)) {
@@ -65,7 +71,8 @@ export const useDeleteSavedSearchOptimistic = (
6571
addErrorMessage(t('Failed to delete saved search.'));
6672

6773
if (context) {
68-
queryClient.setQueryData(
74+
setApiQueryData(
75+
queryClient,
6976
makeFetchSavedSearchesForOrgQueryKey({orgSlug: variables.orgSlug}),
7077
context.previousSavedSearches
7178
);

static/app/views/monitors/details.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import LoadingIndicator from 'sentry/components/loadingIndicator';
88
import PageFilterBar from 'sentry/components/organizations/pageFilterBar';
99
import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
1010
import {space} from 'sentry/styles/space';
11-
import {useApiQuery, useQueryClient} from 'sentry/utils/queryClient';
11+
import {setApiQueryData, useApiQuery, useQueryClient} from 'sentry/utils/queryClient';
1212
import useOrganization from 'sentry/utils/useOrganization';
1313
import usePageFilters from 'sentry/utils/usePageFilters';
1414

@@ -39,7 +39,7 @@ function MonitorDetails({params, location}: Props) {
3939
const {data: monitor} = useApiQuery<Monitor>(queryKey, {staleTime: 0});
4040

4141
function onUpdate(data: Monitor) {
42-
queryClient.setQueryData(queryKey, data);
42+
setApiQueryData(queryClient, queryKey, data);
4343
}
4444

4545
if (!monitor) {

static/app/views/monitors/edit.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import LoadingError from 'sentry/components/loadingError';
66
import LoadingIndicator from 'sentry/components/loadingIndicator';
77
import SentryDocumentTitle from 'sentry/components/sentryDocumentTitle';
88
import {t} from 'sentry/locale';
9-
import {useApiQuery, useQueryClient} from 'sentry/utils/queryClient';
9+
import {setApiQueryData, useApiQuery, useQueryClient} from 'sentry/utils/queryClient';
1010
import useOrganization from 'sentry/utils/useOrganization';
1111
import {useParams} from 'sentry/utils/useParams';
1212
import {normalizeUrl} from 'sentry/utils/withDomainRequired';
@@ -31,7 +31,7 @@ export default function EditMonitor() {
3131
});
3232

3333
function onSubmitSuccess(data: Monitor) {
34-
queryClient.setQueryData([queryKeyUrl], data);
34+
setApiQueryData(queryClient, [queryKeyUrl], data);
3535
browserHistory.push(
3636
normalizeUrl(`/organizations/${organization.slug}/crons/${data.slug}/`)
3737
);

0 commit comments

Comments
 (0)