import * as React from "react"; import { NavLink } from "./NavLink"; import { Arrow, AvatarContainer, CvlContainer, UserAvatar, NavUser, StyledVisibleIfLoggedInLink, NavBarButton, BorderlessNavBarButton, HandleContainer, UserAvatarFigure, } from "./styledComponents"; import { NavLinkDashboardText } from "./textComponents"; import { ICivilContext, CivilContext, ClipLoader } from "@joincivil/components"; import { useDispatch } from "react-redux"; import { showWeb3LoginModal, showWeb3SignupModal } from "../../redux/actionCreators/ui"; import NavDrawer from "./NavDrawer"; const UserAccount: React.FunctionComponent = props => { // context const civilCtx = React.useContext(CivilContext); if (civilCtx === null) { // context still loading return <>; } // redux const dispatch = useDispatch(); const civilUser = civilCtx.currentUser; const userAccount = civilUser && civilUser.ethAddress; // state const [isUserDrawerOpen, setUserDrawerOpen] = React.useState(false); const toggleDrawer = () => { if (userAccount) { setUserDrawerOpen(!isUserDrawerOpen); } }; async function onLoginPressed(): Promise { dispatch!(await showWeb3LoginModal()); } async function onSignupPressed(): Promise { dispatch!(await showWeb3SignupModal()); } if (civilUser) { const userAccountElRef = React.createRef(); const tiny72AvatarDataUrl = civilUser.userChannel!.tiny72AvatarDataUrl; const showFigure = !tiny72AvatarDataUrl; const handle = civilUser.userChannel!.handle; const initial = handle ? handle.charAt(0) : "?"; return ( <>
toggleDrawer()}> {tiny72AvatarDataUrl && } {showFigure && {initial}} {civilUser.userChannel!.handle}
{isUserDrawerOpen && ( setUserDrawerOpen(false)} /> )} ); } else if (civilCtx.auth.loading) { return ; } return ( <> Log In Sign Up ); }; export default UserAccount;