Replace account dropdown with Menu

This commit is contained in:
Eric Bailey
2024-08-22 16:29:43 -07:00
parent 990bf306c5
commit d6a1821bc2
+43 -36
View File
@@ -1,53 +1,60 @@
import React from 'react' import React from 'react'
import {Pressable} from 'react-native' import {msg, Trans} from '@lingui/macro'
import {
FontAwesomeIcon,
FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {SessionAccount, useSessionApi} from '#/state/session' import {SessionAccount, useSessionApi} from '#/state/session'
import {usePalette} from 'lib/hooks/usePalette' import {HITSLOP_10} from 'lib/constants'
import {s} from 'lib/styles' import {Button, ButtonIcon} from '#/components/Button'
import {useDialogControl} from '#/components/Dialog' import {useDialogControl} from '#/components/Dialog'
import {DotGrid_Stroke2_Corner0_Rounded as Ellipsis} from '#/components/icons/DotGrid'
import {Trash_Stroke2_Corner0_Rounded as Trash} from '#/components/icons/Trash'
import * as Menu from '#/components/Menu'
import * as Prompt from '#/components/Prompt' import * as Prompt from '#/components/Prompt'
import * as Toast from '../../com/util/Toast' import * as Toast from '../../com/util/Toast'
import {DropdownItem, NativeDropdown} from './forms/NativeDropdown'
export function AccountDropdownBtn({account}: {account: SessionAccount}) { export function AccountDropdownBtn({account}: {account: SessionAccount}) {
const pal = usePalette('default') const {_} = useLingui()
const {removeAccount} = useSessionApi() const {removeAccount} = useSessionApi()
const removePromptControl = useDialogControl() const removePromptControl = useDialogControl()
const {_} = useLingui()
const items: DropdownItem[] = [
{
label: _(msg`Remove account`),
onPress: removePromptControl.open,
icon: {
ios: {
name: 'trash',
},
android: 'ic_delete',
web: ['far', 'trash-can'],
},
},
]
return ( return (
<> <>
<Pressable accessibilityRole="button" style={s.pl10}> <Menu.Root>
<NativeDropdown <Menu.Trigger label={_(`Account options`)}>
testID="accountSettingsDropdownBtn" {({props}) => {
items={items} return (
accessibilityLabel={_(msg`Account options`)} <Button
accessibilityHint=""> {...props}
<FontAwesomeIcon testID="accountSettingsDropdownBtn"
icon="ellipsis-h" label={_(`Account options`)}
style={pal.textLight as FontAwesomeIconStyle} hitSlop={HITSLOP_10}
/> size="xsmall"
</NativeDropdown> shape="round"
</Pressable> color="secondary"
variant="solid">
<ButtonIcon icon={Ellipsis} size="sm" />
</Button>
)
}}
</Menu.Trigger>
<Menu.Outer style={{minWidth: 170}}>
<Menu.Group>
<Menu.Item
testID="profileHeaderDropdownShareBtn"
label={_(msg`Remove account`)}
onPress={() => {
removePromptControl.open()
}}>
<Menu.ItemText>
<Trans>Remove account</Trans>
</Menu.ItemText>
<Menu.ItemIcon icon={Trash} />
</Menu.Item>
</Menu.Group>
</Menu.Outer>
</Menu.Root>
<Prompt.Basic <Prompt.Basic
control={removePromptControl} control={removePromptControl}
title={_(msg`Remove from quick access?`)} title={_(msg`Remove from quick access?`)}