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'; const MessageAvatar = ({ iconData }: { iconData: TMessageIcon }) => (
); const MessageBody = ({ message, messageLabel, fontSize }) => (
{messageLabel}
); export default function SearchMessage({ 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 ?? false, }), [message?.endpoint, message?.model, message?.iconURL, message?.isCreatedByUser], ); const messageLabel = useMemo(() => { if (message?.isCreatedByUser) { return UsernameDisplay ? (user?.name ?? '') || (user?.username ?? '') : localize('com_user_message'); } return message?.sender ?? ''; }, [ message?.isCreatedByUser, message?.sender, UsernameDisplay, user?.name, user?.username, localize, ]); if (!message) { return null; } return (
); }