perf(Tabs): improve responsiveness when switching items rapidly
This commit is contained in:
parent
1ce86c11ca
commit
9f11e7c22b
@ -13,7 +13,7 @@ import { hasTopicPendingRequests } from '@renderer/utils/queue'
|
|||||||
import { Dropdown } from 'antd'
|
import { Dropdown } from 'antd'
|
||||||
import { ItemType } from 'antd/es/menu/interface'
|
import { ItemType } from 'antd/es/menu/interface'
|
||||||
import { omit } from 'lodash'
|
import { omit } from 'lodash'
|
||||||
import { FC, useCallback, useEffect, useState } from 'react'
|
import { FC, startTransition, useCallback, useEffect, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
@ -114,11 +114,16 @@ const AssistantItem: FC<AssistantItemProps> = ({ assistant, isActive, onSwitch,
|
|||||||
const handleSwitch = useCallback(async () => {
|
const handleSwitch = useCallback(async () => {
|
||||||
await modelGenerating()
|
await modelGenerating()
|
||||||
|
|
||||||
if (topicPosition === 'left' && clickAssistantToShowTopic) {
|
if (clickAssistantToShowTopic) {
|
||||||
|
if (topicPosition === 'left') {
|
||||||
EventEmitter.emit(EVENT_NAMES.SWITCH_TOPIC_SIDEBAR)
|
EventEmitter.emit(EVENT_NAMES.SWITCH_TOPIC_SIDEBAR)
|
||||||
}
|
}
|
||||||
|
|
||||||
onSwitch(assistant)
|
onSwitch(assistant)
|
||||||
|
} else {
|
||||||
|
startTransition(() => {
|
||||||
|
onSwitch(assistant)
|
||||||
|
})
|
||||||
|
}
|
||||||
}, [clickAssistantToShowTopic, onSwitch, assistant, topicPosition])
|
}, [clickAssistantToShowTopic, onSwitch, assistant, topicPosition])
|
||||||
|
|
||||||
const assistantName = assistant.name || t('chat.default.name')
|
const assistantName = assistant.name || t('chat.default.name')
|
||||||
|
|||||||
@ -37,7 +37,7 @@ import { hasTopicPendingRequests } from '@renderer/utils/queue'
|
|||||||
import { Dropdown, MenuProps, Tooltip } from 'antd'
|
import { Dropdown, MenuProps, Tooltip } from 'antd'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { findIndex } from 'lodash'
|
import { findIndex } from 'lodash'
|
||||||
import { FC, useCallback, useMemo, useRef, useState } from 'react'
|
import { FC, startTransition, useCallback, useMemo, useRef, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import styled from 'styled-components'
|
import styled from 'styled-components'
|
||||||
|
|
||||||
@ -146,7 +146,9 @@ const Topics: FC<Props> = ({ assistant: _assistant, activeTopic, setActiveTopic
|
|||||||
const onSwitchTopic = useCallback(
|
const onSwitchTopic = useCallback(
|
||||||
async (topic: Topic) => {
|
async (topic: Topic) => {
|
||||||
// await modelGenerating()
|
// await modelGenerating()
|
||||||
|
startTransition(() => {
|
||||||
setActiveTopic(topic)
|
setActiveTopic(topic)
|
||||||
|
})
|
||||||
},
|
},
|
||||||
[setActiveTopic]
|
[setActiveTopic]
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user