diff --git a/src/view/shell/bottom-bar/BottomBarWeb.tsx b/src/view/shell/bottom-bar/BottomBarWeb.tsx index 37a8e45d4c..1a0cb1bc78 100644 --- a/src/view/shell/bottom-bar/BottomBarWeb.tsx +++ b/src/view/shell/bottom-bar/BottomBarWeb.tsx @@ -14,15 +14,19 @@ import {useGate} from '#/lib/statsig/statsig' import {useHomeBadge} from '#/state/home-badge' import {useUnreadMessageCount} from '#/state/queries/messages/list-conversations' import {useUnreadNotifications} from '#/state/queries/notifications/unread' +import {useProfileQuery} from '#/state/queries/profile' import {useSession} from '#/state/session' import {useLoggedOutViewControls} from '#/state/shell/logged-out' import {useShellLayout} from '#/state/shell/shell-layout' import {useCloseAllActiveElements} from '#/state/util' import {Link} from '#/view/com/util/Link' +import {UserAvatar} from '#/view/com/util/UserAvatar' import {Logo} from '#/view/icons/Logo' import {Logotype} from '#/view/icons/Logotype' import {atoms as a, useTheme} from '#/alf' import {Button, ButtonText} from '#/components/Button' +import {useDialogControl} from '#/components/Dialog' +import {SwitchAccountDialog} from '#/components/dialogs/SwitchAccount' import { Bell_Filled_Corner0_Rounded as BellFilled, Bell_Stroke2_Corner0_Rounded as Bell, @@ -37,10 +41,6 @@ import { Message_Stroke2_Corner0_Rounded as Message, Message_Stroke2_Corner0_Rounded_Filled as MessageFilled, } from '#/components/icons/Message' -import { - UserCircle_Filled_Corner0_Rounded as UserCircleFilled, - UserCircle_Stroke2_Corner0_Rounded as UserCircle, -} from '#/components/icons/UserCircle' import {Text} from '#/components/Typography' import {styles} from './BottomBarStyles' @@ -53,6 +53,8 @@ export function BottomBarWeb() { const closeAllActiveElements = useCloseAllActiveElements() const {footerHeight} = useShellLayout() const hideBorder = useHideBottomBarBorder() + const accountSwitchControl = useDialogControl() + const {data: profile} = useProfileQuery({did: currentAccount?.did}) const iconWidth = 26 const unreadMessageCount = useUnreadMessageCount() @@ -71,161 +73,178 @@ export function BottomBarWeb() { // setShowLoggedOut(true) }, [requestSwitchToAccount, closeAllActiveElements]) - return ( - footerHeight.set(event.nativeEvent.layout.height)}> - {hasSession ? ( - <> - - {({isActive}) => { - const Icon = isActive ? HomeFilled : Home - return ( - - ) - }} - - - {({isActive}) => { - const Icon = isActive ? MagnifyingGlassFilled : MagnifyingGlass - return ( - - ) - }} - + const onLongPressProfile = React.useCallback(() => { + accountSwitchControl.open() + }, [accountSwitchControl]) - {hasSession && ( - <> - - {({isActive}) => { - const Icon = isActive ? MessageFilled : Message - return ( - - ) - }} - - - {({isActive}) => { - const Icon = isActive ? BellFilled : Bell - return ( - - ) - }} - - - {({isActive}) => { - const Icon = isActive ? UserCircleFilled : UserCircle - return ( - - ) - }} - - - )} - - ) : ( - <> - - - - - + return ( + <> + + + footerHeight.set(event.nativeEvent.layout.height)}> + {hasSession ? ( + <> + + {({isActive}) => { + const Icon = isActive ? HomeFilled : Home + return ( + + ) + }} + + + {({isActive}) => { + const Icon = isActive ? MagnifyingGlassFilled : MagnifyingGlass + return ( + + ) + }} + + + {hasSession && ( + <> + + {({isActive}) => { + const Icon = isActive ? MessageFilled : Message + return ( + + ) + }} + + + {({isActive}) => { + const Icon = isActive ? BellFilled : Bell + return ( + + ) + }} + + + {({isActive}) => ( + + + + + + )} + + + )} + + ) : ( + <> + + + + + + + + + + + - - - - - - - - )} - + + )} + + ) } @@ -235,7 +254,8 @@ const NavItem: React.FC<{ routeName: string hasNew?: boolean notificationCount?: string -}> = ({children, href, routeName, hasNew, notificationCount}) => { + onLongPress?: () => void +}> = ({children, href, routeName, hasNew, notificationCount, onLongPress}) => { const t = useTheme() const {_} = useLingui() const {currentAccount} = useSession() @@ -269,7 +289,8 @@ const NavItem: React.FC<{ navigationAction={isOnDifferentProfile ? 'push' : 'navigate'} aria-role="link" aria-label={routeName} - accessible={true}> + accessible={true} + onLongPress={onLongPress}> {children({isActive})} {notificationCount ? (