import clsx from 'clsx' import { PencilIcon } from '@heroicons/react/outline' import { User } from 'common/user' import { useEffect, useState } from 'react' import { useFollowers, useFollows } from 'web/hooks/use-follows' import { prefetchUsers, useUser } from 'web/hooks/use-user' import { FollowList } from './follow-list' import { Col } from './layout/col' import { Modal } from './layout/modal' import { Tabs } from './layout/tabs' import { useDiscoverUsers } from 'web/hooks/use-users' import { TextButton } from './text-button' export function FollowingButton(props: { user: User }) { const { user } = props const [isOpen, setIsOpen] = useState(false) const followingIds = useFollows(user.id) const followerIds = useFollowers(user.id) return ( <> setIsOpen(true)}> {followingIds?.length ?? ''}{' '} Following ) } export function EditFollowingButton(props: { user: User; className?: string }) { const { user, className } = props const [isOpen, setIsOpen] = useState(false) const followingIds = useFollows(user.id) const followerIds = useFollowers(user.id) return (
setIsOpen(true)} > Following
) } export function FollowersButton(props: { user: User }) { const { user } = props const [isOpen, setIsOpen] = useState(false) const followingIds = useFollows(user.id) const followerIds = useFollowers(user.id) return ( <> setIsOpen(true)}> {followerIds?.length ?? ''}{' '} Followers ) } function FollowsDialog(props: { user: User followingIds: string[] followerIds: string[] defaultTab: 'following' | 'followers' isOpen: boolean setIsOpen: (isOpen: boolean) => void }) { const { user, followingIds, followerIds, defaultTab, isOpen, setIsOpen } = props useEffect(() => { prefetchUsers([...followingIds, ...followerIds]) }, [followingIds, followerIds]) const currentUser = useUser() const discoverUserIds = useDiscoverUsers(user?.id) useEffect(() => { prefetchUsers(discoverUserIds) }, [discoverUserIds]) return (
{user.name}
@{user.username}
, }, { title: 'Followers', content: , }, ...(currentUser ? [ { title: 'Similar', content: , }, ] : []), ]} defaultIndex={defaultTab === 'following' ? 0 : 1} />
) }