import { connect } from 'react-redux'; import cn from 'classnames'; import { Link, Icon, OsIcon, BrowserIcon, CountryFlag, Avatar, TextEllipsis } from 'UI'; import { deviceTypeIcon } from 'App/iconNames'; import { toggleFavorite } from 'Duck/sessions'; import { session as sessionRoute } from 'App/routes'; import { durationFormatted, formatTimeOrDate } from 'App/date'; import stl from './sessionItem.css'; const Label = ({ label = '', color = 'color-gray-medium'}) => (
{label}
) @connect(state => ({ timezone: state.getIn(['sessions', 'timezone']) }), { toggleFavorite }) export default class SessionItem extends React.PureComponent { state = { favouriting: false }; toggleFavorite = () => { this.setState({ favouriting: true }); this.props.toggleFavorite(this.props.session).then(() => { this.setState({ favouriting: false }); }); } // eslint-disable-next-line complexity render() { const { session: { sessionId, userBrowser, userOs, userId, userAnonymousId, userDisplayName, userCountry, startedAt, duration, eventsCount, errorsCount, pagesCount, viewed, favorite, userDeviceType, userUuid, userNumericHash, }, timezone, onUserClick, hasUserFilter = false, disableUser = false } = this.props; const formattedDuration = durationFormatted(duration); const hasUserId = userId || userAnonymousId; return (
(!disableUser && !hasUserFilter && hasUserId) && onUserClick(userId, userAnonymousId)} >
{ formattedDuration }
{ eventsCount }
{ errorsCount }
); } }