import * as React from "react"; import {useEffect, useState} from "react"; import {ClientAvatar, kDefaultAvatarImage, kLoadingAvatarImage} from "tc-shared/file/Avatars"; import * as image_preview from "tc-shared/ui/frames/ImagePreview"; const ImageStyle = { height: "100%", width: "100%", cursor: "pointer" }; export const AvatarRenderer = React.memo((props: { avatar: ClientAvatar | "loading" | "default", className?: string, alt?: string }) => { let [ revision, setRevision ] = useState(0); let image; let avatar: ClientAvatar; if(props.avatar === "loading") { image = {tr("loading")}/; } else if(props.avatar === "default") { image = {tr("default; } else { const imageUrl = props.avatar.getAvatarUrl(); switch (props.avatar.getState()) { case "unset": image = {typeof { if(event.isDefaultPrevented()) return; event.preventDefault(); image_preview.showImagePreview(imageUrl, undefined); }} draggable={false} />; break; case "loaded": image = {typeof { if(event.isDefaultPrevented()) return; event.preventDefault(); image_preview.showImagePreview(imageUrl, undefined); }} draggable={false} />; break; case "errored": image = {typeof; break; case "loading": image = {typeof; break; case undefined: break; } avatar = props.avatar; } useEffect(() => avatar && avatar.events.on("avatar_state_changed", () => setRevision(revision + 1)), [ props.avatar ]); return (
{image}
) });