Path: blob/main/components/dashboard/src/data/auth-providers/delete-user-auth-provider-mutation.ts
2501 views
/**1* Copyright (c) 2023 Gitpod GmbH. All rights reserved.2* Licensed under the GNU Affero General Public License (AGPL).3* See License.AGPL.txt in the project root for license information.4*/56import { useMutation, useQueryClient } from "@tanstack/react-query";7import { authProviderClient } from "../../service/public-api";8import { AuthProvider, DeleteAuthProviderRequest } from "@gitpod/public-api/lib/gitpod/v1/authprovider_pb";9import { getUserAuthProvidersQueryKey } from "./user-auth-providers-query";10import { useCurrentUser } from "../../user-context";1112type DeleteAuthProviderArgs = {13providerId: string;14};15export const useDeleteUserAuthProviderMutation = () => {16const queryClient = useQueryClient();17const user = useCurrentUser();1819return useMutation({20mutationFn: async ({ providerId }: DeleteAuthProviderArgs) => {21if (!user) {22throw new Error("No current user");23}2425const response = await authProviderClient.deleteAuthProvider(26new DeleteAuthProviderRequest({27authProviderId: providerId,28}),29);3031return response;32},33onSuccess: (_, { providerId }) => {34if (!user) {35throw new Error("No current user");36}3738const queryKey = getUserAuthProvidersQueryKey(user.id);39queryClient.setQueryData<AuthProvider[]>(queryKey, (providers) => {40return providers?.filter((p) => p.id !== providerId);41});4243queryClient.invalidateQueries({ queryKey });44},45});46};474849