feat: 显示消息时间
This commit is contained in:
@@ -14,6 +14,7 @@ import useAsyncEffect from "../useAsyncEffect.ts"
|
|||||||
import * as marked from 'marked'
|
import * as marked from 'marked'
|
||||||
import DOMPurify from 'dompurify'
|
import DOMPurify from 'dompurify'
|
||||||
import randomUUID from "../../randomUUID.ts"
|
import randomUUID from "../../randomUUID.ts"
|
||||||
|
import { time } from "node:console";
|
||||||
|
|
||||||
interface Args extends React.HTMLAttributes<HTMLElement> {
|
interface Args extends React.HTMLAttributes<HTMLElement> {
|
||||||
target: string
|
target: string
|
||||||
@@ -257,22 +258,55 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
|
|||||||
flexGrow: '1',
|
flexGrow: '1',
|
||||||
}}>
|
}}>
|
||||||
{
|
{
|
||||||
messagesList.map((msg) =>
|
(() => {
|
||||||
<Element_Message
|
let date = new Date(0)
|
||||||
key={msg.id}
|
return messagesList.map((msg) => {
|
||||||
id={`chat_${target}_message_${msg.id}`}
|
const rendeText = DOMPurify.sanitize(markedInstance.parse(msg.text) as string, {
|
||||||
userId={msg.user_id}>
|
|
||||||
<div dangerouslySetInnerHTML={{
|
|
||||||
__html: DOMPurify.sanitize(markedInstance.parse(msg.text) as string, {
|
|
||||||
ALLOWED_TAGS: [
|
ALLOWED_TAGS: [
|
||||||
"chat-image",
|
"chat-image",
|
||||||
"span",
|
"span",
|
||||||
"chat-link",
|
"chat-link",
|
||||||
]
|
],
|
||||||
|
ALLOWED_ATTR: [
|
||||||
|
'src',
|
||||||
|
'alt',
|
||||||
|
'href',
|
||||||
|
],
|
||||||
})
|
})
|
||||||
}}></div>
|
const lastDate = date
|
||||||
</Element_Message>
|
date = new Date(msg.time)
|
||||||
|
|
||||||
|
const msgElement = <Element_Message
|
||||||
|
rawData={msg.text}
|
||||||
|
renderHTML={rendeText}
|
||||||
|
message={msg}
|
||||||
|
key={msg.id}
|
||||||
|
slot="trigger"
|
||||||
|
id={`chat_${target}_message_${msg.id}`}
|
||||||
|
userId={msg.user_id} />
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{
|
||||||
|
(date.getMinutes() != lastDate.getMinutes() || date.getDate() != lastDate.getDate() || date.getMonth() != lastDate.getMonth() || date.getFullYear() != lastDate.getFullYear())
|
||||||
|
&& <mdui-tooltip content={`${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日 ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`}>
|
||||||
|
<div>
|
||||||
|
{
|
||||||
|
(date.getFullYear() != lastDate.getFullYear() ? `${date.getFullYear()}年` : '')
|
||||||
|
+ (date.getMonth() != lastDate.getMonth() ? `${date.getMonth() + 1}月` : '')
|
||||||
|
+ (date.getDate() != lastDate.getDate() ? `${date.getDate()}日` : '')
|
||||||
|
+ ` ${date.getHours()}:${date.getMinutes()}`
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</mdui-tooltip>
|
||||||
|
}
|
||||||
|
{
|
||||||
|
msgElement
|
||||||
|
}
|
||||||
|
</>
|
||||||
)
|
)
|
||||||
|
})
|
||||||
|
})()
|
||||||
}
|
}
|
||||||
</MessageContainer>
|
</MessageContainer>
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user