// @flow import classNames from 'classnames'; import getProp from 'lodash/get'; import noop from 'lodash/noop'; import * as React from 'react'; import ActivityError from '../common/activity-error'; import ActivityMessage from '../common/activity-message'; import ActivityTimestamp from '../common/activity-timestamp'; import AnnotationActivityLink from './AnnotationActivityLink'; import AnnotationActivityMenu from './AnnotationActivityMenu'; import Avatar from '../Avatar'; import Media from '../../../../components/media'; import messages from './messages'; import UserLink from '../common/user-link'; import { ACTIVITY_TARGETS } from '../../../common/interactionTargets'; import { PLACEHOLDER_USER } from '../../../../constants'; import type { Annotation, AnnotationPermission } from '../../../../common/types/feed'; import type { GetAvatarUrlCallback, GetProfileUrlCallback } from '../../../common/flowTypes'; import type { User } from '../../../../common/types/core'; import './AnnotationActivity.scss'; type Props = { currentUser?: User, getAvatarUrl: GetAvatarUrlCallback, getUserProfileUrl?: GetProfileUrlCallback, isCurrentVersion: boolean, item: Annotation, onDelete?: ({ id: string, permissions: AnnotationPermission }) => any, onSelect?: (annotation: Annotation) => any, }; const AnnotationActivity = ({ item, getAvatarUrl, getUserProfileUrl, isCurrentVersion, onDelete = noop, onSelect = noop, }: Props) => { const { created_at, created_by, description, error, file_version, id, isPending, permissions = {}, target } = item; const handleDeleteConfirm = (): void => { onDelete({ id, permissions }); }; const handleOnSelect = () => { onSelect(item); }; const createdAtTimestamp = new Date(created_at).getTime(); const createdByUser = created_by || PLACEHOLDER_USER; const canDelete = permissions.can_delete; const isFileVersionUnavailable = file_version === null; const isMenuVisible = canDelete && !isPending; const message = (description && description.message) || ''; const linkMessage = isCurrentVersion ? messages.annotationActivityPageItem : messages.annotationActivityVersionLink; const linkValue = isCurrentVersion ? target.location.value : getProp(file_version, 'version_number'); const activityLinkMessage = isFileVersionUnavailable ? messages.annotationActivityVersionUnavailable : { ...linkMessage, values: { number: linkValue } }; return (
{isMenuVisible && ( )}
{/* $FlowFixMe */} {error ? : null}
); }; export default AnnotationActivity;