Browse Source

Fix openrouter options

Saoud Rizwan 1 year ago
parent
commit
9ffe01888a

+ 3 - 0
webview-ui/src/components/settings/ApiOptions.tsx

@@ -31,6 +31,7 @@ import { ExtensionMessage } from "../../../../src/shared/ExtensionMessage"
 import { useExtensionState } from "../../context/ExtensionStateContext"
 import { vscode } from "../../utils/vscode"
 import VSCodeButtonLink from "../common/VSCodeButtonLink"
+import OpenRouterModelPicker from "./OpenRouterModelPicker"
 
 interface ApiOptionsProps {
 	showModelOptions: boolean
@@ -529,6 +530,8 @@ const ApiOptions = ({ showModelOptions, apiErrorMessage }: ApiOptionsProps) => {
 				</p>
 			)}
 
+			{selectedProvider === "openrouter" && showModelOptions && <OpenRouterModelPicker />}
+
 			{selectedProvider !== "openrouter" &&
 				selectedProvider !== "openai" &&
 				selectedProvider !== "ollama" &&

+ 11 - 2
webview-ui/src/components/settings/OpenRouterModelPicker.tsx

@@ -2,6 +2,8 @@ import { VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react"
 import React, { useMemo } from "react"
 import { useExtensionState } from "../../context/ExtensionStateContext"
 import { ModelInfoView, normalizeApiConfiguration } from "./ApiOptions"
+import { useMount } from "react-use"
+import { vscode } from "../../utils/vscode"
 
 interface OpenRouterModelPickerProps {}
 
@@ -10,14 +12,21 @@ const OpenRouterModelPicker: React.FC<OpenRouterModelPickerProps> = () => {
 
 	const handleModelChange = (event: any) => {
 		const newModelId = event.target.value
-		// get info
-		setApiConfiguration({ ...apiConfiguration, openRouterModelId: newModelId })
+		setApiConfiguration({
+			...apiConfiguration,
+			openRouterModelId: newModelId,
+			openRouterModelInfo: openRouterModels[newModelId],
+		})
 	}
 
 	const { selectedModelId, selectedModelInfo } = useMemo(() => {
 		return normalizeApiConfiguration(apiConfiguration)
 	}, [apiConfiguration])
 
+	useMount(() => {
+		vscode.postMessage({ type: "refreshOpenRouterModels" })
+	})
+
 	return (
 		<div style={{ display: "flex", flexDirection: "column", gap: 5 }}>
 			<div className="dropdown-container">