import { Component } from 'inferno';
import { Link } from 'inferno-router';
import { UserView } from '../interfaces';
-import { pictrsAvatarThumbnail, showAvatars } from '../utils';
+import { pictrsAvatarThumbnail, showAvatars, hostname } from '../utils';
interface UserOther {
name: string;
+ id?: number; // Necessary if its federated
avatar?: string;
+ local?: boolean;
+ actor_id?: string;
}
interface UserListingProps {
user: UserView | UserOther;
+ realLink?: boolean;
}
export class UserListing extends Component<UserListingProps, any> {
render() {
let user = this.props.user;
+ let local = user.local == null ? true : user.local;
+ let name_: string, link: string;
+
+ if (local) {
+ name_ = user.name;
+ link = `/u/${user.name}`;
+ } else {
+ name_ = `${user.name}@${hostname(user.actor_id)}`;
+ link = !this.props.realLink ? `/user/${user.id}` : user.actor_id;
+ }
+
return (
- <Link className="text-body font-weight-bold" to={`/u/${user.name}`}>
+ <Link className="text-body font-weight-bold" to={link}>
{user.avatar && showAvatars() && (
<img
height="32"
class="rounded-circle mr-2"
/>
)}
- <span>{user.name}</span>
+ <span>{name_}</span>
</Link>
);
}