Path: blob/main/components/dashboard/src/data/workspaces/delete-workspace-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 { workspaceClient } from "../../service/public-api";8import { getListWorkspacesQueryKey, ListWorkspacesQueryResult } from "./list-workspaces-query";9import { useCurrentOrg } from "../organizations/orgs-query";1011type DeleteWorkspaceArgs = {12workspaceId: string;13};1415export const useDeleteWorkspaceMutation = () => {16const queryClient = useQueryClient();17const org = useCurrentOrg();1819return useMutation({20mutationFn: async ({ workspaceId }: DeleteWorkspaceArgs) => {21return await workspaceClient.deleteWorkspace({ workspaceId });22},23onSuccess: (_, { workspaceId }) => {24const queryKey = getListWorkspacesQueryKey(org.data?.id);2526// Remove workspace from cache so it's reflected right away27queryClient.setQueryData<ListWorkspacesQueryResult>(queryKey, (oldWorkspacesData) => {28return oldWorkspacesData?.filter((info) => {29return info.id !== workspaceId;30});31});3233queryClient.invalidateQueries({ queryKey });34},35});36};373839