parent
a6d7ecae81
commit
97b8749dd1
@ -42,9 +42,10 @@ 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' })
|
||||||
|
if (highlight) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
messageRef.current?.classList.add('message-highlight')
|
messageRef.current?.classList.add('message-highlight')
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
@ -52,6 +53,7 @@ const MessageItem: FC<Props> = ({ message, index, lastMessage, showMenu = true,
|
|||||||
}, 2500)
|
}, 2500)
|
||||||
}, 500)
|
}, 500)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
return () => unsubscribes.forEach((unsub) => unsub())
|
return () => unsubscribes.forEach((unsub) => unsub())
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user