"use client" import type { Team } from "better-auth/plugins" import { Loader2, UsersIcon } from "lucide-react" import { useContext, useState } from "react" import { AuthUIContext } from "../../../lib/auth-ui-provider" import { cn, getLocalizedError } from "../../../lib/utils" import type { AuthLocalization } from "../../../localization/auth-localization" import type { Refetch } from "../../../types/refetch" import { Button } from "../../ui/button" import { Card } from "../../ui/card" import type { SettingsCardClassNames } from "../shared/settings-card" export interface UserTeamCellProps { className?: string classNames?: SettingsCardClassNames localization?: Partial team: Team refetch?: Refetch } export function UserTeamCell({ className, classNames, team, localization, refetch }: UserTeamCellProps) { const { authClient, hooks: { useSession }, localization: contextLocalization, toast, localizeErrors } = useContext(AuthUIContext) localization = { ...contextLocalization, ...localization } const { data: sessionData, refetch: refetchSession } = useSession() // @ts-expect-error const isCurrentTeam = team.id === sessionData?.session?.activeTeamId const [isUpdating, setIsUpdating] = useState(false) const handleSetActiveTeam = async () => { try { setIsUpdating(true) await authClient.organization.setActiveTeam({ teamId: team.id, fetchOptions: { throw: true } }) toast({ variant: "success", message: localization.UPDATE_TEAM_SUCCESS }) await refetchSession?.() await refetch?.() } catch (error) { toast({ variant: "error", message: getLocalizedError({ error, localization, localizeErrors }) }) } finally { setIsUpdating(false) } } return (
{team.name}
{localization?.TEAM}
) }