**Motivations:** - Implement BIP39 mnemonic import for identity creation - Add password-based key protection for enhanced security - Improve pairing workflow with QR code and URL display - Migrate hash cache from LocalStorage to IndexedDB for better scalability - Update signet-dashboard and mempool components **Root causes:** - N/A (feature implementations) **Correctifs:** - N/A (no bug fixes in this commit) **Evolutions:** - BIP39 mnemonic import: Support for 12/24 word English mnemonics with BIP32 derivation path m/44'/0'/0'/0/0 - Key protection: Password-based encryption of private keys at rest with unlock/lock functionality - Pairing workflow: QR code and URL display for device pairing, form-based word exchange between devices - IndexedDB migration: Hash cache moved from LocalStorage to IndexedDB to avoid size limitations - Global action bar: URL parameter support for navigation - Pairing connection: Enhanced pairing status management **Pages affectées:** - userwallet/src/utils/identity.ts - userwallet/src/utils/keyProtection.ts - userwallet/src/utils/sessionUnlockedKey.ts - userwallet/src/utils/indexedDbStorage.ts - userwallet/src/utils/cache.ts - userwallet/src/utils/pairing.ts - userwallet/src/components/UnlockScreen.tsx - userwallet/src/components/PairingDisplayScreen.tsx - userwallet/src/components/PairingSetupBlock.tsx - userwallet/src/components/GlobalActionBar.tsx - userwallet/src/components/HomeScreen.tsx - userwallet/src/components/ImportIdentityScreen.tsx - userwallet/src/components/DataExportImportScreen.tsx - userwallet/src/hooks/useIdentity.ts - userwallet/src/hooks/usePairingConnected.ts - userwallet/src/services/syncService.ts - userwallet/src/services/pairingConfirm.ts - userwallet/src/App.tsx - userwallet/package.json - userwallet/docs/specs.md - userwallet/docs/storage.md - userwallet/docs/synthese.md - signet-dashboard/public/*.html - signet-dashboard/public/app.js - signet-dashboard/public/styles.css - mempool (submodule updates) - hash_list.txt, hash_list_cache.txt, utxo_list.txt, utxo_list_cache.txt, fees_list.txt - features/*.md (documentation files)
53 lines
2.6 KiB
Markdown
53 lines
2.6 KiB
Markdown
# UserWallet – Paramètres URL pour contrôler l'affichage des actions globales
|
||
|
||
**Author:** Équipe 4NK
|
||
**Date:** 2026-01-26
|
||
|
||
## Objectif
|
||
|
||
Permettre de contrôler l'affichage des boutons "Supprimer" et "Afficher les mots de ma clé publique" via des paramètres d'URL pour adapter l'interface selon le contexte d'utilisation (usage normal vs iframe).
|
||
|
||
## Impacts
|
||
|
||
- **Fonctionnels** : Les boutons "Supprimer" et "Afficher les mots de ma clé publique" sont masqués par défaut dans un contexte iframe, mais peuvent être affichés via les paramètres d'URL `?showDelete=true` et `?showWords=true`. En usage normal (hors iframe), les boutons sont affichés par défaut.
|
||
- **Techniques** : Détection automatique du contexte iframe et lecture des paramètres d'URL pour forcer l'affichage même en iframe.
|
||
|
||
## Modifications
|
||
|
||
### GlobalActionBar.tsx
|
||
|
||
- Import de `useSearchParams` depuis `react-router-dom`
|
||
- Détection du contexte iframe via `window.self !== window.top`
|
||
- Lecture des paramètres d'URL `showDelete` et `showWords`
|
||
- Logique d'affichage conditionnelle :
|
||
- Par défaut : affichage des boutons (usage normal)
|
||
- En iframe : masquage par défaut
|
||
- Paramètres d'URL : forcer l'affichage même en iframe avec `?showDelete=true` et/ou `?showWords=true`
|
||
|
||
## Flux utilisateur
|
||
|
||
1. **Usage normal (hors iframe)** : Les boutons "Supprimer" et "Afficher les mots de ma clé publique" sont affichés par défaut.
|
||
2. **Usage iframe (par défaut)** : Les boutons sont masqués pour une interface épurée.
|
||
3. **Usage iframe avec paramètres** : Ajouter `?showDelete=true` et/ou `?showWords=true` dans l'URL pour forcer l'affichage des boutons correspondants.
|
||
|
||
## Exemples d'utilisation
|
||
|
||
- **Iframe sans boutons** : `https://test.userwallet.4nkweb.com/` (boutons masqués)
|
||
- **Iframe avec bouton "Supprimer"** : `https://test.userwallet.4nkweb.com/?showDelete=true`
|
||
- **Iframe avec bouton "Mots"** : `https://test.userwallet.4nkweb.com/?showWords=true`
|
||
- **Iframe avec les deux boutons** : `https://test.userwallet.4nkweb.com/?showDelete=true&showWords=true`
|
||
|
||
## Modalités de déploiement
|
||
|
||
- Rebuild de l'application userwallet
|
||
- Déploiement des assets sur les environnements concernés
|
||
|
||
## Modalités d'analyse
|
||
|
||
- Vérifier l'affichage par défaut des boutons en usage normal (hors iframe)
|
||
- Vérifier le masquage des boutons en iframe sans paramètres
|
||
- Vérifier l'affichage forcé des boutons en iframe avec les paramètres d'URL appropriés
|
||
- Tester les différentes combinaisons de paramètres (`showDelete`, `showWords`)
|
||
- Vérifier que la détection d'iframe fonctionne correctement
|
||
- Accessibilité (ARIA, contraste, clavier) maintenue pour tous les cas d'usage
|