diff --git a/src/pages/Index.tsx b/src/pages/Index.tsx index 47fd352..67714b3 100644 --- a/src/pages/Index.tsx +++ b/src/pages/Index.tsx @@ -96,6 +96,8 @@ const Index = () => { const [chatInput, setChatInput] = useState(""); const [chatLoading, setChatLoading] = useState(false); const [selectedModel, setSelectedModel] = useState(""); + const [defaultModel, setDefaultModel] = useState(""); + const [modelSearchQuery, setModelSearchQuery] = useState(""); // Debounce timer for auto-save const saveTimerRef = useRef(null); @@ -527,6 +529,14 @@ const Index = () => { chatEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }, [chatMessages]); + // Load default model from localStorage on mount + useEffect(() => { + const savedDefaultModel = localStorage.getItem('defaultAiModel'); + if (savedDefaultModel) { + setDefaultModel(savedDefaultModel); + } + }, []); + // Load models when chatbox opens useEffect(() => { if (chatOpen && openRouterModels.length === 0) { @@ -537,9 +547,22 @@ const Index = () => { // Set default model when models are loaded useEffect(() => { if (openRouterModels.length > 0 && !selectedModel) { - setSelectedModel(openRouterModels[0].id); + // If there's a default model saved, use it + if (defaultModel && openRouterModels.find(m => m.id === defaultModel)) { + setSelectedModel(defaultModel); + } else { + // Otherwise use the first model + setSelectedModel(openRouterModels[0].id); + } } - }, [openRouterModels, selectedModel]); + }, [openRouterModels, selectedModel, defaultModel]); + + // Save default model to localStorage + const handleSetDefaultModel = (modelId: string) => { + setDefaultModel(modelId); + localStorage.setItem('defaultAiModel', modelId); + showSuccess("Modèle par défaut défini"); + }; const confirmAddUser = async (username: string, password: string, isAdmin: boolean) => { try { @@ -2266,25 +2289,60 @@ const Index = () => { -
- setModelSearchQuery(e.target.value)} + className="text-xs h-8" + disabled={loadingModels} + /> + + {/* Models list */} +
{loadingModels ? ( - +
+ Chargement des modèles... +
) : openRouterModels.length === 0 ? ( - +
+ Aucun modèle disponible +
) : ( - openRouterModels.map(model => ( - - )) + openRouterModels + .filter(model => + model.name.toLowerCase().includes(modelSearchQuery.toLowerCase()) || + model.id.toLowerCase().includes(modelSearchQuery.toLowerCase()) + ) + .map(model => ( +
setSelectedModel(model.id)} + > + {model.name} + +
+ )) )} - +