// @flow import * as React from 'react'; import styled from 'styled-components'; import distanceInWordsToNow from 'date-fns/distance_in_words_to_now'; import { inject, observer } from 'mobx-react'; import { withRouter, type RouterHistory } from 'react-router-dom'; import { EditIcon } from 'outline-icons'; import Flex from 'shared/components/Flex'; import HelpText from 'components/HelpText'; import Modal from 'components/Modal'; import Button from 'components/Button'; import Avatar from 'components/Avatar'; import Badge from 'components/Badge'; import PaginatedDocumentList from 'components/PaginatedDocumentList'; import Subheading from 'components/Subheading'; import User from 'models/User'; import DocumentsStore from 'stores/DocumentsStore'; import AuthStore from 'stores/AuthStore'; import { settings } from 'shared/utils/routeHelpers'; type Props = { user: User, auth: AuthStore, documents: DocumentsStore, history: RouterHistory, onRequestClose: () => void, }; @observer class UserProfile extends React.Component { render() { const { user, auth, documents, ...rest } = this.props; if (!user) return null; const isCurrentUser = auth.user && auth.user.id === user.id; return (  {user.name} } {...rest} > {isCurrentUser ? 'You joined' : user.lastActiveAt ? 'Joined' : 'Invited'}{' '} {distanceInWordsToNow(new Date(user.createdAt))} ago. {user.isAdmin && ( Admin )} {user.isSuspended && Suspended} {isCurrentUser && ( )} Recently updated} empty={ {user.name} hasn’t updated any documents yet. } showCollection /> ); } } const Edit = styled.span` position: absolute; top: 46px; right: 0; `; const StyledBadge = styled(Badge)` position: relative; top: -2px; `; const Meta = styled(HelpText)` margin-top: -12px; `; export default inject('documents', 'auth')(withRouter(UserProfile));