in src/avatar/avatar.tsx [55:153]
render() {
const {size, url, dpr, style, round, subavatar, subavatarSize, username, info, skipParams, ...restProps} =
this.props;
if ([Size.Size18, Size.Size48].includes(size)) {
warnSize(size)();
}
const sizeString = `${size}px`;
const subavatarSizeString = `${subavatarSize}px`;
const styleObj = {
height: sizeString,
width: sizeString,
...style,
};
const styleObjGroup = {
borderRadius: '2px',
height: subavatarSizeString,
width: subavatarSizeString,
...style,
};
const classes = classNames(styles.avatar, this.props.className, {
[styles.round]: round,
});
if (!url || this.state.errorUrl === url) {
return (
<span
{...restProps}
data-test='avatar'
className={classNames(classes, {
[styles.empty]: (username === null || username === undefined) && (info === null || info === undefined),
})}
style={styleObj}
>
{username && <FallbackAvatar size={size} round={round} username={username} />}
{info && <AvatarInfo size={size}>{info}</AvatarInfo>}
</span>
);
}
let src = url;
if (!skipParams && !isDataURI(url)) {
const [urlStart, query] = url.split('?');
const queryParams = {
...parseQueryString(query),
dpr,
size,
};
src = encodeURL(urlStart, queryParams);
}
let subavatarSrc = null;
if (subavatar && !isDataURI(subavatar)) {
const [urlStart, query] = subavatar.split('?');
const queryParams = {
...parseQueryString(query),
dpr,
subavatarSizeString,
};
subavatarSrc = skipParams ? subavatar : encodeURL(urlStart, queryParams);
return (
<div>
<img
{...restProps}
onError={this.handleError}
onLoad={this.handleSuccess}
className={classNames(classes, styles.avatarShadow)}
style={styleObj}
src={src}
alt='User avatar'
/>
<img
{...restProps}
data-test='avatar'
onError={this.handleError}
onLoad={this.handleSuccess}
className={classNames(styles.subavatar)}
style={styleObjGroup}
src={subavatarSrc}
alt='Subavatar'
/>
</div>
);
}
return (
<img
{...restProps}
data-test='avatar'
onError={this.handleError}
onLoad={this.handleSuccess}
className={classNames(classes, styles.avatarShadow)}
style={styleObj}
src={src}
alt='User avatar'
/>
);
}