diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index df5d123a53..1a68c52bf9 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -18,6 +18,7 @@ import { createNewModel, deleteAllModels, + deleteModelById, getAllModels, getModelById, exportModels, @@ -97,6 +98,8 @@ let showManageModal = false; let showResetModal = false; + let showDeleteModal = false; + let modelToDelete: ModelListItem | null = null; let savingModelOrder = false; let savingModelsSettings = false; let modelOrderDirty = false; @@ -122,6 +125,8 @@ const isPresetModel = (model: any) => !!(model?.preset || model?.base_model_id || model?.info?.base_model_id); + const canResetModel = (model: ModelListItem | null) => + !!model && !isPresetModel(model) && availableModelIds.has(model.id); const modelTags = (model: any): string[] => (model?.meta?.tags ?? []) .map((tag) => (typeof tag === 'string' ? tag : tag?.name)) @@ -535,6 +540,29 @@ ); }; + const deleteModelHandler = async (model: ModelListItem) => { + try { + // Read fresh records: visibility and access changes can create saved settings. + const savedModels = await getAllModels(localStorage.token); + if (savedModels.some((savedModel: ModelListItem) => savedModel.id === model.id)) { + const res = await deleteModelById(localStorage.token, model.id); + if (!res) { + toast.error($i18n.t('Failed to delete model')); + return; + } + } + + toast.success( + canResetModel(model) + ? $i18n.t('Model reset successfully') + : $i18n.t('Deleted {{name}}', { name: model.name }) + ); + await init(); + } catch (error: any) { + toast.error(`${error?.detail ?? error}`); + } + }; + const hideModelHandler = async (model) => { const updatedModel = { ...model, @@ -704,6 +732,22 @@ }); + { + if (modelToDelete) await deleteModelHandler(modelToDelete); + }} +/> + { + modelToDelete = model; + showDeleteModal = true; + }} exportHandler={() => { exportModelHandler(model); }} diff --git a/src/lib/components/admin/Settings/Models/ModelMenu.svelte b/src/lib/components/admin/Settings/Models/ModelMenu.svelte index f9c9b4ff03..b47d021d6c 100644 --- a/src/lib/components/admin/Settings/Models/ModelMenu.svelte +++ b/src/lib/components/admin/Settings/Models/ModelMenu.svelte @@ -27,6 +27,8 @@ export let model; export let exportHandler: Function; + export let deleteHandler: Function; + export let deleteLabel: string; export let hideHandler: Function; export let privacyHandler: Function; export let isDefaultSelected = false; @@ -66,6 +68,15 @@
+ +