diff --git a/src/api.ts b/src/api.ts index 8177b2d..1506a6a 100644 --- a/src/api.ts +++ b/src/api.ts @@ -166,4 +166,13 @@ export class ChatApiManager { return this.handleEditorUpdate(systemPrompt, userPrompt); } + + /** + * Updates the manager's settings and reinitializes the chat client. + * @param settings - New configuration settings for the chat API. + */ + public updateSettings(settings: InlineAISettings): void { + this.settings = settings; + this.chatClient = this.initializeChatClient(settings); + } } diff --git a/src/main.ts b/src/main.ts index 4154467..c12495a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -10,13 +10,14 @@ import { diffExtension } from "./modules/diffExtension"; export default class InlineAIChatPlugin extends Plugin { settings: InlineAISettings = DEFAULT_SETTINGS; + chatapi: ChatApiManager; async onload() { await this.loadSettings(); - const chatapi = new ChatApiManager(this.settings, this.app); + this.chatapi = new ChatApiManager(this.settings, this.app); this.registerEditorExtension([ - FloatingTooltipExtension(chatapi), + FloatingTooltipExtension(this.chatapi), generatedResponseState, currentSelectionState, buildSelectionHiglightState, diff --git a/src/settings.ts b/src/settings.ts index 55078db..4e7cf6a 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -48,6 +48,7 @@ export class InlineAISettingsTab extends PluginSettingTab { .onChange(async (value) => { this.plugin.settings.provider = value as "openai" | "ollama" | "custom"; await this.plugin.saveSettings(); + this.plugin.chatapi.updateSettings(this.plugin.settings); this.display(); // Refresh to update the API key field visibility }) ); @@ -63,6 +64,7 @@ export class InlineAISettingsTab extends PluginSettingTab { .onChange(async (value) => { this.plugin.settings.model = value; await this.plugin.saveSettings(); + this.plugin.chatapi.updateSettings(this.plugin.settings); }) ); @@ -80,6 +82,7 @@ export class InlineAISettingsTab extends PluginSettingTab { .onChange(async (value) => { this.plugin.settings.apiKey = value; await this.plugin.saveSettings(); + this.plugin.chatapi.updateSettings(this.plugin.settings); }) ); } @@ -98,6 +101,7 @@ export class InlineAISettingsTab extends PluginSettingTab { .onChange(async (value) => { this.plugin.settings.customURL = value; await this.plugin.saveSettings(); + this.plugin.chatapi.updateSettings(this.plugin.settings); }) ); } @@ -118,6 +122,7 @@ export class InlineAISettingsTab extends PluginSettingTab { .onChange(async (value) => { this.plugin.settings.selectionPrompt = value; await this.plugin.saveSettings(); + this.plugin.chatapi.updateSettings(this.plugin.settings); }); // Add a CSS class for styling @@ -135,6 +140,7 @@ export class InlineAISettingsTab extends PluginSettingTab { .onChange(async (value) => { this.plugin.settings.cursorPrompt = value; await this.plugin.saveSettings(); + this.plugin.chatapi.updateSettings(this.plugin.settings); }); // Add a CSS class for styling