From 27c2a360f0561cd99a3097910c8b8506b99b88bb Mon Sep 17 00:00:00 2001 From: Faisal Amir Date: Fri, 30 May 2025 00:00:07 +0700 Subject: [PATCH] fix: reverse setting local provider (#5140) * fix: reverse setting local provider * fix conflict --- .../settings/providers/$providerName.tsx | 503 +++++++++--------- 1 file changed, 266 insertions(+), 237 deletions(-) diff --git a/web-app/src/routes/settings/providers/$providerName.tsx b/web-app/src/routes/settings/providers/$providerName.tsx index e727c37c9..d4dfaa9d5 100644 --- a/web-app/src/routes/settings/providers/$providerName.tsx +++ b/web-app/src/routes/settings/providers/$providerName.tsx @@ -240,264 +240,293 @@ function ProviderDetail() { /> - {/* Settings */} - - {provider?.settings.map((setting, settingIndex) => { - // Use the DynamicController component - const actionComponent = ( -
- { - if (provider) { - const newSettings = [...provider.settings] - // Handle different value types by forcing the type - // Use type assertion to bypass type checking +
+ {/* Settings */} + + {provider?.settings.map((setting, settingIndex) => { + // Use the DynamicController component + const actionComponent = ( +
+ { + if (provider) { + const newSettings = [...provider.settings] + // Handle different value types by forcing the type + // Use type assertion to bypass type checking - ;( - newSettings[settingIndex].controller_props as { - value: string | boolean | number + ;( + newSettings[settingIndex].controller_props as { + value: string | boolean | number + } + ).value = newValue + + // Create update object with updated settings + const updateObj: Partial = { + settings: newSettings, } - ).value = newValue - - // Create update object with updated settings - const updateObj: Partial = { - settings: newSettings, - } - // Check if this is an API key or base URL setting and update the corresponding top-level field - const settingKey = setting.key - if ( - settingKey === 'api-key' && - typeof newValue === 'string' - ) { - updateObj.api_key = newValue - } else if ( - settingKey === 'base-url' && - typeof newValue === 'string' - ) { - updateObj.base_url = newValue - } - updateSettings( - providerName, - updateObj.settings ?? [] - ) - updateProvider(providerName, { - ...provider, - ...updateObj, - }) - } - }} - /> -
- ) - - return ( - { - return ( - + // Check if this is an API key or base URL setting and update the corresponding top-level field + const settingKey = setting.key + if ( + settingKey === 'api-key' && + typeof newValue === 'string' + ) { + updateObj.api_key = newValue + } else if ( + settingKey === 'base-url' && + typeof newValue === 'string' + ) { + updateObj.base_url = newValue + } + updateSettings( + providerName, + updateObj.settings ?? [] ) - }, - p: ({ ...props }) => ( -

- ), + updateProvider(providerName, { + ...provider, + ...updateObj, + }) + } }} /> - } - actions={actionComponent} - /> - ) - })} +

+ ) - - + return ( + { + return ( + + ) + }, + p: ({ ...props }) => ( +

+ ), + }} + /> + } + actions={actionComponent} + /> + ) + })} - {/* Models */} - -

- Models -

-
- {provider && provider.provider !== 'llama.cpp' && ( - <> + + + + {/* Models */} + +

+ Models +

+
+ {provider && provider.provider !== 'llama.cpp' && ( + <> + + + + )} + {provider && provider.provider === 'llama.cpp' && ( - - - )} - {provider && provider.provider === 'llama.cpp' && ( - - )} + )} +
-
- } - > - {provider?.models.length ? ( - provider?.models.map((model, modelIndex) => { - const capabilities = model.capabilities || [] - return ( - -

{model.id}

- - - } - actions={ -
- {provider && provider.provider === 'llama.cpp' && ( -
- {activeModels.some( - (activeModel) => activeModel.id === model.id - ) ? ( - - ) : ( -
+ } + actions={ +
+ + {model.settings && ( + + )} + + {provider && + provider.provider === 'llama.cpp' && ( +
+ {activeModels.some( + (activeModel) => + activeModel.id === model.id + ) ? ( + ) : ( - 'Start' + )} - +
)} -
- )} - - {model.settings && ( - - )} - -
- } - /> - ) - }) - ) : ( -
-
-
No model found
+
+ } + /> + ) + }) + ) : ( +
+
+
+ No model found +
+
+

+ Available models will be listed here. If you don't have + any models yet, visit the  + Hub +  to download. +

-

- Available models will be listed here. If you don't have - any models yet, visit the  - Hub -  to download. -

-
- )} -
+ )} + +