diff --git a/apps/web/app/(app)/environments/[environmentId]/settings/members/DeleteTeam.tsx b/apps/web/app/(app)/environments/[environmentId]/settings/members/DeleteTeam.tsx
index 34a51e4ac0..4637e4df85 100644
--- a/apps/web/app/(app)/environments/[environmentId]/settings/members/DeleteTeam.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/settings/members/DeleteTeam.tsx
@@ -1,61 +1,56 @@
"use client";
+import toast from "react-hot-toast";
import DeleteDialog from "@/components/shared/DeleteDialog";
import LoadingSpinner from "@/components/shared/LoadingSpinner";
-import { useEnvironment } from "@/lib/environments/environments";
+import { useState, Dispatch, SetStateAction } from "react";
+import { useRouter } from "next/navigation";
import { useMembers } from "@/lib/members";
-import { useProduct } from "@/lib/products/products";
import { useProfile } from "@/lib/profile";
import { truncate } from "@/lib/utils";
import { Button, ErrorComponent, Input } from "@formbricks/ui";
-import { useTeamMutation } from "@/lib/teams/mutateTeams";
-import { useTeam } from "@/lib/teams/teams";
-import { useState, Dispatch, SetStateAction } from "react";
-import toast from "react-hot-toast";
+import { useTeam, deleteTeam } from "@/lib/teams/teams";
import { useMemberships } from "@/lib/memberships";
export default function DeleteTeam({ environmentId }) {
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
+ const router = useRouter();
const { profile } = useProfile();
const { memberships } = useMemberships();
- const { team } = useMembers(environmentId);
- const { product, isLoadingProduct, isErrorProduct } = useProduct(environmentId);
- const { environment } = useEnvironment(environmentId);
- const { team: teamData } = useTeam(environmentId);
-
- console.log({ profile, team, product, environment, teamData, memberships });
+ const { team, isErrorTeam: isErrorTeamMembers } = useMembers(environmentId);
+ const { team: teamData, isLoadingTeam, isErrorTeam } = useTeam(environmentId);
const availableTeams = memberships?.length;
const role = team?.members?.filter((member) => member?.userId === profile?.id)[0]?.role;
- const isUserAdminOrOwner = role === "admin" || role === "owner";
- const isDeleteDisabled = availableTeams <= 1 || !isUserAdminOrOwner;
+ const isUserOwner = role === "owner";
+ const isDeleteDisabled = availableTeams <= 1 || !isUserOwner;
- if (isLoadingProduct) {
+ if (isLoadingTeam) {
return ;
}
- if (isErrorProduct) {
+ if (isErrorTeam) {
return ;
}
- // const handleDeleteProduct = async () => {
- // if (environment?.availableProducts?.length <= 1) {
- // toast.error("Cannot delete product. Your team needs at least 1.");
- // setIsDeleteDialogOpen(false);
- // return;
- // }
- // const deleteProductRes = await deleteProduct(environmentId);
+ const handleDeleteTeam = async () => {
+ if (memberships?.length <= 1) {
+ toast.error("Cannot delete team. You need at least 1.");
+ setIsDeleteDialogOpen(false);
+ return;
+ }
+ const deleteTeamRes = await deleteTeam(environmentId);
- // if (deleteProductRes?.id?.length > 0) {
- // toast.success("Product deleted successfully.");
- // // router.push("/");
- // } else if (deleteProductRes?.message?.length > 0) {
- // toast.error(deleteProductRes.message);
- // setIsDeleteDialogOpen(false);
- // } else {
- // toast.error("Error deleting product. Please try again.");
- // }
- // };
+ if (deleteTeamRes?.deletedTeam?.id?.length > 0) {
+ toast.success("Team deleted successfully.");
+ router.push("/");
+ } else if (deleteTeamRes?.message?.length > 0) {
+ toast.error(deleteTeamRes.message);
+ setIsDeleteDialogOpen(false);
+ } else {
+ toast.error("Error deleting team. Please try again.");
+ }
+ };
return (
@@ -77,12 +72,17 @@ export default function DeleteTeam({ environmentId }) {
)}
{isDeleteDisabled && (
- {!isUserAdminOrOwner
- ? "Only Admin or Owners can delete teams."
+ {!isUserOwner
+ ? "Only Owner can delete the team."
: "This is your only team, it cannot be deleted. Create a new team first."}
)}
-
+
);
}
@@ -91,64 +91,41 @@ interface DeleteTeamModalProps {
open: boolean;
setOpen: Dispatch>;
teamData: { name: string; id: string; plan: string };
+ deleteTeam: () => void;
}
-function DeleteTeamModal({ setOpen, open, teamData }: DeleteTeamModalProps) {
- const [deleting, setDeleting] = useState(false);
+function DeleteTeamModal({ setOpen, open, teamData, deleteTeam }: DeleteTeamModalProps) {
const [inputValue, setInputValue] = useState("");
const handleInputChange = (e) => {
setInputValue(e.target.value);
};
- const deleteTeam = async () => {
- try {
- setDeleting(true);
- // await deleteProfile();
- // await signOut();
- // await formbricksLogout();
- } catch (error) {
- toast.error("Something went wrong");
- } finally {
- setDeleting(false);
- setOpen(false);
- }
- };
-
return (
deleteTeam()}
+ onDelete={deleteTeam}
text="Before you proceed with deleting this team, please be aware of the following consequences:"
- isDeleting={deleting}
- disabled={inputValue !== teamData.name}>
+ disabled={inputValue !== teamData?.name}>
-
Permanent removal of all products linked to this team. This includes all surveys,
responses, user actions and attributes associated with these products.
- -
- If you are the owner of a team with other admins, the ownership of that team will be transferred
- to another admin.
-
- -
- If you are the only member of a team or there is no other admin present, the team will be
- irreversibly deleted along with all associated data.
-
- This action cannot be undone. If it's gone, it's gone.