Skip to content

Commit a4f86bc

Browse files
alaisterjoshenlim
andauthored
chore: increase react-query stale time (supabase#19465)
* chore: increase react-query stale time * keep staleTime: 0 for table rows * use staleTime: 0 for all user sql queries * use staleTime: 0 for all pg-meta queries * Some fixes * fix updating tables * fix bug while editing column names * Fix deleting column in database/tables column list not revalidating UI * Fix updating column in database/tables column list throwing ane rror --------- Co-authored-by: Joshen Lim <joshenlimek@gmail.com>
1 parent 0a470bc commit a4f86bc

34 files changed

+99
-48
lines changed

apps/studio/components/interfaces/TableGridEditor/SidePanelEditor/SidePanelEditor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ const SidePanelEditor = ({
209209
resolve: any
210210
) => {
211211
const selectedColumnToEdit = snap.sidePanel?.type === 'column' && snap.sidePanel.column
212-
213212
const { columnId } = configuration
213+
214214
const response = isNewRecord
215215
? await createColumn({
216216
projectRef: project?.ref!,

apps/studio/data/auth/auth-config-update-mutation.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ export const useAuthConfigUpdateMutation = ({
4545
{
4646
async onSuccess(data, variables, context) {
4747
const { projectRef } = variables
48-
49-
await Promise.all([queryClient.invalidateQueries(authKeys.authConfig(projectRef))])
50-
48+
await queryClient.invalidateQueries(authKeys.authConfig(projectRef))
5149
await onSuccess?.(data, variables, context)
5250
},
5351
async onError(data, variables, context) {

apps/studio/data/auth/user-create-mutation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ export const useUserCreateMutation = ({
7272
{
7373
async onSuccess(data, variables, context) {
7474
const { projectRef } = variables
75-
if (projectRef) await queryClient.invalidateQueries(authKeys.users(projectRef))
75+
await queryClient.invalidateQueries(authKeys.users(projectRef))
7676
await onSuccess?.(data, variables, context)
7777
},
7878
async onError(data, variables, context) {

apps/studio/data/banned-ips/banned-ips-delete-mutations.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,9 @@ export const useBannedIPsDeleteMutation = ({
3535
(vars) => deleteBannedIPs(vars),
3636
{
3737
async onSuccess(data, variables, context) {
38-
const { projectRef, ips } = variables
38+
const { projectRef } = variables
3939

40-
await Promise.all([
41-
queryClient.invalidateQueries(BannedIPKeys.list(projectRef)),
42-
queryClient.invalidateQueries(BannedIPKeys.detail(ips)),
43-
])
40+
await queryClient.invalidateQueries(BannedIPKeys.list(projectRef))
4441

4542
await onSuccess?.(data, variables, context)
4643
},
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
export const BannedIPKeys = {
22
list: (projectRef: string | undefined) => ['projects', projectRef, 'banned-ips'] as const,
3-
detail: (ips: string[] | undefined) => ['banned-ips', ips] as const,
43
}

apps/studio/data/content/content-delete-mutation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export const useContentDeleteMutation = ({
4141
{
4242
async onSuccess(data, variables, context) {
4343
const { projectRef } = variables
44-
await Promise.all([queryClient.invalidateQueries(contentKeys.list(projectRef))])
44+
await queryClient.invalidateQueries(contentKeys.list(projectRef))
4545
await onSuccess?.(data, variables, context)
4646
},
4747
async onError(data, variables, context) {

apps/studio/data/content/content-insert-mutation.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'
2+
import toast from 'react-hot-toast'
23

34
import { components } from 'data/api'
45
import { post } from 'data/fetchers'
6+
import { ResponseError } from 'types'
57
import { Content } from './content-query'
68
import { contentKeys } from './keys'
79

@@ -39,24 +41,30 @@ export async function insertContent(
3941
export type InsertContentData = Awaited<ReturnType<typeof insertContent>>
4042

4143
export const useContentInsertMutation = ({
44+
onError,
4245
onSuccess,
4346
...options
4447
}: Omit<
45-
UseMutationOptions<InsertContentData, unknown, InsertContentVariables>,
48+
UseMutationOptions<InsertContentData, ResponseError, InsertContentVariables>,
4649
'mutationFn'
4750
> = {}) => {
4851
const queryClient = useQueryClient()
4952

50-
return useMutation<InsertContentData, unknown, InsertContentVariables>(
53+
return useMutation<InsertContentData, ResponseError, InsertContentVariables>(
5154
(args) => insertContent(args),
5255
{
5356
async onSuccess(data, variables, context) {
5457
const { projectRef } = variables
55-
56-
await Promise.all([queryClient.invalidateQueries(contentKeys.list(projectRef))])
57-
58+
await queryClient.invalidateQueries(contentKeys.list(projectRef))
5859
await onSuccess?.(data, variables, context)
5960
},
61+
async onError(data, variables, context) {
62+
if (onError === undefined) {
63+
toast.error(`Failed to insert content: ${data.message}`)
64+
} else {
65+
onError(data, variables, context)
66+
}
67+
},
6068
...options,
6169
}
6270
)

apps/studio/data/content/content-upsert-mutation.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'
2+
import toast from 'react-hot-toast'
23

34
import { components } from 'data/api'
45
import { put } from 'data/fetchers'
5-
import { contentKeys } from './keys'
6+
import { ResponseError } from 'types'
67
import { Content } from './content-query'
8+
import { contentKeys } from './keys'
79

810
export type UpsertContentPayload = Omit<components['schemas']['UpsertContentParams'], 'content'> & {
911
content: Content['content']
@@ -41,24 +43,30 @@ export async function upsertContent(
4143
export type UpsertContentData = Awaited<ReturnType<typeof upsertContent>>
4244

4345
export const useContentUpsertMutation = ({
46+
onError,
4447
onSuccess,
4548
...options
4649
}: Omit<
47-
UseMutationOptions<UpsertContentData, unknown, UpsertContentVariables>,
50+
UseMutationOptions<UpsertContentData, ResponseError, UpsertContentVariables>,
4851
'mutationFn'
4952
> = {}) => {
5053
const queryClient = useQueryClient()
5154

52-
return useMutation<UpsertContentData, unknown, UpsertContentVariables>(
55+
return useMutation<UpsertContentData, ResponseError, UpsertContentVariables>(
5356
(args) => upsertContent(args),
5457
{
5558
async onSuccess(data, variables, context) {
5659
const { projectRef } = variables
57-
58-
await Promise.all([queryClient.invalidateQueries(contentKeys.list(projectRef))])
59-
60+
await queryClient.invalidateQueries(contentKeys.list(projectRef))
6061
await onSuccess?.(data, variables, context)
6162
},
63+
async onError(data, variables, context) {
64+
if (onError === undefined) {
65+
toast.error(`Failed to insert content: ${data.message}`)
66+
} else {
67+
onError(data, variables, context)
68+
}
69+
},
6270
...options,
6371
}
6472
)

apps/studio/data/database-triggers/database-triggers-query.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ export const useDatabaseHooksQuery = <TData = DatabaseTriggersData>(
4242
databaseTriggerKeys.list(projectRef),
4343
({ signal }) => getDatabaseTriggers({ projectRef, connectionString }, signal),
4444
{
45+
staleTime: 0,
4546
// @ts-ignore
4647
select(data) {
4748
return (data as PostgresTrigger[]).filter(

apps/studio/data/database/hooks-enable-mutation.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { useMutation, UseMutationOptions } from '@tanstack/react-query'
1+
import { useMutation, UseMutationOptions, useQueryClient } from '@tanstack/react-query'
22
import { toast } from 'react-hot-toast'
33

44
import { post } from 'data/fetchers'
55
import { ResponseError } from 'types'
6+
import { databaseKeys } from './keys'
67

78
export type HooksEnableVariables = {
89
ref: string
@@ -26,11 +27,14 @@ export const useHooksEnableMutation = ({
2627
UseMutationOptions<HooksEnableData, ResponseError, HooksEnableVariables>,
2728
'mutationFn'
2829
> = {}) => {
30+
const queryClient = useQueryClient()
2931
return useMutation<HooksEnableData, ResponseError, HooksEnableVariables>(
3032
(vars) => enableDatabaseWebhooks(vars),
3133
{
3234
async onSuccess(data, variables, context) {
35+
const { ref } = variables
3336
await onSuccess?.(data, variables, context)
37+
await queryClient.invalidateQueries(databaseKeys.schemaList(ref))
3438
},
3539
async onError(data, variables, context) {
3640
if (onError === undefined) {

0 commit comments

Comments
 (0)