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 = ;
} else if(props.avatar === "default") {
image =
;
} else {
const imageUrl = props.avatar.getAvatarUrl();
switch (props.avatar.getState()) {
case "unset":
image =
{
if(event.isDefaultPrevented())
return;
event.preventDefault();
image_preview.showImagePreview(imageUrl, undefined);
}}
draggable={false}
/>;
break;
case "loaded":
image =
{
if(event.isDefaultPrevented())
return;
event.preventDefault();
image_preview.showImagePreview(imageUrl, undefined);
}}
draggable={false}
/>;
break;
case "errored":
image =
;
break;
case "loading":
image =
;
break;
case undefined:
break;
}
avatar = props.avatar;
}
useEffect(() => avatar && avatar.events.on("avatar_state_changed", () => setRevision(revision + 1)), [ props.avatar ]);
return (