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