// @flow import { capitalize } from "lodash"; import * as React from "react"; import { Link } from "react-router-dom"; import styled from "styled-components"; import Event from "models/Event"; import Avatar from "components/Avatar"; import ListItem from "components/List/Item"; import Time from "components/Time"; type Props = { event: Event, }; const description = (event) => { switch (event.name) { case "api_keys.create": return ( <> Created the API token {event.data.name} ); case "api_keys.delete": return ( <> Revoked the API token {event.data.name} ); case "teams.create": return "Created the team"; case "shares.create": case "shares.revoke": return ( <> {capitalize(event.verbPastTense)} a{" "} share link to the{" "} {event.data.name}{" "} document ); case "shares.update": return ( <> {event.data.published ? ( <> Published a document{" "} share link ) : ( <> Unpublished a document{" "} share link )} ); case "users.create": return <>{event.data.name} created an account; case "users.invite": return ( <> {capitalize(event.verbPastTense)} {event.data.name} ( {event.data.email || ""} ) ); case "users.suspend": return ( <> Suspended {event.data.name}’s account ); case "users.activate": return ( <> Unsuspended {event.data.name}’s account ); case "users.promote": return ( <> Made {event.data.name} an admin ); case "users.demote": return ( <> Made {event.data.name} a member ); case "users.delete": return "Deleted their account"; case "groups.create": return ( <> Created the group {event.data.name} ); case "groups.update": return ( <> Update the group {event.data.name} ); case "groups.delete": return ( <> Deleted the group {event.data.name} ); case "collections.add_user": case "collections.add_group": return ( <> Granted {event.data.name} access to a{" "} collection ); case "collections.remove_user": case "collections.remove_group": return ( <> Revoked {event.data.name} access to a{" "} collection ); default: } if (event.documentId) { if (event.name === "documents.delete") { return ( <> Deleted the {event.data.title} document ); } if (event.name === "documents.create") { return ( <> {capitalize(event.verbPastTense)} the{" "} {event.data.title || "Untitled"} {" "} document{" "} {event.data.templateId && ( <> from a template )} ); } return ( <> {capitalize(event.verbPastTense)} the{" "} {event.data.title || "Untitled"} {" "} document ); } if (event.collectionId) { if (event.name === "collections.delete") { return ( <> Deleted the {event.data.name} collection ); } return ( <> {capitalize(event.verbPastTense)} the{" "} {event.data.name} {" "} collection ); } if (event.userId) { return ( <> {capitalize(event.verbPastTense)} the user {event.data.name} ); } return ""; }; const EventListItem = ({ event }: Props) => { return ( } subtitle={ <> {description(event)}