ui: 在加載歷史消息時,自動回到加載前的消息位置
* 使用奇技淫巧
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import { Tab, TextField } from "mdui"
|
import { Tab, TextField } from "mdui"
|
||||||
|
import { $ } from "mdui/jq"
|
||||||
import useEventListener from "../useEventListener.ts"
|
import useEventListener from "../useEventListener.ts"
|
||||||
import Element_Message from "./Message.tsx"
|
import Element_Message from "./Message.tsx"
|
||||||
import MessageContainer from "./MessageContainer.tsx"
|
import MessageContainer from "./MessageContainer.tsx"
|
||||||
@@ -86,7 +87,10 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
|
|||||||
setTimeout(() => setShowNoMoreMessagesTip(false), 1000)
|
setTimeout(() => setShowNoMoreMessagesTip(false), 1000)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const oldest = messagesList[0]
|
||||||
setMessagesList(returnMsgs.concat(messagesList))
|
setMessagesList(returnMsgs.concat(messagesList))
|
||||||
|
setTimeout(() => chatPanelRef.current!.scrollTo({ top: $(`#chat_${target}_message_${oldest.id}`).get(0).offsetTop, behavior: 'smooth' }), 100)
|
||||||
|
|
||||||
page.current++
|
page.current++
|
||||||
}
|
}
|
||||||
@@ -245,6 +249,7 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
|
|||||||
messagesList.map((msg) =>
|
messagesList.map((msg) =>
|
||||||
<Element_Message
|
<Element_Message
|
||||||
key={msg.id}
|
key={msg.id}
|
||||||
|
id={`chat_${target}_message_${msg.id}`}
|
||||||
userId={msg.user_id}>
|
userId={msg.user_id}>
|
||||||
<div dangerouslySetInnerHTML={{
|
<div dangerouslySetInnerHTML={{
|
||||||
__html: DOMPurify.sanitize(markedInstance.parse(msg.text) as string, {
|
__html: DOMPurify.sanitize(markedInstance.parse(msg.text) as string, {
|
||||||
|
|||||||
Reference in New Issue
Block a user