import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { useSidebar } from "@/components/ui/sidebar"; import { QtContext, resolveBskyUser } from "@/providers/qtprovider"; import { ChevronRight, Trash2, User, User2, Users } from "lucide-react"; import { useContext, useEffect, useState } from "preact/hooks"; import { Button } from "../ui/button"; import { Link } from "@tanstack/react-router"; export function UserSwitcher() { const { isMobile } = useSidebar(); let qt = useContext(QtContext); if (!qt) return null; const [userList, setUserList] = useState< { name: string; did: string; avatar: string }[] >([]); const [isDeleting, setIsDeleting] = useState(false); const handleRemoveAccount = async (did: string) => { if (!qt?.client) return; setIsDeleting(true); try { await qt.client.logout(did as `did:${string}:${string}`); } catch (error) { console.error("Failed to remove account:", error); } finally { setIsDeleting(false); } }; const refreshUserList = async () => { setUserList([]); if (!qt?.client?.currentAgent?.sub) return; try { qt.accounts.forEach(async (did) => { let { data } = await resolveBskyUser(did, qt); if (data && data.displayName) setUserList((ulist) => [ ...(ulist || []), { name: data.displayName || "", did: did, avatar: data.avatar || "", }, ]); }); } catch (err) { console.error("Failed to fetch user data:", err); } }; useEffect(() => { refreshUserList(); }, [qt]); return (
Switch Accounts
{userList.map((user) => ( { qt.client.switchAccount(user.did as `did:${string}:${string}`); }} > CN
{user.name} {user.did}
))}
{ event.preventDefault(); qt.openManagementModal(); console.log("Opening mgmt modal"); }} > Manage Accounts Log in to another account
); }