feat: Edit assistant settings with real-time sync.

- Added support for editing an assistant's settings with real-time synchronization to the agent.
This commit is contained in:
kangfenmao 2024-09-08 16:09:17 +08:00
parent 200d78a140
commit 5991f692b2

View File

@ -7,9 +7,10 @@ import { useTheme } from '@renderer/context/ThemeProvider'
import { useAssistant } from '@renderer/hooks/useAssistant'
import { useSettings } from '@renderer/hooks/useSettings'
import { useShowAssistants, useShowTopics } from '@renderer/hooks/useStore'
import { syncAsistantToAgent } from '@renderer/services/assistant'
import { Assistant, Topic } from '@renderer/types'
import { Switch } from 'antd'
import { FC } from 'react'
import { FC, useCallback } from 'react'
import styled from 'styled-components'
import SelectModelButton from './components/SelectModelButton'
@ -21,7 +22,7 @@ interface Props {
}
const HeaderNavbar: FC<Props> = ({ activeAssistant, setActiveAssistant }) => {
const { assistant } = useAssistant(activeAssistant.id)
const { assistant, updateAssistant } = useAssistant(activeAssistant.id)
const { showAssistants, toggleShowAssistants } = useShowAssistants()
const { theme, toggleTheme } = useTheme()
const { topicPosition } = useSettings()
@ -32,6 +33,15 @@ const HeaderNavbar: FC<Props> = ({ activeAssistant, setActiveAssistant }) => {
assistant && setActiveAssistant(assistant)
}
const onEditAssistant = useCallback(
async (assistant: Assistant) => {
const _assistant = await AssistantSettingPopup.show({ assistant })
updateAssistant(_assistant)
syncAsistantToAgent(_assistant)
},
[updateAssistant]
)
return (
<Navbar>
{showAssistants && (
@ -59,10 +69,7 @@ const HeaderNavbar: FC<Props> = ({ activeAssistant, setActiveAssistant }) => {
<i className="iconfont icon-show-sidebar" />
</NewButton>
)}
<TitleText
style={{ marginRight: 10, cursor: 'pointer' }}
className="nodrag"
onClick={() => AssistantSettingPopup.show({ assistant })}>
<TitleText style={{ marginRight: 10, cursor: 'pointer' }} className="nodrag" onClick={onEditAssistant}>
{assistant.name}
</TitleText>
<SelectModelButton assistant={assistant} />