Skip to content

Commit db4c5d5

Browse files
committed
refactor: consolidate where we get the error
1 parent 004cb26 commit db4c5d5

File tree

7 files changed

+33
-13
lines changed

7 files changed

+33
-13
lines changed

webview-ui/src/components/settings/ApiOptions.tsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,10 @@ const ApiOptions = ({
259259
[setApiConfigurationField, apiConfiguration, routerModels, organizationAllowList],
260260
)
261261

262+
const modelValidationError = useMemo(() => {
263+
return getModelValidationError(apiConfiguration, routerModels, organizationAllowList)
264+
}, [apiConfiguration, routerModels, organizationAllowList])
265+
262266
const docs = useMemo(() => {
263267
const provider = PROVIDERS.find(({ value }) => value === selectedProvider)
264268
const name = provider?.label
@@ -318,6 +322,7 @@ const ApiOptions = ({
318322
uriScheme={uriScheme}
319323
fromWelcomeView={fromWelcomeView}
320324
organizationAllowList={organizationAllowList}
325+
modelValidationError={modelValidationError}
321326
/>
322327
)}
323328

@@ -328,6 +333,7 @@ const ApiOptions = ({
328333
routerModels={routerModels}
329334
refetchRouterModels={refetchRouterModels}
330335
organizationAllowList={organizationAllowList}
336+
modelValidationError={modelValidationError}
331337
/>
332338
)}
333339

@@ -338,6 +344,7 @@ const ApiOptions = ({
338344
routerModels={routerModels}
339345
uriScheme={uriScheme}
340346
organizationAllowList={organizationAllowList}
347+
modelValidationError={modelValidationError}
341348
/>
342349
)}
343350

@@ -347,6 +354,7 @@ const ApiOptions = ({
347354
setApiConfigurationField={setApiConfigurationField}
348355
routerModels={routerModels}
349356
organizationAllowList={organizationAllowList}
357+
modelValidationError={modelValidationError}
350358
/>
351359
)}
352360

@@ -383,6 +391,7 @@ const ApiOptions = ({
383391
apiConfiguration={apiConfiguration}
384392
setApiConfigurationField={setApiConfigurationField}
385393
organizationAllowList={organizationAllowList}
394+
modelValidationError={modelValidationError}
386395
/>
387396
)}
388397

@@ -419,6 +428,7 @@ const ApiOptions = ({
419428
apiConfiguration={apiConfiguration}
420429
setApiConfigurationField={setApiConfigurationField}
421430
organizationAllowList={organizationAllowList}
431+
modelValidationError={modelValidationError}
422432
/>
423433
)}
424434

webview-ui/src/components/settings/providers/Glama.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import { getGlamaAuthUrl } from "@src/oauth/urls"
1010
import { VSCodeButtonLink } from "@src/components/common/VSCodeButtonLink"
1111

1212
import { inputEventTransform } from "../transforms"
13-
import { getModelValidationError } from "@src/utils/validate"
1413
import { ModelPicker } from "../ModelPicker"
1514

1615
type GlamaProps = {
@@ -19,6 +18,7 @@ type GlamaProps = {
1918
routerModels?: RouterModels
2019
uriScheme?: string
2120
organizationAllowList: OrganizationAllowList
21+
modelValidationError?: string
2222
}
2323

2424
export const Glama = ({
@@ -27,6 +27,7 @@ export const Glama = ({
2727
routerModels,
2828
uriScheme,
2929
organizationAllowList,
30+
modelValidationError,
3031
}: GlamaProps) => {
3132
const { t } = useAppTranslation()
3233

@@ -68,7 +69,7 @@ export const Glama = ({
6869
serviceName="Glama"
6970
serviceUrl="https://glama.ai/models"
7071
organizationAllowList={organizationAllowList}
71-
errorMessage={getModelValidationError(apiConfiguration, routerModels, organizationAllowList)}
72+
errorMessage={modelValidationError}
7273
/>
7374
</>
7475
)

webview-ui/src/components/settings/providers/LiteLLM.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,21 @@ import { useAppTranslation } from "@src/i18n/TranslationContext"
1212
import { Button } from "@src/components/ui"
1313

1414
import { inputEventTransform } from "../transforms"
15-
import { getModelValidationError } from "@src/utils/validate"
1615
import { ModelPicker } from "../ModelPicker"
1716

1817
type LiteLLMProps = {
1918
apiConfiguration: ProviderSettings
2019
setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void
2120
organizationAllowList: OrganizationAllowList
21+
modelValidationError?: string
2222
}
2323

24-
export const LiteLLM = ({ apiConfiguration, setApiConfigurationField, organizationAllowList }: LiteLLMProps) => {
24+
export const LiteLLM = ({
25+
apiConfiguration,
26+
setApiConfigurationField,
27+
organizationAllowList,
28+
modelValidationError,
29+
}: LiteLLMProps) => {
2530
const { t } = useAppTranslation()
2631
const { routerModels } = useExtensionState()
2732
const [refreshStatus, setRefreshStatus] = useState<"idle" | "loading" | "success" | "error">("idle")
@@ -144,7 +149,7 @@ export const LiteLLM = ({ apiConfiguration, setApiConfigurationField, organizati
144149
serviceUrl="https://docs.litellm.ai/"
145150
setApiConfigurationField={setApiConfigurationField}
146151
organizationAllowList={organizationAllowList}
147-
errorMessage={getModelValidationError(apiConfiguration, routerModels, organizationAllowList)}
152+
errorMessage={modelValidationError}
148153
/>
149154
</>
150155
)

webview-ui/src/components/settings/providers/OpenAICompatible.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { Button } from "@src/components/ui"
1919

2020
import { convertHeadersToObject } from "../utils/headers"
2121
import { inputEventTransform, noTransform } from "../transforms"
22-
import { getModelValidationError } from "@src/utils/validate"
2322
import { ModelPicker } from "../ModelPicker"
2423
import { R1FormatSetting } from "../R1FormatSetting"
2524
import { ThinkingBudget } from "../ThinkingBudget"
@@ -28,12 +27,14 @@ type OpenAICompatibleProps = {
2827
apiConfiguration: ProviderSettings
2928
setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void
3029
organizationAllowList: OrganizationAllowList
30+
modelValidationError?: string
3131
}
3232

3333
export const OpenAICompatible = ({
3434
apiConfiguration,
3535
setApiConfigurationField,
3636
organizationAllowList,
37+
modelValidationError,
3738
}: OpenAICompatibleProps) => {
3839
const { t } = useAppTranslation()
3940

@@ -145,7 +146,7 @@ export const OpenAICompatible = ({
145146
serviceName="OpenAI"
146147
serviceUrl="https://platform.openai.com"
147148
organizationAllowList={organizationAllowList}
148-
errorMessage={getModelValidationError(apiConfiguration, undefined, organizationAllowList)}
149+
errorMessage={modelValidationError}
149150
/>
150151
<R1FormatSetting
151152
onChange={handleInputChange("openAiR1FormatEnabled", noTransform)}

webview-ui/src/components/settings/providers/OpenRouter.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { VSCodeButtonLink } from "@src/components/common/VSCodeButtonLink"
1818
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@src/components/ui"
1919

2020
import { inputEventTransform, noTransform } from "../transforms"
21-
import { getModelValidationError } from "@src/utils/validate"
2221

2322
import { ModelPicker } from "../ModelPicker"
2423
import { OpenRouterBalanceDisplay } from "./OpenRouterBalanceDisplay"
@@ -31,6 +30,7 @@ type OpenRouterProps = {
3130
uriScheme: string | undefined
3231
fromWelcomeView?: boolean
3332
organizationAllowList: OrganizationAllowList
33+
modelValidationError?: string
3434
}
3535

3636
export const OpenRouter = ({
@@ -41,6 +41,7 @@ export const OpenRouter = ({
4141
uriScheme,
4242
fromWelcomeView,
4343
organizationAllowList,
44+
modelValidationError,
4445
}: OpenRouterProps) => {
4546
const { t } = useAppTranslation()
4647

@@ -136,7 +137,7 @@ export const OpenRouter = ({
136137
serviceName="OpenRouter"
137138
serviceUrl="https://openrouter.ai/models"
138139
organizationAllowList={organizationAllowList}
139-
errorMessage={getModelValidationError(apiConfiguration, routerModels, organizationAllowList)}
140+
errorMessage={modelValidationError}
140141
/>
141142
{openRouterModelProviders && Object.keys(openRouterModelProviders).length > 0 && (
142143
<div>

webview-ui/src/components/settings/providers/Requesty.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { VSCodeButtonLink } from "@src/components/common/VSCodeButtonLink"
1111
import { Button } from "@src/components/ui"
1212

1313
import { inputEventTransform } from "../transforms"
14-
import { getModelValidationError } from "@src/utils/validate"
1514
import { ModelPicker } from "../ModelPicker"
1615
import { RequestyBalanceDisplay } from "./RequestyBalanceDisplay"
1716

@@ -21,6 +20,7 @@ type RequestyProps = {
2120
routerModels?: RouterModels
2221
refetchRouterModels: () => void
2322
organizationAllowList: OrganizationAllowList
23+
modelValidationError?: string
2424
}
2525

2626
export const Requesty = ({
@@ -29,6 +29,7 @@ export const Requesty = ({
2929
routerModels,
3030
refetchRouterModels,
3131
organizationAllowList,
32+
modelValidationError,
3233
}: RequestyProps) => {
3334
const { t } = useAppTranslation()
3435

@@ -97,7 +98,7 @@ export const Requesty = ({
9798
serviceName="Requesty"
9899
serviceUrl="https://requesty.ai"
99100
organizationAllowList={organizationAllowList}
100-
errorMessage={getModelValidationError(apiConfiguration, routerModels, organizationAllowList)}
101+
errorMessage={modelValidationError}
101102
/>
102103
</>
103104
)

webview-ui/src/components/settings/providers/Unbound.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,22 @@ import { vscode } from "@src/utils/vscode"
1212
import { Button } from "@src/components/ui"
1313

1414
import { inputEventTransform } from "../transforms"
15-
import { getModelValidationError } from "@src/utils/validate"
1615
import { ModelPicker } from "../ModelPicker"
1716

1817
type UnboundProps = {
1918
apiConfiguration: ProviderSettings
2019
setApiConfigurationField: (field: keyof ProviderSettings, value: ProviderSettings[keyof ProviderSettings]) => void
2120
routerModels?: RouterModels
2221
organizationAllowList: OrganizationAllowList
22+
modelValidationError?: string
2323
}
2424

2525
export const Unbound = ({
2626
apiConfiguration,
2727
setApiConfigurationField,
2828
routerModels,
2929
organizationAllowList,
30+
modelValidationError,
3031
}: UnboundProps) => {
3132
const { t } = useAppTranslation()
3233
const [didRefetch, setDidRefetch] = useState<boolean>()
@@ -177,7 +178,7 @@ export const Unbound = ({
177178
serviceUrl="https://api.getunbound.ai/models"
178179
setApiConfigurationField={setApiConfigurationField}
179180
organizationAllowList={organizationAllowList}
180-
errorMessage={getModelValidationError(apiConfiguration, routerModels, organizationAllowList)}
181+
errorMessage={modelValidationError}
181182
/>
182183
</>
183184
)

0 commit comments

Comments
 (0)