// @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)} ago ·{' '}
{event.name}
}
actions={
event.actorIpAddress ? (
{event.actorIpAddress}
) : (
undefined
)
}
/>
);
};
const IP = styled('span')`
color: ${props => props.theme.textTertiary};
font-size: 12px;
`;
export default EventListItem;