// @flow import * as React from 'react'; import { Link } from 'react-router-dom'; import { capitalize } from 'lodash'; import styled from 'styled-components'; import Time from 'shared/components/Time'; import ListItem from 'components/List/Item'; import Avatar from 'components/Avatar'; import Event from 'models/Event'; type Props = { event: Event, }; const description = event => { switch (event.name) { case 'teams.create': return 'Created the team'; case 'shares.create': case 'shares.revoke': return ( {capitalize(event.verbPastTense)} a{' '} public link to the{' '} {event.data.name}{' '} document ); case 'users.create': return ( {event.data.name} created an account ); case 'users.invite': return ( {capitalize(event.verbPastTense)} {event.data.name} ( {event.data.email || ''} ) ); case 'collections.add_user': return ( Added {event.data.name} to a private{' '} collection ); case 'collections.remove_user': return ( Remove {event.data.name} from a private{' '} collection ); default: } if (event.documentId) { if (event.name === 'documents.delete') { return ( Deleted the {event.data.title} document ); } return ( {capitalize(event.verbPastTense)} the{' '} {event.data.title} 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)} } actions={ event.actorIpAddress ? ( {event.actorIpAddress} ) : ( undefined ) } /> ); }; const IP = styled('span')` color: ${props => props.theme.textTertiary}; font-size: 12px; `; export default EventListItem;