import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import { useTranslation, Trans } from 'react-i18next'; import { Link } from 'react-router-dom'; import { Button } from 'semantic-ui-react'; import { withPopup } from '../../lib/popup'; import { Popup } from '../../lib/custom-ui'; import Paths from '../../constants/Paths'; import { ActivityTypes } from '../../constants/Enums'; import User from '../User'; import styles from './NotificationsPopup.module.scss'; const NotificationsStep = React.memo(({ items, onDelete, onClose }) => { const [t] = useTranslation(); const handleDelete = useCallback( (id) => { onDelete(id); }, [onDelete], ); const renderItemContent = useCallback( ({ activity, card }) => { switch (activity.type) { case ActivityTypes.MOVE_CARD: return ( {activity.user.name} {' moved '} {card.name} {' from '} {activity.data.fromList.name} {' to '} {activity.data.toList.name} ); case ActivityTypes.COMMENT_CARD: return ( {activity.user.name} {` left a new comment «${activity.data.text}» to `} {card.name} ); default: } return null; }, [onClose], ); return ( <> {t('common.notifications')} {items.length > 0 ? items.map((item) => (
{item.card && item.activity ? ( <> {renderItemContent(item)} ) : (
{t('common.cardOrActionAreDeleted')}
)}
)) : t('common.noUnreadNotifications')}
); }); NotificationsStep.propTypes = { items: PropTypes.array.isRequired, // eslint-disable-line react/forbid-prop-types onDelete: PropTypes.func.isRequired, onClose: PropTypes.func.isRequired, }; export default withPopup(NotificationsStep, { position: 'bottom right', });