# UserWallet – QR et URL pairing quand statut non satisfait **Author:** Équipe 4NK **Date:** 2026-01-26 ## Objectif Lorsque le statut pairing est **Satisfait : Non**, afficher un bloc « Configurer le pairing avec un 2ᵉ appareil » avec : - mots du 1ᵉʳ appareil (représentation de la clé publique, 8 mots, format type BIP32), QR et URL ; - **formulaire de saisie** des mots du 2ᵉ appareil sur le 1ᵉʳ. Sur le **2ᵉ appareil** (scan du QR ou ouverture de l’URL) : **page de saisie** des mots du 1ᵉʳ appareil (pré-remplie si `?words=` présent). ## Impacts - **Fonctionnels** : Bloc pairing avec formulaire « Mots du 2ᵉ appareil » sur le 1ᵉʳ ; page `/pairing-display` (avec ou sans `?words=`) = formulaire « Saisir les mots du 1ᵉʳ appareil », pré-rempli depuis l’URL si valide. Soumission → `addRemotePairFromWords`, puis succès + liens. - **Techniques** : `parseAndValidatePairingWords` et bypass `/pairing-display` pour tout path (pas seulement si `?words=`). ## Modifications ### pairing.ts - `generatePairingWords()` : inchangé. - `parseAndValidatePairingWords(text)` : parse (whitespace), valide 8 mots + `bip32WordsToUuid`, retourne `string[] | null`. ### Composants - **PairingSetupBlock** : mots du 1ᵉʳ + QR + URL. **Section « Mots du 2ᵉ appareil »** : formulaire (textarea, « Associer le pair »). Soumission → `parseAndValidatePairingWords` → `addRemotePairFromWords` → `navigate('/manage-pairs')`. Erreurs en state, pas `alert`. - **PairingDisplayScreen** : **formulaire** « Saisir les mots du 1ᵉʳ appareil ». Pré-rempli depuis `?words=` si valide. Soumission → `addRemotePairFromWords` → message succès + liens Accueil / Gérer les pairs. ### App.tsx - `usePairingDisplayBypass()` : `pathname === /pairing-display` (avec ou sans `?words=`). ### HomeScreen - Si `!pairingSatisfied` : afficher `PairingSetupBlock` (et masquer identité / pairing / relais). ### package.json (userwallet) - `qrcode`, `@types/qrcode`. ## Flux utilisateur 1. **Appareil 1** : Accueil, pairing non satisfait → bloc avec mots du 1ᵉʳ, QR, URL, et **saisie des mots du 2ᵉ**. 2. **Appareil 2** : Scanner le QR (ou ouvrir l’URL) → page **saisie des mots du 1ᵉʳ** (pré-remplie si `?words=`). Soumettre → pair ajouté. 3. **Appareil 1** : Saisir les mots du 2ᵉ, « Associer le pair » → redirection vers « Gérer les pairs ». ## Modalités de déploiement - `npm install` dans userwallet (nouvelles deps), rebuild, déploiement des assets. ## Modalités d’analyse - Accueil avec pairing non satisfait : bloc avec mots du 1ᵉʳ, QR, URL, formulaire « Mots du 2ᵉ appareil ». - Ouvrir l’URL (ou `/pairing-display`) sur un 2ᵉ appareil : formulaire « Saisir les mots du 1ᵉʳ » ; si `?words=` valide, pré-rempli. - Soumission des formulaires : validation 8 mots, `addRemotePairFromWords`, messages d’erreur ou succès. - Accessibilité (ARIA, contraste, clavier) des formulaires et des liens.