// @flow import { observable } from "mobx"; import { observer } from "mobx-react"; import { EditIcon } from "outline-icons"; import * as React from "react"; import { withTranslation, type TFunction } from "react-i18next"; import styled from "styled-components"; import User from "models/User"; import UserProfile from "scenes/UserProfile"; import Avatar from "components/Avatar"; import Tooltip from "components/Tooltip"; type Props = { user: User, isPresent: boolean, isEditing: boolean, isCurrentUser: boolean, profileOnClick: boolean, t: TFunction, }; @observer class AvatarWithPresence extends React.Component { @observable isOpen: boolean = false; handleOpenProfile = () => { this.isOpen = true; }; handleCloseProfile = () => { this.isOpen = false; }; render() { const { user, isPresent, isEditing, isCurrentUser, t } = this.props; const action = isPresent ? isEditing ? t("currently editing") : t("currently viewing") : t("previously edited"); return ( <> {user.name} {isCurrentUser && `(${t("You")})`} {action && ( <>
{action} )} } placement="bottom" > : undefined} />
); } } const Centered = styled.div` text-align: center; `; const AvatarWrapper = styled.div` opacity: ${(props) => (props.isPresent ? 1 : 0.5)}; transition: opacity 250ms ease-in-out; `; export default withTranslation()(AvatarWithPresence);