From ccbb3303f2ec5db0b16573bbb665a12f6764da66 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 22 Aug 2026 08:05:52 -0400 Subject: [PATCH] refac --- .../components/admin/Settings/Models.svelte | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index 0ce65e5c34..2099a79d1f 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -88,8 +88,8 @@ let defaultModelIdSet = new Set(); let defaultPinnedModelIdSet = new Set(); - let workspaceModels: ModelListItem[] = []; let baseModels: ModelListItem[] = []; + let allModels: ModelListItem[] = []; let filteredModels = []; let selectedModelId = null; @@ -119,6 +119,9 @@ const isSharedModel = (model) => (model?.access_grants ?? []).length > 0 && !isPublicModel(model); + const isPresetModel = (model: any) => + !!(model?.preset || model?.base_model_id || model?.info?.base_model_id); + const modelAccessLabel = (model) => { if (isPublicModel(model)) { return $i18n.t('Public'); @@ -264,19 +267,19 @@ selectedTag = ''; } - workspaceModels = await getBaseModels(localStorage.token, selectedTag); - baseModels = await getModels(localStorage.token, null, true); - const workspaceModelIds = new Set(workspaceModels.map((wm: ModelListItem) => wm.id)); + baseModels = await getBaseModels(localStorage.token, selectedTag); + allModels = await getModels(localStorage.token); + const baseModelIds = new Set(baseModels.map((model: ModelListItem) => model.id)); - models = baseModels - .filter((m: ModelListItem) => !selectedTag || workspaceModelIds.has(m.id)) + models = allModels + .filter((m: ModelListItem) => !selectedTag || baseModelIds.has(m.id)) .map((m: ModelListItem) => { - const workspaceModel = workspaceModels.find((wm: ModelListItem) => wm.id === m.id); + const baseModel = baseModels.find((model: ModelListItem) => model.id === m.id); - if (workspaceModel) { + if (baseModel) { return { ...m, - ...workspaceModel + ...baseModel }; } else { return { @@ -455,9 +458,9 @@ } const upsertModelHandler = async (model, overrides = {}, showToast = true) => { - model = { ...model, base_model_id: null, ...overrides }; + model = { ...model, ...(isPresetModel(model) ? {} : { base_model_id: null }), ...overrides }; - if (workspaceModels.find((m) => m.id === model.id)) { + if (baseModels.find((m: ModelListItem) => m.id === model.id) || isPresetModel(model)) { const res = await updateModelById(localStorage.token, model.id, model).catch((error) => { return null; }); @@ -486,7 +489,7 @@ }; const toggleModelHandler = async (model) => { - if (!Object.keys(model).includes('base_model_id')) { + if (!Object.keys(model).includes('base_model_id') && !isPresetModel(model)) { await createNewModel(localStorage.token, { id: model.id, name: model.name, @@ -589,10 +592,20 @@ }; const getFullModel = async (model: any) => - workspaceModels.some((workspaceModel) => workspaceModel.id === model.id) + baseModels.some((baseModel) => baseModel.id === model.id) || isPresetModel(model) ? ((await getModelById(localStorage.token, model.id).catch(() => null)) ?? model) : model; + const openModelHandler = async (model: any) => { + if (isPresetModel(model)) { + showSettings.set(false); + await goto(`/workspace/models/edit?id=${encodeURIComponent(model.id)}`); + return; + } + + selectedModelId = model.id; + }; + const cloneHandler = async (model) => { model = await getFullModel(model); sessionStorage.model = JSON.stringify({ @@ -933,7 +946,7 @@ class="flex group/item gap-2.5 w-full min-w-0 flex-1 text-left cursor-pointer" type="button" on:click={() => { - selectedModelId = model.id; + openModelHandler(model); }} >
@@ -1105,7 +1118,7 @@ type="button" aria-label={$i18n.t('Edit')} on:click={() => { - selectedModelId = model.id; + openModelHandler(model); }} >