import { observer } from "mobx-react"; import * as React from "react"; import { useTranslation } from "react-i18next"; import styled from "styled-components"; import { $Diff } from "utility-types"; import User from "~/models/User"; import Avatar from "~/components/Avatar"; import Badge from "~/components/Badge"; import Flex from "~/components/Flex"; import { Props as TableProps } from "~/components/Table"; import Time from "~/components/Time"; import useCurrentUser from "~/hooks/useCurrentUser"; import UserMenu from "~/menus/UserMenu"; const Table = React.lazy( () => import( /* webpackChunkName: "table" */ "~/components/Table" ) ); type Props = $Diff< TableProps, { columns: any; } > & { data: User[]; canManage: boolean; }; function PeopleTable({ canManage, ...rest }: Props) { const { t } = useTranslation(); const currentUser = useCurrentUser(); const columns = React.useMemo( () => [ { id: "name", Header: t("Name"), accessor: "name", Cell: observer( ({ value, row }: { value: string; row: { original: User } }) => ( {value}{" "} {currentUser.id === row.original.id && `(${t("You")})`} ) ), }, canManage ? { id: "email", Header: t("Email"), accessor: "email", Cell: observer(({ value }: { value: string }) => <>{value}), } : undefined, { id: "lastActiveAt", Header: t("Last active"), accessor: "lastActiveAt", Cell: observer(({ value }: { value: string }) => value ?