// @flow import distanceInWordsToNow from "date-fns/distance_in_words_to_now"; import { observable } from "mobx"; import { observer } from "mobx-react"; import { EditIcon } from "outline-icons"; import * as React from "react"; 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, lastViewedAt: string, }; @observer class AvatarWithPresence extends React.Component { @observable isOpen: boolean = false; handleOpenProfile = () => { this.isOpen = true; }; handleCloseProfile = () => { this.isOpen = false; }; render() { const { user, lastViewedAt, isPresent, isEditing, isCurrentUser, } = this.props; return ( <> {user.name} {isCurrentUser && "(You)"}
{isPresent ? isEditing ? "currently editing" : "currently viewing" : `viewed ${distanceInWordsToNow(new Date(lastViewedAt))} ago`} } 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 AvatarWithPresence;