4.2 KiB
4.2 KiB
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'applicationcomponents/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) dansDEFAULT_NIP95_APIScomponents/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 :
https://void.cat/upload(activé, priorité 1)https://nostr.build/api/v2/upload(désactivé, priorité 2)https://picstr.build/api/v1/upload(désactivé, priorité 3)https://nostrcheck.me/api/v1/media(désactivé, priorité 4)https://nostrimg.com/api/upload(désactivé, priorité 5) - Nouveau
Modalités de déploiement
- Les modifications sont dans le code source
- Rebuild de l'application :
npm run build - Redémarrage du service Next.js
- 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 :
-
Accéder à la page Settings :
- Naviguer vers
/settingsdepuis le menu de navigation - Vérifier que la liste des endpoints s'affiche
- Naviguer vers
-
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
-
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
-
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
-
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
-
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