From a404a35d0ed45c1b2b5952801da098618e7bb9b3 Mon Sep 17 00:00:00 2001 From: Anirban Kar Date: Fri, 13 Dec 2024 12:01:50 +0530 Subject: [PATCH] auto select model on provider disabled --- app/components/chat/ModelSelector.tsx | 67 +++++++-------------------- 1 file changed, 16 insertions(+), 51 deletions(-) diff --git a/app/components/chat/ModelSelector.tsx b/app/components/chat/ModelSelector.tsx index bd41eb4..7571d63 100644 --- a/app/components/chat/ModelSelector.tsx +++ b/app/components/chat/ModelSelector.tsx @@ -1,7 +1,6 @@ import type { ProviderInfo } from '~/types/model'; import type { ModelInfo } from '~/utils/types'; -import { useEffect, useState } from 'react'; -import Cookies from 'js-cookie'; +import { useEffect } from 'react'; interface ModelSelectorProps { model?: string; @@ -22,62 +21,28 @@ export const ModelSelector = ({ providerList, }: ModelSelectorProps) => { // Load enabled providers from cookies - const [enabledProviders, setEnabledProviders] = useState(() => { - const savedProviders = Cookies.get('providers'); - - if (savedProviders) { - try { - const parsedProviders = JSON.parse(savedProviders); - return providerList.filter((p) => parsedProviders[p.name]); - } catch (error) { - console.error('Failed to parse providers from cookies:', error); - return providerList; - } - } - - return providerList; - }); // Update enabled providers when cookies change useEffect(() => { - // Function to update providers from cookies - const updateProvidersFromCookies = () => { - const savedProviders = Cookies.get('providers'); + // If current provider is disabled, switch to first enabled provider + if (providerList.length == 0) { + return; + } - if (savedProviders) { - try { - const parsedProviders = JSON.parse(savedProviders); - const newEnabledProviders = providerList.filter((p) => parsedProviders[p.name]); - setEnabledProviders(newEnabledProviders); + if (provider && !providerList.map((p) => p.name).includes(provider.name)) { + const firstEnabledProvider = providerList[0]; + setProvider?.(firstEnabledProvider); - // If current provider is disabled, switch to first enabled provider - if (provider && !parsedProviders[provider.name] && newEnabledProviders.length > 0) { - const firstEnabledProvider = newEnabledProviders[0]; - setProvider?.(firstEnabledProvider); + // Also update the model to the first available one for the new provider + const firstModel = modelList.find((m) => m.provider === firstEnabledProvider.name); - // Also update the model to the first available one for the new provider - const firstModel = modelList.find((m) => m.provider === firstEnabledProvider.name); - - if (firstModel) { - setModel?.(firstModel.name); - } - } - } catch (error) { - console.error('Failed to parse providers from cookies:', error); - } + if (firstModel) { + setModel?.(firstModel.name); } - }; - - // Initial update - updateProvidersFromCookies(); - - // Set up an interval to check for cookie changes - const interval = setInterval(updateProvidersFromCookies, 1000); - - return () => clearInterval(interval); + } }, [providerList, provider, setProvider, modelList, setModel]); - if (enabledProviders.length === 0) { + if (providerList.length === 0) { return (

@@ -93,7 +58,7 @@ export const ModelSelector = ({