import { formatDistanceToNow } from "date-fns"; import { observer } from "mobx-react"; import { EditIcon } from "outline-icons"; import * as React from "react"; import { useTranslation } from "react-i18next"; import { useHistory } from "react-router-dom"; import styled from "styled-components"; import User from "~/models/User"; import Avatar from "~/components/Avatar"; import Badge from "~/components/Badge"; import Button from "~/components/Button"; import Flex from "~/components/Flex"; import HelpText from "~/components/HelpText"; import Modal from "~/components/Modal"; import PaginatedDocumentList from "~/components/PaginatedDocumentList"; import Subheading from "~/components/Subheading"; import useCurrentUser from "~/hooks/useCurrentUser"; import useStores from "~/hooks/useStores"; import { settingsPath } from "~/utils/routeHelpers"; type Props = { user: User; onRequestClose: () => void; isOpen: boolean; }; function UserProfile(props: Props) { const { t } = useTranslation(); const { documents } = useStores(); const currentUser = useCurrentUser(); const history = useHistory(); const { user, ...rest } = props; if (!user) { return null; } const isCurrentUser = currentUser.id === user.id; return (  {user.name} } {...rest} > {isCurrentUser ? t("You joined") : user.lastActiveAt ? t("Joined") : t("Invited")}{" "} {t("{{ time }} ago.", { time: formatDistanceToNow(Date.parse(user.createdAt)), })} {user.isAdmin && ( {t("Admin")} )} {user.isSuspended && {t("Suspended")}} {isCurrentUser && ( )} {t("Recently updated")}} empty={ {t("{{ userName }} hasn’t updated any documents yet.", { userName: user.name, })} } 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 observer(UserProfile);