import React from 'react';
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 } 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";
import { Popover } from 'antd'
import { observer } from 'mobx-react-lite';
function UserCard({ className, width, height }) {
const { settingsStore, sessionStore } = useStore();
const session = sessionStore.current;
const { timezone } = settingsStore.sessionSettings;
const [showMore, setShowMore] = React.useState(false)
const {
userBrowser,
userDevice,
userCountry,
userCity,
userState,
userBrowserVersion,
userOs,
userOsVersion,
startedAt,
userId,
userAnonymousId,
userNumericHash,
userDisplayName,
userDeviceType,
revId,
screenWidth,
screenHeight
} = 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;
React.useEffect(() => {
const handler = (e) => {
if (e.shiftKey) {
if (
e.target instanceof HTMLInputElement ||
e.target instanceof HTMLTextAreaElement
) {
return false;
}
e.preventDefault()
if (e.key === 'I') {
setShowMore(!showMore)
}
}
}
document.addEventListener('keydown', handler, false)
return () => {
document.removeEventListener('keydown', handler)
}
}, [showMore])
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 = observer(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}
;
}