Replace account dropdown with Menu
This commit is contained in:
@@ -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?`)}
|
||||||
|
|||||||
Reference in New Issue
Block a user