import { connect } from 'react-redux'; import { withRouter } from 'react-router-dom'; import { browserIcon, osIcon, deviceTypeIcon } from 'App/iconNames'; import { formatTimeOrDate } from 'App/date'; import { sessions as sessionsRoute, withSiteId } from 'App/routes'; import { Icon, CountryFlag, IconButton, BackLink } from 'UI'; import { toggleFavorite, setSessionPath } from 'Duck/sessions'; import cn from 'classnames'; import { connectPlayer } from 'Player'; import HeaderInfo from './HeaderInfo'; import SharePopup from '../shared/SharePopup/SharePopup'; import { fetchList as fetchListIntegration } from 'Duck/integrations/actions'; import stl from './playerBlockHeader.css'; import Issues from './Issues/Issues'; import Autoplay from './Autoplay'; import AssistActions from '../Assist/components/AssistActions'; import AssistTabs from '../Assist/components/AssistTabs'; const SESSIONS_ROUTE = sessionsRoute(); function capitalise(str) { return str[0].toUpperCase() + str.slice(1); } @connectPlayer(state => ({ width: state.width, height: state.height, live: state.live, loading: state.cssLoading || state.messagesLoading, })) @connect((state, props) => { const isAssist = state.getIn(['sessions', 'activeTab']).type === 'live'; const hasSessioPath = state.getIn([ 'sessions', 'sessionPath' ]).includes('/sessions'); return { session: state.getIn([ 'sessions', 'current' ]), sessionPath: state.getIn([ 'sessions', 'sessionPath' ]), loading: state.getIn([ 'sessions', 'toggleFavoriteRequest', 'loading' ]), disabled: state.getIn([ 'components', 'targetDefiner', 'inspectorMode' ]) || props.loading, jiraConfig: state.getIn([ 'issues', 'list' ]).first(), issuesFetched: state.getIn([ 'issues', 'issuesFetched' ]), local: state.getIn(['sessions', 'timezone']), funnelRef: state.getIn(['funnels', 'navRef']), siteId: state.getIn([ 'user', 'siteId' ]), hasSessionsPath: hasSessioPath && !isAssist, } }, { toggleFavorite, fetchListIntegration, setSessionPath }) @withRouter export default class PlayerBlockHeader extends React.PureComponent { componentDidMount() { if (!this.props.issuesFetched) this.props.fetchListIntegration('issues') } getDimension = (width, height) => (
{ width || 'x' } { height || 'x' }
); backHandler = () => { const { history, siteId, sessionPath } = this.props; if (sessionPath === history.location.pathname || sessionPath.includes("/session/")) { history.push(withSiteId(SESSIONS_ROUTE), siteId); } else { history.push(sessionPath ? sessionPath : withSiteId(SESSIONS_ROUTE, siteId)); } } toggleFavorite = () => { const { session } = this.props; this.props.toggleFavorite(session.sessionId); } render() { const { width, height, session: { sessionId, userCountry, userId, favorite, startedAt, userBrowser, userOs, userDevice, userBrowserVersion, userDeviceType, live, }, loading, // live, disabled, jiraConfig, fullscreen, hasSessionsPath, sessionPath, } = this.props; const _live = live && !hasSessionsPath; return (
{ formatTimeOrDate(startedAt) } { this.props.local === 'UTC' ? 'UTC' : ''}
{ live && hasSessionsPath && (
this.props.setSessionPath('')}> This Session is Now Continuing Live
)} { _live && } { _live && } { !_live && ( <>
} /> )} { !_live && jiraConfig && jiraConfig.token && }
); } }