From 5216b47d27768b73fd8e04871ac81073bd99c07d Mon Sep 17 00:00:00 2001 From: rjmacarthy Date: Fri, 26 Apr 2024 11:37:43 +0100 Subject: [PATCH] fix fallback to text box is no models returned from ollama api --- src/extension/providers/sidebar.ts | 12 ++++-- src/webview/providers.tsx | 66 ++++++++++++++++-------------- 2 files changed, 45 insertions(+), 33 deletions(-) diff --git a/src/extension/providers/sidebar.ts b/src/extension/providers/sidebar.ts index cc83d1fd..71f9d1b2 100644 --- a/src/extension/providers/sidebar.ts +++ b/src/extension/providers/sidebar.ts @@ -6,7 +6,11 @@ import { getTextSelection, getTheme } from '../utils' -import { WORKSPACE_STORAGE_KEY, EVENT_NAME, TWINNY_COMMAND_NAME } from '../../common/constants' +import { + WORKSPACE_STORAGE_KEY, + EVENT_NAME, + TWINNY_COMMAND_NAME +} from '../../common/constants' import { ChatService } from '../chat-service' import { ClientMessage, @@ -32,7 +36,7 @@ export class SidebarProvider implements vscode.WebviewViewProvider { constructor( statusBar: vscode.StatusBarItem, context: vscode.ExtensionContext, - templateDir: string, + templateDir: string ) { this._statusBar = statusBar this._context = context @@ -162,7 +166,9 @@ export class SidebarProvider implements vscode.WebviewViewProvider { public fetchOllamaModels = async () => { try { const models = await this._ollamaService?.fetchModels() - if (!models) return + if (!models?.length) { + return + } this.view?.webview.postMessage({ type: EVENT_NAME.twinnyFetchOllamaModels, value: { diff --git a/src/webview/providers.tsx b/src/webview/providers.tsx index 5249359f..1176d020 100644 --- a/src/webview/providers.tsx +++ b/src/webview/providers.tsx @@ -219,6 +219,40 @@ function ProviderForm({ onClose, provider }: ProviderFormProps) { const hasOllamaModels = !!models?.length + const getModelInput = () => { + if (formState.provider === ApiProviders.Ollama && hasOllamaModels) { + return ( + <> +
+ +
+ { + setFormState({ ...formState, modelName: model }) + }} + /> + + ) + } + + return ( + <> +
+ +
+ + + ) + } + return ( <> @@ -232,7 +266,7 @@ function ProviderForm({ onClose, provider }: ProviderFormProps) { name="label" onChange={handleChange} value={formState.label} - placeholder='Applicable for some providers like "Ollama"' + placeholder='Just for your reference' > @@ -306,35 +340,7 @@ function ProviderForm({ onClose, provider }: ProviderFormProps) { - {formState.provider === ApiProviders.Ollama && hasOllamaModels && ( -
-
- -
- { - setFormState({ ...formState, modelName: model }) - }} - /> -
- )} - - {formState.provider !== ApiProviders.Ollama && ( -
-
- -
- -
- )} + {getModelInput()}