import React, {useCallback} from 'react' import {View} from 'react-native' import {AppBskyActorDefs} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeHandle} from '#/lib/strings/handles' import {useProfilesQuery} from '#/state/queries/profile' import {type SessionAccount, useSession} from '#/state/session' import {UserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, useTheme} from '#/alf' import {Check_Stroke2_Corner0_Rounded as Check} from '#/components/icons/Check' import {ChevronRight_Stroke2_Corner0_Rounded as Chevron} from '#/components/icons/Chevron' import {Button} from './Button' import {Text} from './Typography' export function AccountList({ onSelectAccount, onSelectOther, otherLabel, pendingDid, }: { onSelectAccount: (account: SessionAccount) => void onSelectOther: () => void otherLabel?: string pendingDid: string | null }) { const {currentAccount, accounts} = useSession() const t = useTheme() const {_} = useLingui() const {data: profiles} = useProfilesQuery({ handles: accounts.map(acc => acc.did), }) const onPressAddAccount = useCallback(() => { onSelectOther() }, [onSelectOther]) return ( {accounts.map(account => ( p.did === account.did)} account={account} onSelect={onSelectAccount} isCurrentAccount={account.did === currentAccount?.did} isPendingAccount={account.did === pendingDid} /> ))} ) } function AccountItem({ profile, account, onSelect, isCurrentAccount, isPendingAccount, }: { profile?: AppBskyActorDefs.ProfileViewDetailed account: SessionAccount onSelect: (account: SessionAccount) => void isCurrentAccount: boolean isPendingAccount: boolean }) { const t = useTheme() const {_} = useLingui() const onPress = useCallback(() => { onSelect(account) }, [account, onSelect]) return ( ) }