From 17490381f5e4d68da2cd480c5a48732df57b96d7 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 6 Jan 2026 19:11:56 +0400 Subject: [PATCH] refac --- src/lib/components/chat/Chat.svelte | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 1177100234..ff41dfe472 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -913,6 +913,8 @@ .filter((m) => !(m?.info?.meta?.hidden ?? false)) .map((m) => m.id); + const defaultModels = $config?.default_models ? $config?.default_models.split(',') : []; + if ($page.url.searchParams.get('models') || $page.url.searchParams.get('model')) { const urlModels = ( $page.url.searchParams.get('models') || @@ -921,8 +923,8 @@ )?.split(','); if (urlModels.length === 1) { - const m = $models.find((m) => m.id === urlModels[0]); - if (!m) { + if (!$models.find((m) => m.id === urlModels[0])) { + // Model not found; open model selector and prefill const modelSelectorButton = document.getElementById('model-selector-0-button'); if (modelSelectorButton) { modelSelectorButton.click(); @@ -936,37 +938,51 @@ } } } else { + // Model found; set it as selected selectedModels = urlModels; } } else { + // Multiple models; set as selected selectedModels = urlModels; } + // Unavailable models filtering selectedModels = selectedModels.filter((modelId) => $models.map((m) => m.id).includes(modelId) ); } else { if ($selectedFolder?.data?.model_ids) { + // Set from folder model IDs selectedModels = $selectedFolder?.data?.model_ids; } else { if (sessionStorage.selectedModels) { + // Set from session storage (temporary selection) selectedModels = JSON.parse(sessionStorage.selectedModels); sessionStorage.removeItem('selectedModels'); } else { if ($settings?.models) { + // Set from user settings selectedModels = $settings?.models; - } else if ($config?.default_models) { - console.log($config?.default_models.split(',') ?? ''); - selectedModels = $config?.default_models.split(','); + } else if (defaultModels && defaultModels.length > 0) { + // Set from default models + selectedModels = defaultModels; } } } + // Unavailable & hidden models filtering selectedModels = selectedModels.filter((modelId) => availableModels.includes(modelId)); } + // Ensure at least one model is selected if (selectedModels.length === 0 || (selectedModels.length === 1 && selectedModels[0] === '')) { if (availableModels.length > 0) { + if (defaultModels && defaultModels.length > 0) { + // Set from default models + selectedModels = defaultModels.filter((modelId) => availableModels.includes(modelId)); + } + + // Set to first available model selectedModels = [availableModels?.at(0) ?? '']; } else { selectedModels = [''];