mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2025-07-31 11:00:06 +02:00

[web] Handle deleted users in chat threads GitOrigin-RevId: 6593bf37e4f2339b40069b7cf4198166660852fb
56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import { getHueForUserId } from '@/shared/utils/colors'
|
|
import MessageContent from './message-content'
|
|
import type { Message as MessageType } from '@/features/chat/context/chat-context'
|
|
import { User } from '../../../../../types/user'
|
|
import { useTranslation } from 'react-i18next'
|
|
|
|
export interface MessageProps {
|
|
message: MessageType
|
|
fromSelf: boolean
|
|
}
|
|
|
|
function hue(user?: User) {
|
|
return user ? getHueForUserId(user.id) : 0
|
|
}
|
|
|
|
function getMessageStyle(user?: User) {
|
|
return {
|
|
borderColor: `hsl(${hue(user)}, 85%, 40%)`,
|
|
backgroundColor: `hsl(${hue(user)}, 85%, 40%`,
|
|
}
|
|
}
|
|
|
|
function getArrowStyle(user?: User) {
|
|
return {
|
|
borderColor: `hsl(${hue(user)}, 85%, 40%)`,
|
|
}
|
|
}
|
|
|
|
function Message({ message, fromSelf }: MessageProps) {
|
|
const { t } = useTranslation()
|
|
return (
|
|
<div className="message-wrapper">
|
|
{!fromSelf && (
|
|
<div className="name" translate="no">
|
|
<span>
|
|
{message.user
|
|
? message.user.first_name || message.user.email
|
|
: t('deleted_user')}
|
|
</span>
|
|
</div>
|
|
)}
|
|
<div className="message" style={getMessageStyle(message.user)}>
|
|
{!fromSelf && (
|
|
<div className="arrow" style={getArrowStyle(message.user)} />
|
|
)}
|
|
<div className="message-content">
|
|
{message.contents.map((content, index) => (
|
|
<MessageContent key={index} content={content} />
|
|
))}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
export default Message
|