import type { UserDto } from '@jellyfin/sdk/lib/generated-client'; import React, { FunctionComponent } from 'react'; import { formatDistanceToNow } from 'date-fns'; import { getLocaleWithSuffix } from '../../../utils/dateFnsLocale'; import globalize from '../../../scripts/globalize'; import cardBuilder from '../../cardbuilder/cardBuilder'; import IconButtonElement from '../../../elements/IconButtonElement'; import escapeHTML from 'escape-html'; const createLinkElement = ({ user, renderImgUrl }: { user: UserDto, renderImgUrl: string }) => ({ __html: ` ${renderImgUrl} ` }); type IProps = { user?: UserDto; } const getLastSeenText = (lastActivityDate?: string | null) => { if (lastActivityDate) { return globalize.translate('LastSeen', formatDistanceToNow(Date.parse(lastActivityDate), getLocaleWithSuffix())); } return ''; }; const UserCardBox: FunctionComponent = ({ user = {} }: IProps) => { let cssClass = 'card squareCard scalableCard squareCard-scalable'; if (user.Policy?.IsDisabled) { cssClass += ' grayscale'; } let imgUrl; if (user.PrimaryImageTag && user.Id) { imgUrl = window.ApiClient.getUserImageUrl(user.Id, { width: 300, tag: user.PrimaryImageTag, type: 'Primary' }); } let imageClass = 'cardImage'; if (user.Policy?.IsDisabled) { imageClass += ' disabledUser'; } const lastSeen = getLastSeenText(user.LastActivityDate); const renderImgUrl = imgUrl ? `
` : `
`; return (
{escapeHTML(user.Name)}
{lastSeen != '' ? lastSeen : ''}
); }; export default UserCardBox;