93 lines
4.2 KiB
Markdown
93 lines
4.2 KiB
Markdown
# 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
|