mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-11 17:29:37 +02:00
Fix: Chargement automatique des modèles OpenRouter dans le chatbox
Corrections pour permettre le chargement automatique des modèles IA: - Retrait de la restriction admin sur la route GET /api/openrouter/models - Retrait de la condition is_admin dans loadOpenRouterModels() - Ajout d'un useEffect pour charger les modèles à l'ouverture du chatbox - Ajout d'un indicateur "Chargement des modèles..." dans le sélecteur - Désactivation du sélecteur pendant le chargement Les modèles se chargent maintenant automatiquement quand l'utilisateur ouvre le chatbox, et tous les utilisateurs authentifiés peuvent y accéder (pas seulement les admins).
This commit is contained in:
2 files changed
+13
-4
No files matched your search
@@ -14,7 +14,7 @@ const CACHE_DURATION = 60 * 60 * 1000; // 1 heure
|
|||||||
* GET /api/openrouter/models
|
* GET /api/openrouter/models
|
||||||
* Récupérer la liste des modèles disponibles depuis OpenRouter
|
* Récupérer la liste des modèles disponibles depuis OpenRouter
|
||||||
*/
|
*/
|
||||||
router.get('/models', authenticateToken, requireAdmin, async (req, res) => {
|
router.get('/models', authenticateToken, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
// Vérifier le cache
|
// Vérifier le cache
|
||||||
const now = Date.now();
|
const now = Date.now();
|
||||||
|
|||||||
+12
-3
@@ -223,7 +223,7 @@ const Index = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const loadOpenRouterModels = async () => {
|
const loadOpenRouterModels = async () => {
|
||||||
if (user?.is_admin && settings.openrouter_api_key) {
|
if (settings.openrouter_api_key) {
|
||||||
setLoadingModels(true);
|
setLoadingModels(true);
|
||||||
try {
|
try {
|
||||||
const models = await OpenRouterService.getModels();
|
const models = await OpenRouterService.getModels();
|
||||||
@@ -528,6 +528,13 @@ const Index = () => {
|
|||||||
chatEndRef.current?.scrollIntoView({ behavior: 'smooth' });
|
chatEndRef.current?.scrollIntoView({ behavior: 'smooth' });
|
||||||
}, [chatMessages]);
|
}, [chatMessages]);
|
||||||
|
|
||||||
|
// Load models when chatbox opens
|
||||||
|
useEffect(() => {
|
||||||
|
if (chatOpen && openRouterModels.length === 0) {
|
||||||
|
loadOpenRouterModels();
|
||||||
|
}
|
||||||
|
}, [chatOpen]);
|
||||||
|
|
||||||
// Set default model when models are loaded
|
// Set default model when models are loaded
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (openRouterModels.length > 0 && !selectedModel) {
|
if (openRouterModels.length > 0 && !selectedModel) {
|
||||||
@@ -2329,9 +2336,11 @@ const Index = () => {
|
|||||||
value={selectedModel}
|
value={selectedModel}
|
||||||
onChange={(e) => setSelectedModel(e.target.value)}
|
onChange={(e) => setSelectedModel(e.target.value)}
|
||||||
className="w-full text-xs px-2 py-1.5 border border-input rounded-md bg-background"
|
className="w-full text-xs px-2 py-1.5 border border-input rounded-md bg-background"
|
||||||
disabled={chatLoading}
|
disabled={chatLoading || loadingModels}
|
||||||
>
|
>
|
||||||
{openRouterModels.length === 0 ? (
|
{loadingModels ? (
|
||||||
|
<option value="">Chargement des modèles...</option>
|
||||||
|
) : openRouterModels.length === 0 ? (
|
||||||
<option value="">Aucun modèle disponible</option>
|
<option value="">Aucun modèle disponible</option>
|
||||||
) : (
|
) : (
|
||||||
openRouterModels.map(model => (
|
openRouterModels.map(model => (
|
||||||
|
|||||||
Reference in new issue
Block a user