# UserWallet – Notifications relais étendues **Author:** Équipe 4NK **Date:** 2026-01-28 ## Objectif Étendre le système de notifications relais pour réagir à d'autres événements relais (push, etc.) et détecter différents types d'objets (signatures, contrats, membres, pairs, actions, champs). ## Motivations - Réagir aux événements push si extension (ex. WebSocket) - Détecter automatiquement le type d'objet (signatures, contrats, membres, pairs, actions, champs) - Optimiser le fetch selon le type d'objet détecté - Mettre à jour le graphe en conséquence ## Modifications ### `src/services/relayNotificationService.ts` - Ajout du type `RelayObjectType` pour identifier les types d'objets - Extension de `RelayHashEvent` avec `objectType` et `source` (polling/push/manual) - Ajout de `detectObjectType()` pour détecter le type depuis le message déchiffré - Ajout de `processHashByType()` pour optimiser le traitement selon le type - Extension de `triggerHashProcessing()` pour supporter le type d'objet - Amélioration de `startPolling()` pour inclure le type dans les événements ### `src/hooks/useRelayNotifications.ts` - Mise à jour du listener pour utiliser `processHashByType()` si le type est connu - Logging amélioré avec le type d'objet et la source ## Utilisation Le système détecte automatiquement le type d'objet lors du traitement d'un hash. Les notifications peuvent maintenant spécifier le type : ```typescript // Traitement manuel avec type spécifié await notificationService.triggerHashProcessing( hash, relay, options, 'contrat' // type d'objet ); // Traitement optimisé par type await notificationService.processHashByType( hash, 'signature', // type d'objet options ); ``` ## Évolutions futures - Support WebSocket pour les événements push en temps réel - Détection automatique du type depuis les métadonnées publiques (datajson) - Optimisation du fetch selon le type (ex. pas besoin de clés pour les signatures) ## Références - `features/userwallet-notifications-relais.md` - `features/userwallet-contrat-login-reste-a-faire.md` (§ 3.2)