import { observable } from "mobx"; import { observer } from "mobx-react"; import * as React from "react"; import { WithTranslation, withTranslation } 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 = WithTranslation & { user: User; isPresent: boolean; isEditing: boolean; isCurrentUser: boolean; profileOnClick: boolean; }; @observer class AvatarWithPresence extends React.Component { @observable isOpen = 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" >
); } } const Centered = styled.div` text-align: center; `; const AvatarWrapper = styled.div<{ isPresent: boolean }>` opacity: ${(props) => (props.isPresent ? 1 : 0.5)}; transition: opacity 250ms ease-in-out; `; export default withTranslation()(AvatarWithPresence);