Merge pull request #5791 from menloresearch/fix/fetch-models-from-custom-endpoint-crashes-app
fix: fetch models from custom provider causes app to crash
This commit is contained in:
commit
b17c6f4eb6
@ -36,7 +36,16 @@ export const useModelProvider = create<ModelProviderState>()(
|
|||||||
},
|
},
|
||||||
setProviders: (providers) =>
|
setProviders: (providers) =>
|
||||||
set((state) => {
|
set((state) => {
|
||||||
const existingProviders = state.providers
|
const existingProviders = state.providers.map((provider) => {
|
||||||
|
return {
|
||||||
|
...provider,
|
||||||
|
models: provider.models.filter(
|
||||||
|
(e) =>
|
||||||
|
('id' in e || 'model' in e) &&
|
||||||
|
typeof (e.id ?? e.model) === 'string'
|
||||||
|
),
|
||||||
|
}
|
||||||
|
})
|
||||||
// Ensure deletedModels is always an array
|
// Ensure deletedModels is always an array
|
||||||
const currentDeletedModels = Array.isArray(state.deletedModels)
|
const currentDeletedModels = Array.isArray(state.deletedModels)
|
||||||
? state.deletedModels
|
? state.deletedModels
|
||||||
@ -46,11 +55,17 @@ export const useModelProvider = create<ModelProviderState>()(
|
|||||||
const existingProvider = existingProviders.find(
|
const existingProvider = existingProviders.find(
|
||||||
(x) => x.provider === provider.provider
|
(x) => x.provider === provider.provider
|
||||||
)
|
)
|
||||||
const models = existingProvider?.models || []
|
const models = (existingProvider?.models || []).filter(
|
||||||
|
(e) =>
|
||||||
|
('id' in e || 'model' in e) &&
|
||||||
|
typeof (e.id ?? e.model) === 'string'
|
||||||
|
)
|
||||||
const mergedModels = [
|
const mergedModels = [
|
||||||
...models,
|
...models,
|
||||||
...(provider?.models ?? []).filter(
|
...(provider?.models ?? []).filter(
|
||||||
(e) =>
|
(e) =>
|
||||||
|
('id' in e || 'model' in e) &&
|
||||||
|
typeof (e.id ?? e.model) === 'string' &&
|
||||||
!models.some((m) => m.id === e.id) &&
|
!models.some((m) => m.id === e.id) &&
|
||||||
!currentDeletedModels.includes(e.id)
|
!currentDeletedModels.includes(e.id)
|
||||||
),
|
),
|
||||||
|
|||||||
@ -210,7 +210,9 @@ export const fetchModelsFromProvider = async (
|
|||||||
return data.data.map((model: { id: string }) => model.id).filter(Boolean)
|
return data.data.map((model: { id: string }) => model.id).filter(Boolean)
|
||||||
} else if (Array.isArray(data)) {
|
} else if (Array.isArray(data)) {
|
||||||
// Direct array format: ["model-id1", "model-id2", ...]
|
// Direct array format: ["model-id1", "model-id2", ...]
|
||||||
return data.filter(Boolean)
|
return data
|
||||||
|
.filter(Boolean)
|
||||||
|
.map((model) => ('id' in model ? model.id : model))
|
||||||
} else if (data.models && Array.isArray(data.models)) {
|
} else if (data.models && Array.isArray(data.models)) {
|
||||||
// Alternative format: { models: [...] }
|
// Alternative format: { models: [...] }
|
||||||
return data.models
|
return data.models
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user