import React, { Key, useEffect, useState } from 'react' import './ChatItem.css' import Avatar from '../Avatar/Avatar' import { format } from 'timeago.js' import classNames from 'classnames' import { IChatItemProps } from '../type' import { HugeiconsIcon } from '@hugeicons/react'; import { Video01Icon, VolumeOffIcon, VolumeHighIcon, ArrowDown01Icon, ArrowUp01Icon, // @ts-ignore } from '@hugeicons/core-free-icons'; const ChatItem: React.FC = ({ avatarFlexible = false, date = new Date(), unread = 0, statusColorType = 'badge', lazyLoadingImage = undefined, onAvatarError = () => void 0, ...props }) => { const [onHoverTool, setOnHoverTool] = useState(false) const [onDrag, setOnDrag] = useState(false) useEffect(() => { props.setDragStates?.(setOnDrag) }, []) const handleOnMouseEnter = () => { setOnHoverTool(true) } const handleOnMouseLeave = () => { setOnHoverTool(false) } const handleOnClick = (e: React.MouseEvent) => { e.preventDefault() if (onHoverTool === true) return props.onClick?.(e) } const onDragOver = (e: React.MouseEvent) => { e.preventDefault() if (props.onDragOver instanceof Function) props.onDragOver(e, props.id) } const onDragEnter = (e: React.MouseEvent) => { e.preventDefault() if (props.onDragEnter instanceof Function) props.onDragEnter(e, props.id) if (!onDrag) setOnDrag(true) } const onDragLeave = (e: React.MouseEvent) => { e.preventDefault() if (props.onDragLeave instanceof Function) props.onDragLeave(e, props.id) if (onDrag) setOnDrag(false) } const onDrop = (e: React.MouseEvent) => { e.preventDefault() if (props.onDrop instanceof Function) props.onDrop(e, props.id) if (onDrag) setOnDrag(false) } const onExpandItem = (e: React.MouseEvent, id: string | number) => { e.preventDefault(); e.stopPropagation(); if (props.onExpandItem instanceof Function) props.onExpandItem(id); } return ( <>
{!!props.onDragComponent && onDrag && props.onDragComponent(props.id)} {((onDrag && !props.onDragComponent) || !onDrag) && [
{props.statusText} ) : ( <> ) } onError={onAvatarError} lazyLoadingImage={lazyLoadingImage} type={classNames('circle', { 'flexible': avatarFlexible })} /> {props.subList && props.subList.length > 0 && ( )}
,
{props.title}
{date && (props.dateString || format(date))}
{props.subtitle}
{props.showMute && (
{props.muted === true && } {props.muted === false && }
)} {props.showVideoCall && (
)}
{props.showMute && props.muted && (
)}
{unread && unread > 0 ? {unread} : null}
{props.customStatusComponents !== undefined ? props.customStatusComponents.map(Item => ) : null}
, ]}
) } export default ChatItem