diff --git a/src/features/AgentSetting/AgentPlugin/LocalPluginItem.tsx b/src/features/AgentSetting/AgentPlugin/LocalPluginItem.tsx index dfab69f64b35f..e32690ef9c5d0 100644 --- a/src/features/AgentSetting/AgentPlugin/LocalPluginItem.tsx +++ b/src/features/AgentSetting/AgentPlugin/LocalPluginItem.tsx @@ -36,7 +36,7 @@ const MarketList = memo<{ id: string }>(({ id }) => { mode={'edit'} onDelete={() => { deleteCustomPlugin(id); - toggleAgentPlugin(id); + toggleAgentPlugin(id, false); }} onOpenChange={setModal} onSave={(value) => { diff --git a/src/features/AgentSetting/store/action.ts b/src/features/AgentSetting/store/action.ts index f6d1b8f2d68d0..c8925e392b335 100644 --- a/src/features/AgentSetting/store/action.ts +++ b/src/features/AgentSetting/store/action.ts @@ -48,7 +48,7 @@ export interface Action { setAgentMeta: (meta: Partial) => void; streamUpdateMeta: (key: keyof MetaData) => any; - toggleAgentPlugin: (pluginId: string) => void; + toggleAgentPlugin: (pluginId: string, state?: boolean) => void; /** * 更新加载状态 * @param key - SessionLoadingState 的键 @@ -198,8 +198,8 @@ export const store: StateCreator = (set, g }; }, - toggleAgentPlugin: (id) => { - get().dispatchConfig({ pluginId: id, type: 'togglePlugin' }); + toggleAgentPlugin: (id, state) => { + get().dispatchConfig({ pluginId: id, state, type: 'togglePlugin' }); }, updateLoadingState: (key, value) => { diff --git a/src/features/AgentSetting/store/reducers/config.ts b/src/features/AgentSetting/store/reducers/config.ts index b17ee10847cd7..220883d2df98a 100644 --- a/src/features/AgentSetting/store/reducers/config.ts +++ b/src/features/AgentSetting/store/reducers/config.ts @@ -6,7 +6,7 @@ import { merge } from '@/utils/merge'; export type ConfigDispatch = | { config: Partial; type: 'update' } - | { pluginId: string; type: 'togglePlugin' } + | { pluginId: string; state?: boolean; type: 'togglePlugin' } | { type: 'reset' }; export const configReducer = (state: LobeAgentConfig, payload: ConfigDispatch): LobeAgentConfig => { @@ -19,15 +19,26 @@ export const configReducer = (state: LobeAgentConfig, payload: ConfigDispatch): case 'togglePlugin': { return produce(state, (config) => { - const { pluginId: id } = payload; + const { pluginId: id, state } = payload; if (config.plugins === undefined) { - config.plugins = [id]; - } else { + config.plugins = []; + } + + if (typeof state === 'undefined') { if (config.plugins.includes(id)) { config.plugins.splice(config.plugins.indexOf(id), 1); - } else { - config.plugins.push(id); + + return; } + + config.plugins.push(id); + return; + } + + if (!state) { + config.plugins = config.plugins.filter((pluginId) => pluginId !== id); + } else { + config.plugins.push(id); } }); }