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, setSessionPath } from 'Duck/sessions'; import { session as sessionRoute, withSiteId } from 'App/routes'; import { durationFormatted, formatTimeOrDate } from 'App/date'; import stl from './sessionItem.css'; import LiveTag from 'Shared/LiveTag'; import Bookmark from 'Shared/Bookmark'; import Counter from './Counter' import { withRouter } from 'react-router-dom'; const Label = ({ label = '', color = 'color-gray-medium'}) => (
{label}
) @connect(state => ({ timezone: state.getIn(['sessions', 'timezone']), isAssist: state.getIn(['sessions', 'activeTab']).type === 'live', siteId: state.getIn([ 'user', 'siteId' ]), }), { toggleFavorite, setSessionPath }) @withRouter export default class SessionItem extends React.PureComponent { // 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, live }, timezone, onUserClick = () => null, hasUserFilter = false, disableUser = false } = this.props; const formattedDuration = durationFormatted(duration); const hasUserId = userId || userAnonymousId; return (
(!disableUser && !hasUserFilter && hasUserId) && onUserClick(userId, userAnonymousId)} >
{ live ? : formattedDuration }
{!live && (
{ eventsCount }
)}
{!live && (
{ errorsCount }
)} { live && }
); } }