diff --git a/src/lib/components/admin/Settings/Models.svelte b/src/lib/components/admin/Settings/Models.svelte index 20c0948d0..6e1daefae 100644 --- a/src/lib/components/admin/Settings/Models.svelte +++ b/src/lib/components/admin/Settings/Models.svelte @@ -12,7 +12,8 @@ deleteAllModels, getBaseModels, toggleModelById, - updateModelById + updateModelById, + getModelById } from '$lib/apis/models'; import { getModels } from '$lib/apis'; @@ -36,6 +37,9 @@ import Eye from '$lib/components/icons/Eye.svelte'; import { copyToClipboard } from '$lib/utils'; + import { page } from '$app/stores'; + import { goto } from '$app/navigation'; + let shiftKey = false; let importFiles; @@ -67,6 +71,24 @@ let searchValue = ''; + $: { + if ($page.url.pathname === '/admin/settings/models/edit') { + const modelIdFromUrl = $page.url.searchParams.get('id'); + if (modelIdFromUrl && models) { + const modelExists = models.some((m) => m.id === modelIdFromUrl); + if (modelExists) { + selectedModelId = modelIdFromUrl; + } else { + goto('/admin/settings/models', { replaceState: true }); + } + } else if (!modelIdFromUrl) { + goto('/admin/settings/models', { replaceState: true }); + } + } else if ($page.url.pathname === '/admin/settings/models' && selectedModelId !== null) { + selectedModelId = null; + } + } + const downloadModels = async (models) => { let blob = new Blob([JSON.stringify(models)], { type: 'application/json' @@ -316,7 +338,7 @@ class=" flex flex-1 text-left space-x-3.5 cursor-pointer w-full" type="button" on:click={() => { - selectedModelId = model.id; + goto(`/admin/settings/models/edit?id=${model.id}`); }} >