import { useState } from "react"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { ChevronDown, LogOut, Settings, UserPlus } from "lucide-react"; import { Link } from "@/lib/router"; import { authApi } from "@/api/auth"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { useCompany } from "@/context/CompanyContext"; import { queryKeys } from "@/lib/queryKeys"; import { useSidebar } from "../context/SidebarContext"; export function SidebarCompanyMenu() { const [open, setOpen] = useState(false); const queryClient = useQueryClient(); const { selectedCompany } = useCompany(); const { isMobile, setSidebarOpen } = useSidebar(); const { data: session } = useQuery({ queryKey: queryKeys.auth.session, queryFn: () => authApi.getSession(), retry: false, }); const signOutMutation = useMutation({ mutationFn: () => authApi.signOut(), onSuccess: async () => { setOpen(false); if (isMobile) setSidebarOpen(false); await queryClient.invalidateQueries({ queryKey: queryKeys.auth.session }); }, }); function closeNavigationChrome() { setOpen(false); if (isMobile) setSidebarOpen(false); } return ( {selectedCompany?.name ?? "Company"} {selectedCompany ? `Invite people to ${selectedCompany.name}` : "Invite people"} Company settings {session?.session ? ( <> signOutMutation.mutate()} disabled={signOutMutation.isPending} > {signOutMutation.isPending ? "Signing out..." : "Sign out"} ) : null} ); }