2023-06-07 14:34:50 -05:00
|
|
|
import React, { useEffect, useState } from "react";
|
2023-05-27 14:05:07 -05:00
|
|
|
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|
|
|
import { faUser } from "@fortawesome/free-solid-svg-icons";
|
2023-06-09 17:31:14 -05:00
|
|
|
import Image from "next/image";
|
2023-05-27 14:05:07 -05:00
|
|
|
|
|
|
|
type Props = {
|
2023-10-27 23:45:14 -05:00
|
|
|
src?: string;
|
2023-05-27 14:05:07 -05:00
|
|
|
className?: string;
|
2023-06-09 17:31:14 -05:00
|
|
|
emptyImage?: boolean;
|
2023-10-16 12:10:52 -05:00
|
|
|
priority?: boolean;
|
2023-05-27 14:05:07 -05:00
|
|
|
};
|
|
|
|
|
2023-10-27 23:45:14 -05:00
|
|
|
export default function ProfilePhoto({ src, className, priority }: Props) {
|
|
|
|
const [image, setImage] = useState("");
|
2023-06-07 14:34:50 -05:00
|
|
|
|
|
|
|
useEffect(() => {
|
2023-10-27 23:45:14 -05:00
|
|
|
if (src && !src?.includes("base64"))
|
|
|
|
setImage(`/api/v1/${src.replace("uploads/", "").replace(".jpg", "")}`);
|
|
|
|
else if (!src) setImage("");
|
|
|
|
else {
|
|
|
|
setImage(src);
|
|
|
|
}
|
|
|
|
}, [src]);
|
2023-06-11 08:55:36 -05:00
|
|
|
|
2023-10-27 23:45:14 -05:00
|
|
|
return !image ? (
|
2023-06-07 14:34:50 -05:00
|
|
|
<div
|
2023-08-14 22:25:25 -05:00
|
|
|
className={`bg-sky-600 dark:bg-sky-600 text-white h-10 w-10 aspect-square shadow rounded-full border border-slate-200 dark:border-neutral-700 flex items-center justify-center ${className}`}
|
2023-05-27 14:05:07 -05:00
|
|
|
>
|
2023-06-13 14:19:37 -05:00
|
|
|
<FontAwesomeIcon icon={faUser} className="w-1/2 h-1/2 aspect-square" />
|
2023-06-07 14:34:50 -05:00
|
|
|
</div>
|
|
|
|
) : (
|
2023-06-09 17:31:14 -05:00
|
|
|
<Image
|
2023-06-11 08:55:36 -05:00
|
|
|
alt=""
|
2023-10-27 23:45:14 -05:00
|
|
|
src={image}
|
2023-06-09 17:31:14 -05:00
|
|
|
height={112}
|
|
|
|
width={112}
|
2023-10-16 12:10:52 -05:00
|
|
|
priority={priority}
|
2023-10-28 00:42:31 -05:00
|
|
|
draggable={false}
|
2023-10-09 07:35:33 -05:00
|
|
|
className={`h-10 w-10 bg-sky-600 dark:bg-sky-600 shadow rounded-full aspect-square border border-slate-200 dark:border-neutral-700 ${className}`}
|
2023-06-07 14:34:50 -05:00
|
|
|
/>
|
2023-05-27 14:05:07 -05:00
|
|
|
);
|
|
|
|
}
|