🐛fix: delete pre populate remote models (#5516)

This commit is contained in:
Faisal Amir 2025-06-25 13:49:55 +07:00 committed by GitHub
parent 6e3852554a
commit c463090edb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 39 additions and 13 deletions

View File

@ -33,7 +33,16 @@ export const DialogDeleteModel = ({
const removeModel = async () => { const removeModel = async () => {
deleteModelCache(selectedModelId) deleteModelCache(selectedModelId)
deleteModel(selectedModelId).then(() => { deleteModel(selectedModelId).then(() => {
getProviders().then(setProviders) getProviders().then((providers) => {
// Filter out the deleted model from all providers
const filteredProviders = providers.map((provider) => ({
...provider,
models: provider.models.filter(
(model) => model.id !== selectedModelId
),
}))
setProviders(filteredProviders)
})
toast.success('Delete Model', { toast.success('Delete Model', {
id: `delete-model-${selectedModel?.id}`, id: `delete-model-${selectedModel?.id}`,
description: `Model ${selectedModel?.id} has been permanently deleted.`, description: `Model ${selectedModel?.id} has been permanently deleted.`,

View File

@ -6,6 +6,7 @@ type ModelProviderState = {
providers: ModelProvider[] providers: ModelProvider[]
selectedProvider: string selectedProvider: string
selectedModel: Model | null selectedModel: Model | null
deletedModels: string[]
getModelBy: (modelId: string) => Model | undefined getModelBy: (modelId: string) => Model | undefined
setProviders: (providers: ModelProvider[]) => void setProviders: (providers: ModelProvider[]) => void
getProviderByName: (providerName: string) => ModelProvider | undefined getProviderByName: (providerName: string) => ModelProvider | undefined
@ -25,6 +26,7 @@ export const useModelProvider = create<ModelProviderState>()(
providers: [], providers: [],
selectedProvider: 'llama.cpp', selectedProvider: 'llama.cpp',
selectedModel: null, selectedModel: null,
deletedModels: [],
getModelBy: (modelId: string) => { getModelBy: (modelId: string) => {
const provider = get().providers.find( const provider = get().providers.find(
(provider) => provider.provider === get().selectedProvider (provider) => provider.provider === get().selectedProvider
@ -35,6 +37,11 @@ export const useModelProvider = create<ModelProviderState>()(
setProviders: (providers) => setProviders: (providers) =>
set((state) => { set((state) => {
const existingProviders = state.providers const existingProviders = state.providers
// Ensure deletedModels is always an array
const currentDeletedModels = Array.isArray(state.deletedModels)
? state.deletedModels
: []
const updatedProviders = providers.map((provider) => { const updatedProviders = providers.map((provider) => {
const existingProvider = existingProviders.find( const existingProvider = existingProviders.find(
(x) => x.provider === provider.provider (x) => x.provider === provider.provider
@ -43,7 +50,9 @@ export const useModelProvider = create<ModelProviderState>()(
const mergedModels = [ const mergedModels = [
...models, ...models,
...(provider?.models ?? []).filter( ...(provider?.models ?? []).filter(
(e) => !models.some((m) => m.id === e.id) (e) =>
!models.some((m) => m.id === e.id) &&
!currentDeletedModels.includes(e.id)
), ),
] ]
return { return {
@ -118,7 +127,13 @@ export const useModelProvider = create<ModelProviderState>()(
return modelObject return modelObject
}, },
deleteModel: (modelId: string) => { deleteModel: (modelId: string) => {
set((state) => ({ set((state) => {
// Ensure deletedModels is always an array
const currentDeletedModels = Array.isArray(state.deletedModels)
? state.deletedModels
: []
return {
providers: state.providers.map((provider) => { providers: state.providers.map((provider) => {
const models = provider.models.filter( const models = provider.models.filter(
(model) => model.id !== modelId (model) => model.id !== modelId
@ -128,7 +143,9 @@ export const useModelProvider = create<ModelProviderState>()(
models, models,
} }
}), }),
})) deletedModels: [...currentDeletedModels, modelId],
}
})
}, },
addProvider: (provider: ModelProvider) => { addProvider: (provider: ModelProvider) => {
set((state) => ({ set((state) => ({