Просмотр исходного кода

fix: enable Requesty refresh models with credentials (#10273)

Daniel 1 неделя назад
Родитель
Сommit
529e0d7a94

+ 9 - 0
src/core/webview/webviewMessageHandler.ts

@@ -790,6 +790,9 @@ export const webviewMessageHandler = async (
 			const requestedProvider = message?.values?.provider
 			const providerFilter = requestedProvider ? toRouterName(requestedProvider) : undefined
 
+			// Optional refresh flag to flush cache before fetching (useful for providers requiring credentials)
+			const shouldRefresh = message?.values?.refresh === true
+
 			const routerModels: Record<RouterName, ModelRecord> = providerFilter
 				? ({} as Record<RouterName, ModelRecord>)
 				: {
@@ -887,6 +890,12 @@ export const webviewMessageHandler = async (
 				? candidates.filter(({ key }) => key === providerFilter)
 				: candidates
 
+			// If refresh flag is set and we have a specific provider, flush its cache first
+			if (shouldRefresh && providerFilter && modelFetchPromises.length > 0) {
+				const targetCandidate = modelFetchPromises[0]
+				await flushModels(targetCandidate.options, true)
+			}
+
 			const results = await Promise.allSettled(
 				modelFetchPromises.map(async ({ key, options }) => {
 					const models = await safeGetModels(options)

+ 1 - 3
webview-ui/src/components/settings/providers/Requesty.tsx

@@ -30,7 +30,6 @@ export const Requesty = ({
 	apiConfiguration,
 	setApiConfigurationField,
 	routerModels,
-	refetchRouterModels,
 	organizationAllowList,
 	modelValidationError,
 	uriScheme,
@@ -127,8 +126,7 @@ export const Requesty = ({
 			<Button
 				variant="outline"
 				onClick={() => {
-					vscode.postMessage({ type: "flushRouterModels", text: "requesty" })
-					refetchRouterModels()
+					vscode.postMessage({ type: "requestRouterModels", values: { provider: "requesty", refresh: true } })
 				}}>
 				<div className="flex items-center gap-2">
 					<span className="codicon codicon-refresh" />