fix: 一键返回到消息顶部 #166

close #166
This commit is contained in:
kangfenmao 2024-10-12 14:03:06 +08:00
parent a6d7ecae81
commit 97b8749dd1
2 changed files with 16 additions and 8 deletions

View File

@ -42,15 +42,17 @@ const MessageItem: FC<Props> = ({ message, index, lastMessage, showMenu = true,
useEffect(() => { useEffect(() => {
const unsubscribes = [ const unsubscribes = [
EventEmitter.on(EVENT_NAMES.LOCATE_MESSAGE + ':' + message.id, () => { EventEmitter.on(EVENT_NAMES.LOCATE_MESSAGE + ':' + message.id, (highlight: boolean = true) => {
if (messageRef.current) { if (messageRef.current) {
messageRef.current.scrollIntoView({ behavior: 'smooth' }) messageRef.current.scrollIntoView({ behavior: 'smooth' })
setTimeout(() => { if (highlight) {
messageRef.current?.classList.add('message-highlight')
setTimeout(() => { setTimeout(() => {
messageRef.current?.classList.remove('message-highlight') messageRef.current?.classList.add('message-highlight')
}, 2500) setTimeout(() => {
}, 500) messageRef.current?.classList.remove('message-highlight')
}, 2500)
}, 500)
}
} }
}) })
] ]

View File

@ -1,16 +1,21 @@
import { useRuntime } from '@renderer/hooks/useStore' import { useRuntime } from '@renderer/hooks/useStore'
import { EVENT_NAMES, EventEmitter } from '@renderer/services/event'
import { Message } from '@renderer/types' import { Message } from '@renderer/types'
import styled from 'styled-components' import styled from 'styled-components'
const MessgeTokens: React.FC<{ message: Message }> = ({ message }) => { const MessgeTokens: React.FC<{ message: Message }> = ({ message }) => {
const { generating } = useRuntime() const { generating } = useRuntime()
const locateMessage = () => {
EventEmitter.emit(EVENT_NAMES.LOCATE_MESSAGE + ':' + message.id, false)
}
if (!message.usage) { if (!message.usage) {
return null return null
} }
if (message.role === 'user') { if (message.role === 'user') {
return <MessageMetadata>Tokens: {message?.usage?.total_tokens}</MessageMetadata> return <MessageMetadata onClick={locateMessage}>Tokens: {message?.usage?.total_tokens}</MessageMetadata>
} }
if (generating) { if (generating) {
@ -19,7 +24,7 @@ const MessgeTokens: React.FC<{ message: Message }> = ({ message }) => {
if (message.role === 'assistant') { if (message.role === 'assistant') {
return ( return (
<MessageMetadata> <MessageMetadata onClick={locateMessage}>
Tokens: {message?.usage?.total_tokens} | {message?.usage?.prompt_tokens} | {message?.usage?.completion_tokens} Tokens: {message?.usage?.total_tokens} | {message?.usage?.prompt_tokens} | {message?.usage?.completion_tokens}
</MessageMetadata> </MessageMetadata>
) )
@ -33,6 +38,7 @@ const MessageMetadata = styled.div`
color: var(--color-text-2); color: var(--color-text-2);
user-select: text; user-select: text;
margin: 2px 0; margin: 2px 0;
cursor: pointer;
` `
export default MessgeTokens export default MessgeTokens