- Moved CONTEXT_MENU_INDEX.md and CONTEXT_MENU_VERIFICATION.md into docs/ directory for better organization - Consolidated all context menu documentation files in one location for easier maintenance - Documentation remains complete with 1000+ lines covering implementation, integration, and verification The change improves documentation structure by moving context menu related files into a dedicated docs folder, making it easier for developers to find an
4.4 KiB
4.4 KiB
🔧 Fix: URL Deep-Linking Priority Logic
🐛 Problème Identifié
L'URL http://localhost:3000/?note=HOME.md&quick=Tâches ne fonctionnait pas correctement car il y avait un conflit entre les paramètres multiples. Les effets appliquaient tous les filtres simultanément au lieu de respecter une priorité.
Cause Racine
UrlStateService.parseUrlParams()parsait tous les paramètres sans logique de priorité- Pour
?note=HOME.md&quick=Tâches, les effets appliquaient à la fois la note ET le filtre quick link - Cela causait un comportement imprévisible et des conflits
✅ Solution Appliquée
Implémentation de la Logique de Priorité
Dans UrlStateService.parseUrlParams():
private parseUrlParams(params: any): UrlState {
// Priorité: note > tag > folder > quick
// Si note est présent, ignorer les autres filtres
if (params['note']) {
return {
note: decodeURIComponent(params['note']),
tag: undefined,
folder: undefined,
quick: undefined,
search: params['search'] ? decodeURIComponent(params['search']) : undefined
};
}
// Si tag est présent, ignorer folder et quick
if (params['tag']) {
return {
note: undefined,
tag: decodeURIComponent(params['tag']),
folder: undefined,
quick: undefined,
search: params['search'] ? decodeURIComponent(params['search']) : undefined
};
}
// Si folder est présent, ignorer quick
if (params['folder']) {
return {
note: undefined,
tag: undefined,
folder: decodeURIComponent(params['folder']),
quick: undefined,
search: params['search'] ? decodeURIComponent(params['search']) : undefined
};
}
// Sinon, quick peut être présent
return {
note: undefined,
tag: undefined,
folder: undefined,
quick: params['quick'] ? decodeURIComponent(params['quick']) : undefined,
search: params['search'] ? decodeURIComponent(params['search']) : undefined
};
}
Priorité Implémentée
- note (priorité maximale) - ouvre directement la note, ignore tous les autres filtres
- tag - applique le filtre tag, ignore folder et quick
- folder - applique le filtre dossier, ignore quick
- quick - applique le filtre quick link (seulement si aucun des autres n'est présent)
- search - s'applique toujours en complément
📊 Résultat
Avant la Correction
?note=HOME.md&quick=Tâches→ conflit entre note et quick link- Comportement imprévisible, note peut ne pas s'ouvrir correctement
Après la Correction
?note=HOME.md&quick=Tâches→ ouvre seulement la note HOME.md- Le paramètre
quick=Tâchesest ignoré (priorité respectée) - Comportement prévisible et cohérent
🧪 Tests de Validation
URLs à Tester
Test 1: Note seule
URL: ?note=HOME.md
Attendu: Note HOME.md s'ouvre
Test 2: Note + Quick (conflit résolu)
URL: ?note=HOME.md&quick=Tâches
Attendu: Note HOME.md s'ouvre, quick ignoré ✅
Test 3: Tag seul
URL: ?tag=home
Attendu: Filtre tag appliqué
Test 4: Tag + Folder (conflit résolu)
URL: ?tag=home&folder=Allo-3
Attendu: Filtre tag appliqué, folder ignoré ✅
Test 5: Folder seul
URL: ?folder=Allo-3
Attendu: Filtre folder appliqué
Test 6: Folder + Quick (conflit résolu)
URL: ?folder=Allo-3&quick=Favoris
Attendu: Filtre folder appliqué, quick ignoré ✅
Test 7: Quick seul
URL: ?quick=Tâches
Attendu: Filtre quick appliqué
Test 8: Combinaisons avec Search
URL: ?note=HOME.md&search=test
Attendu: Note HOME.md s'ouvre + recherche "test" appliquée ✅
🔧 Fichiers Modifiés
- ✅
src/app/services/url-state.service.ts- Ajout logique de priorité dansparseUrlParams()
📝 Notes Techniques
Pourquoi cette approche?
- Simple: Pas besoin de modifier les effects existants
- Robuste: Logique centralisée dans le parsing
- Prévisible: Priorité claire et documentée
- Compatible: Fonctionne avec tous les effects existants
Impact
- Aucun breaking change
- Amélioration de la cohérence des URLs
- Résolution des conflits entre paramètres multiples
- Meilleure expérience utilisateur pour le deep-linking
🎯 Status
Status: ✅ FIXÉ ET COMPILÉ Impact: Amélioration de la logique de priorité pour les URLs Test requis: Validation des combinaisons de paramètres Compatibilité: 100% backward compatible