import { useMemo } from 'react'; import { useRecoilValue } from 'recoil'; import { useAuthContext, useLocalize } from '~/hooks'; import type { TMessageProps, TMessageIcon } from '~/common'; import MinimalHoverButtons from '~/components/Chat/Messages/MinimalHoverButtons'; import Icon from '~/components/Chat/Messages/MessageIcon'; import SearchContent from './Content/SearchContent'; import SearchButtons from './SearchButtons'; import SubRow from './SubRow'; import { cn } from '~/utils'; import store from '~/store'; export default function Message({ message }: Pick) { const UsernameDisplay = useRecoilValue(store.UsernameDisplay); const fontSize = useRecoilValue(store.fontSize); const { user } = useAuthContext(); const localize = useLocalize(); const iconData: TMessageIcon = useMemo( () => ({ endpoint: message?.endpoint, model: message?.model, iconURL: message?.iconURL ?? '', isCreatedByUser: message?.isCreatedByUser, }), [message?.model, message?.iconURL, message?.endpoint, message?.isCreatedByUser], ); if (!message) { return null; } const { isCreatedByUser } = message; let messageLabel = ''; if (isCreatedByUser) { messageLabel = UsernameDisplay ? (user?.name ?? '') || (user?.username ?? '') : localize('com_user_message'); } else { messageLabel = message.sender ?? ''; } return ( <>
{messageLabel}
); }