Replace card row and add interaction state

This commit is contained in:
Eric Bailey
2024-08-22 16:42:15 -07:00
parent d6a1821bc2
commit 43028b3161
2 changed files with 41 additions and 31 deletions
+1 -1
View File
@@ -31,7 +31,7 @@ export function AccountDropdownBtn({account}: {account: SessionAccount}) {
size="xsmall" size="xsmall"
shape="round" shape="round"
color="secondary" color="secondary"
variant="solid"> variant="ghost">
<ButtonIcon icon={Ellipsis} size="sm" /> <ButtonIcon icon={Ellipsis} size="sm" />
</Button> </Button>
) )
+35 -25
View File
@@ -55,8 +55,11 @@ import {UserAvatar} from 'view/com/util/UserAvatar'
import {ScrollView} from 'view/com/util/Views' import {ScrollView} from 'view/com/util/Views'
import {DeactivateAccountDialog} from '#/screens/Settings/components/DeactivateAccountDialog' import {DeactivateAccountDialog} from '#/screens/Settings/components/DeactivateAccountDialog'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {Button, ButtonContext} from '#/components/Button'
import {useDialogControl} from '#/components/Dialog' import {useDialogControl} from '#/components/Dialog'
import {BirthDateSettingsDialog} from '#/components/dialogs/BirthDateSettings' import {BirthDateSettingsDialog} from '#/components/dialogs/BirthDateSettings'
import {Link as NewLink} from '#/components/Link'
import {Text as NewText} from '#/components/Typography'
import {Email2FAToggle} from './Email2FAToggle' import {Email2FAToggle} from './Email2FAToggle'
import {ExportCarDialog} from './ExportCarDialog' import {ExportCarDialog} from './ExportCarDialog'
@@ -72,62 +75,69 @@ function SettingsAccountCard({
logContext: 'Settings', logContext: 'Settings',
) => void ) => void
}) { }) {
const pal = usePalette('default')
const {_} = useLingui() const {_} = useLingui()
const t = useTheme() const t = useTheme()
const {currentAccount} = useSession() const {currentAccount} = useSession()
const {data: profile} = useProfileQuery({did: account.did}) const {data: profile} = useProfileQuery({did: account.did})
const isCurrentAccount = account.did === currentAccount?.did const isCurrentAccount = account.did === currentAccount?.did
const contents = ( const contents = (ctx: ButtonContext) => (
<View <View
style={[ style={[
pal.view, a.w_full,
styles.linkCard, a.flex_row,
account.did === pendingDid && t.atoms.bg_contrast_25, a.align_center,
a.gap_md,
a.py_md,
t.atoms.bg,
{
paddingHorizontal: 18,
marginBottom: 1,
},
account.did === pendingDid && [t.atoms.bg_contrast_25],
(ctx.hovered || ctx.pressed) && [t.atoms.bg_contrast_25],
]}> ]}>
<View style={styles.avi}>
<UserAvatar <UserAvatar
size={40} size={40}
avatar={profile?.avatar} avatar={profile?.avatar}
type={profile?.associated?.labeler ? 'labeler' : 'user'} type={profile?.associated?.labeler ? 'labeler' : 'user'}
/> />
</View> <View style={[a.flex_1]}>
<View style={[s.flex1]}> <NewText
<Text type="md-bold" style={[pal.text, a.self_start]} numberOfLines={1}> style={[a.text_md, a.font_bold, a.leading_tight]}
numberOfLines={1}>
{profile?.displayName || account.handle} {profile?.displayName || account.handle}
</Text> </NewText>
<Text type="sm" style={pal.textLight} numberOfLines={1}> <NewText
{account.handle} style={[t.atoms.text_contrast_medium, a.leading_tight]}
</Text> numberOfLines={1}>
@{account.handle}
</NewText>
</View> </View>
<AccountDropdownBtn account={account} /> <AccountDropdownBtn account={account} />
</View> </View>
) )
return isCurrentAccount ? ( return isCurrentAccount ? (
<Link <NewLink
href={makeProfileLink({ to={makeProfileLink({
did: currentAccount?.did, did: currentAccount?.did,
handle: currentAccount?.handle, handle: currentAccount?.handle,
})} })}
title={_(msg`Your profile`)} label={_(msg`Your profile`)}
noFeedback> style={[a.w_full]}>
{contents} {contents}
</Link> </NewLink>
) : ( ) : (
<TouchableOpacity <Button
testID={`switchToAccountBtn-${account.handle}`} testID={`switchToAccountBtn-${account.handle}`}
key={account.did}
onPress={ onPress={
pendingDid ? undefined : () => onPressSwitchAccount(account, 'Settings') pendingDid ? undefined : () => onPressSwitchAccount(account, 'Settings')
} }
accessibilityRole="button" label={_(msg`Switch to ${account.handle}`)}
accessibilityLabel={_(msg`Switch to ${account.handle}`)} style={[a.w_full]}>
accessibilityHint={_(msg`Switches the account you are logged in to`)}
activeOpacity={0.8}>
{contents} {contents}
</TouchableOpacity> </Button>
) )
} }