import type { ServiceUserUserInfoData } from '@/client'; import { identicon } from '@dicebear/collection'; import { createAvatar } from '@dicebear/core'; import MDEditor from '@uiw/react-md-editor'; import { isEmpty, isNil, } from 'lodash-es'; import { Mail, Pencil } from 'lucide-react'; import { useMemo, useState } from 'react'; import Markdown from 'react-markdown'; import { toast } from 'sonner'; import { Avatar, AvatarImage } from '@/components/ui/avatar'; import { useUpdateUser } from '@/hooks/data/useUpdateUser'; import { base64ToUtf8, utf8ToBase64 } from '@/lib/utils'; import { Button } from '../ui/button'; import { EditProfileDialog } from './edit-profile-dialog'; export function Profile({ user }: { user: ServiceUserUserInfoData }) { const [bio, setBio] = useState(() => base64ToUtf8(user.bio ?? '')); const [enableBioEdit, setEnableBioEdit] = useState(false); const { mutateAsync } = useUpdateUser(); const IdentIcon = useMemo(() => { const avatar = createAvatar(identicon, { size: 128, seed: user.user_id, }).toDataUri(); return Avatar; }, [user.user_id]); return (
{!isEmpty(user.avatar) ? : IdentIcon}
{user.email}
{/* Bio */} {enableBioEdit ? ( ) :
{bio}
}
); }