import { useState } from 'react'
import { Link } from 'react-router-dom'
import { IconLogin, IconLogout, IconUserCircle } from '@tabler/icons-react'
import { useAuth } from '../../hooks/useAuth'
import { useVisibleActor } from '../../hooks/useVisibleActor'
import { ProfileAvatar } from '../profile/ProfileAvatar'
type AccountButtonProps = {
ariaLabel: string
to: string
}
export function AccountButton({ ariaLabel, to }: AccountButtonProps) {
const { session, isLoading, error, signOut } = useAuth()
const [isSigningOut, setIsSigningOut] = useState(false)
const { actor, miniDoc, elementRef } = useVisibleActor(session?.info.sub ?? null)
const handle = miniDoc && miniDoc.handle !== 'handle.invalid' ? miniDoc.handle : null
const actionClassName =
'flex h-full w-9 items-center justify-center transition-colors hover:bg-ctp-surface-0'
const isSignedIn = session !== null
const isUnavailable = isLoading || (isSignedIn && handle === null)
async function handleSignOut() {
if (isSigningOut) return
setIsSigningOut(true)
try {
await signOut()
} finally {
setIsSigningOut(false)
}
}
const accountAvatar = actor ? (