Skip to content
Merged
Prev Previous commit
Next Next commit
fix(credentials): add cross-cache invalidation for oauth credential q…
…ueries (#4076)
  • Loading branch information
waleedlatif1 authored Apr 9, 2026
commit 7bd271ae5b358ee2bd7c54d55e893eafc7d768ae
16 changes: 8 additions & 8 deletions apps/sim/hooks/queries/credential-sets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ export function useAcceptCredentialSetInvitation() {
}
return response.json()
},
onSuccess: () => {
onSettled: () => {
queryClient.invalidateQueries({ queryKey: credentialSetKeys.memberships() })
queryClient.invalidateQueries({ queryKey: credentialSetKeys.invitations() })
},
Expand Down Expand Up @@ -187,7 +187,7 @@ export function useCreateCredentialSet() {
}
return response.json()
},
onSuccess: (_data, variables) => {
onSettled: (_data, _error, variables) => {
queryClient.invalidateQueries({ queryKey: credentialSetKeys.list(variables.organizationId) })
},
})
Expand All @@ -209,7 +209,7 @@ export function useCreateCredentialSetInvitation() {
}
return response.json()
},
onSuccess: (_data, variables) => {
onSettled: (_data, _error, variables) => {
queryClient.invalidateQueries({
queryKey: credentialSetKeys.detailInvitations(variables.credentialSetId),
})
Expand Down Expand Up @@ -264,7 +264,7 @@ export function useRemoveCredentialSetMember() {
}
return response.json()
},
onSuccess: (_data, variables) => {
onSettled: (_data, _error, variables) => {
queryClient.invalidateQueries({
queryKey: credentialSetKeys.detailMembers(variables.credentialSetId),
})
Expand All @@ -288,7 +288,7 @@ export function useLeaveCredentialSet() {
}
return response.json()
},
onSuccess: () => {
onSettled: () => {
queryClient.invalidateQueries({ queryKey: credentialSetKeys.memberships() })
},
})
Expand All @@ -313,7 +313,7 @@ export function useDeleteCredentialSet() {
}
return response.json()
},
onSuccess: (_data, variables) => {
onSettled: (_data, _error, variables) => {
queryClient.invalidateQueries({
queryKey: credentialSetKeys.list(variables.organizationId),
})
Expand Down Expand Up @@ -370,7 +370,7 @@ export function useCancelCredentialSetInvitation() {
}
return response.json()
},
onSuccess: (_data, variables) => {
onSettled: (_data, _error, variables) => {
queryClient.invalidateQueries({
queryKey: credentialSetKeys.detailInvitations(variables.credentialSetId),
})
Expand All @@ -393,7 +393,7 @@ export function useResendCredentialSetInvitation() {
}
return response.json()
},
onSuccess: (_data, variables) => {
onSettled: (_data, _error, variables) => {
queryClient.invalidateQueries({
queryKey: credentialSetKeys.detailInvitations(variables.credentialSetId),
})
Expand Down
13 changes: 13 additions & 0 deletions apps/sim/hooks/queries/credentials.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
import { environmentKeys } from '@/hooks/queries/environment'
import { fetchJson } from '@/hooks/selectors/helpers'

/**
* Key prefix for OAuth credential queries.
* Duplicated here to avoid circular imports with oauth-credentials.ts.
*/
const OAUTH_CREDENTIALS_KEY = ['oauthCredentials'] as const

export type WorkspaceCredentialType = 'oauth' | 'env_workspace' | 'env_personal' | 'service_account'
export type WorkspaceCredentialRole = 'admin' | 'member'
export type WorkspaceCredentialMemberStatus = 'active' | 'pending' | 'revoked'
Expand Down Expand Up @@ -192,6 +198,9 @@ export function useCreateWorkspaceCredential() {
queryClient.invalidateQueries({
queryKey: workspaceCredentialKeys.lists(),
})
queryClient.invalidateQueries({
queryKey: OAUTH_CREDENTIALS_KEY,
})
},
})
}
Expand Down Expand Up @@ -269,6 +278,9 @@ export function useUpdateWorkspaceCredential() {
queryClient.invalidateQueries({
queryKey: workspaceCredentialKeys.lists(),
})
queryClient.invalidateQueries({
queryKey: OAUTH_CREDENTIALS_KEY,
})
},
})
}
Expand All @@ -290,6 +302,7 @@ export function useDeleteWorkspaceCredential() {
onSettled: (_data, _error, credentialId) => {
queryClient.invalidateQueries({ queryKey: workspaceCredentialKeys.detail(credentialId) })
queryClient.invalidateQueries({ queryKey: workspaceCredentialKeys.lists() })
queryClient.invalidateQueries({ queryKey: OAUTH_CREDENTIALS_KEY })
queryClient.invalidateQueries({ queryKey: environmentKeys.all })
},
})
Expand Down
Loading