# Configuration des endpoints NIP-95 ## Date 2025-01-27 ## Objectif Permettre aux utilisateurs de configurer les endpoints NIP-95 pour l'upload de médias via une interface utilisateur, avec la possibilité d'ajouter, modifier, activer/désactiver et supprimer des endpoints. ## Motivations - Résoudre les problèmes de DNS/connectivité en permettant d'utiliser plusieurs endpoints - Donner aux utilisateurs le contrôle sur les endpoints utilisés - Faciliter l'ajout de nouveaux endpoints sans modifier le code - Permettre l'activation/désactivation d'endpoints selon les besoins ## Impacts - **Utilisateurs** : Peuvent configurer leurs propres endpoints NIP-95 via l'interface - **Développeurs** : Plus besoin de modifier le code pour ajouter des endpoints - **Fiabilité** : Possibilité d'avoir plusieurs endpoints de secours activés ## Modifications ### Fichiers créés - **`pages/settings.tsx`** : Page de configuration des paramètres de l'application - **`components/Nip95ConfigManager.tsx`** : Composant de gestion des endpoints NIP-95 avec interface complète ### Fichiers modifiés - **`lib/configStorageTypes.ts`** : Ajout d'un endpoint supplémentaire (`nostrimg.com`) dans `DEFAULT_NIP95_APIS` - **`components/PageHeader.tsx`** : Ajout d'un lien vers la page Settings dans la navigation ### Fonctionnalités implémentées #### Interface de gestion des endpoints - **Affichage de la liste** : Tous les endpoints configurés sont affichés avec leur statut (activé/désactivé), priorité et URL - **Ajout d'endpoints** : Formulaire pour ajouter de nouveaux endpoints avec validation d'URL - **Modification d'URL** : Clic sur l'URL pour la modifier directement - **Activation/Désactivation** : Checkbox pour activer ou désactiver chaque endpoint - **Gestion de la priorité** : Champ numérique pour définir l'ordre de tentative (plus bas = priorité plus haute) - **Suppression** : Bouton pour supprimer un endpoint avec confirmation #### Endpoints par défaut Les endpoints suivants sont maintenant disponibles par défaut : 1. `https://void.cat/upload` (activé, priorité 1) 2. `https://nostr.build/api/v2/upload` (désactivé, priorité 2) 3. `https://picstr.build/api/v1/upload` (désactivé, priorité 3) 4. `https://nostrcheck.me/api/v1/media` (désactivé, priorité 4) 5. `https://nostrimg.com/api/upload` (désactivé, priorité 5) - **Nouveau** ## Modalités de déploiement 1. Les modifications sont dans le code source 2. Rebuild de l'application : `npm run build` 3. Redémarrage du service Next.js 4. Aucune migration de données nécessaire (les endpoints par défaut sont créés automatiquement) ## Modalités d'analyse Pour vérifier que la fonctionnalité fonctionne : 1. **Accéder à la page Settings** : - Naviguer vers `/settings` depuis le menu de navigation - Vérifier que la liste des endpoints s'affiche 2. **Tester l'ajout d'un endpoint** : - Cliquer sur "+ Add Endpoint" - Entrer une URL valide (ex: `https://example.com/upload`) - Vérifier que l'endpoint apparaît dans la liste 3. **Tester l'activation/désactivation** : - Cocher/décocher la checkbox d'un endpoint - Vérifier que le statut change - Tester un upload pour vérifier que seuls les endpoints activés sont utilisés 4. **Tester la modification de priorité** : - Modifier la priorité d'un endpoint - Vérifier que l'ordre dans la liste change - Tester un upload pour vérifier l'ordre de tentative 5. **Tester la modification d'URL** : - Cliquer sur une URL pour la modifier - Entrer une nouvelle URL et appuyer sur Enter - Vérifier que l'URL est mise à jour 6. **Tester la suppression** : - Cliquer sur "Remove" d'un endpoint - Confirmer la suppression - Vérifier que l'endpoint disparaît de la liste ## Notes - Les endpoints sont stockés dans IndexedDB (côté client) - Les modifications sont persistantes et survivent aux rechargements de page - Les endpoints sont essayés dans l'ordre de priorité (plus bas = priorité plus haute) - Seuls les endpoints activés sont utilisés pour les uploads - Si tous les endpoints activés échouent, une erreur est retournée à l'utilisateur - La validation d'URL vérifie le format mais pas la disponibilité du service