import { useState, memo } from 'react'; import { useRecoilState } from 'recoil'; import * as Select from '@ariakit/react/select'; import { FileText, LogOut } from 'lucide-react'; import { LinkIcon, GearIcon, DropdownMenuSeparator } from '~/components'; import { useGetStartupConfig, useGetUserBalance } from '~/data-provider'; import FilesView from '~/components/Chat/Input/Files/FilesView'; import { useAuthContext } from '~/hooks/AuthContext'; import useAvatar from '~/hooks/Messages/useAvatar'; import { UserIcon } from '~/components/svg'; import { useLocalize } from '~/hooks'; import Settings from './Settings'; import store from '~/store'; function AccountSettings() { const localize = useLocalize(); const { user, isAuthenticated, logout } = useAuthContext(); const { data: startupConfig } = useGetStartupConfig(); const balanceQuery = useGetUserBalance({ enabled: !!isAuthenticated && startupConfig?.balance?.enabled, }); const [showSettings, setShowSettings] = useState(false); const [showFiles, setShowFiles] = useRecoilState(store.showFiles); const avatarSrc = useAvatar(user); const avatarSeed = user?.avatar || user?.name || user?.username || ''; return (
{avatarSeed.length === 0 ? ( ) : ( {`${user?.name )}
{user?.name ?? user?.username ?? localize('com_nav_user')}
{user?.email ?? localize('com_nav_user')}
{startupConfig?.balance?.enabled === true && balanceQuery.data != null && !isNaN(parseFloat(balanceQuery.data)) && ( <>
{localize('com_nav_balance')}: {parseFloat(balanceQuery.data).toFixed(2)}
)} setShowFiles(true)} className="select-item text-sm" > {startupConfig?.helpAndFaqURL !== '/' && ( window.open(startupConfig?.helpAndFaqURL, '_blank')} className="select-item text-sm" > )} setShowSettings(true)} className="select-item text-sm" > logout()} value="logout" className="select-item text-sm" > {localize('com_nav_log_out')}
{showFiles && } {showSettings && }
); } export default memo(AccountSettings);