import { useState } from "react"; import { trackFormbricksAction } from "@calcom/web/modules/formbricks/lib/trackFormbricksAction"; import { ORG_SELF_SERVE_ENABLED, ORG_MINIMUM_PUBLISHED_TEAMS_SELF_SERVE_HELPER_DIALOGUE, } from "@calcom/lib/constants"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import type { RouterOutputs } from "@calcom/trpc/react"; import { trpc } from "@calcom/trpc/react"; import { Card } from "@calcom/ui/components/card"; import { BuildingIcon, ChartLineIcon, PaintbrushIcon, PencilIcon, UserPlusIcon, UsersIcon, } from "@coss/ui/icons"; import { showToast } from "@calcom/ui/components/toast"; import { revalidateTeamsList } from "@calcom/web/app/(use-page-wrapper)/(main-nav)/teams/actions"; import TeamListItem from "./TeamListItem"; interface Props { teams: RouterOutputs["viewer"]["teams"]["list"]; orgId: number | null; /** * True for teams that are pending invite acceptance */ pending?: boolean; } export default function TeamList(props: Props) { const utils = trpc.useUtils(); const { t } = useLocale(); const { orgId } = props; const [hideDropdown, setHideDropdown] = useState(false); function selectAction(action: string, teamId: number) { switch (action) { case "disband": deleteTeam(teamId); break; } } const deleteTeamMutation = trpc.viewer.teams.delete.useMutation({ async onSuccess() { await utils.viewer.teams.list.invalidate(); revalidateTeamsList(); await utils.viewer.teams.hasTeamPlan.invalidate(); trackFormbricksAction("team_disbanded"); }, async onError(err) { showToast(err.message, "error"); }, }); function deleteTeam(teamId: number) { deleteTeamMutation.mutate({ teamId }); } return ( ); }