import React from 'react'; import { connect } from 'react-redux'; import { List } from 'immutable'; import { countries } from 'App/constants'; import { useStore } from 'App/mstore'; import { browserIcon, osIcon, deviceTypeIcon } from 'App/iconNames'; import { formatTimeOrDate } from 'App/date'; import { Avatar, TextEllipsis, CountryFlag, Icon, Tooltip, Popover } from 'UI'; import cn from 'classnames'; import { withRequest } from 'HOCs'; import SessionInfoItem from 'Components/Session_/SessionInfoItem'; import { useModal } from 'App/components/Modal'; import UserSessionsModal from 'Shared/UserSessionsModal'; import { IFRAME } from 'App/constants/storageKeys'; import { capitalize } from "App/utils"; function UserCard({ className, request, session, width, height, similarSessions, loading }) { const { settingsStore } = useStore(); const { timezone } = settingsStore.sessionSettings; const { userBrowser, userDevice, userCountry, userCity, userState, userBrowserVersion, userOs, userOsVersion, startedAt, userId, userAnonymousId, userNumericHash, userDisplayName, userDeviceType, revId, } = session; const hasUserDetails = !!userId || !!userAnonymousId; const getDimension = (width, height) => { return width && height ? (
{width || 'x'} {height || 'x'}
) : ( Resolution N/A ); }; const avatarbgSize = '38px'; const safeOs = userOs === 'IOS' ? 'iOS' : userOs; return (
{formatTimeOrDate(startedAt, timezone)} · {userCity && {userCity},} {countries[userCountry]} · {userBrowser ? `${capitalize(userBrowser)}, ` : ''} {`${/ios/i.test(userOs) ? 'iOS ' : capitalize(userOs) + ','} `} {capitalize(userDevice)} · (
} label={countries[userCountry]} value={ { <> {userCity && {userCity},} {userState && {userState}} } } /> {userBrowser && } {revId && }
)} > More
); } const component = React.memo(connect((state) => ({ session: state.getIn(['sessions', 'current']) }))(UserCard)); export default withRequest({ initialData: List(), endpoint: '/metadata/session_search', dataWrapper: (data) => Object.values(data), dataName: 'similarSessions', })(component); // inner component function UserName({ name, userId, hash }) { const hasIframe = localStorage.getItem(IFRAME) === 'true'; const { showModal } = useModal(); const onClick = () => { showModal(, { right: true, width: 700 }); }; return
{}}>{name}
; }