9
103
Fork
You've already forked web
30

fix: fermer le menu fonds de carte en cliquant un POI #1515

Closed
hgcl wants to merge 3 commits from fix-map-style-modal-not-closing into master
pull from: fix-map-style-modal-not-closing
merge into: cartes:master
cartes:master
cartes:abostats
cartes:SynchroM-master
cartes:gps
cartes:embeddings
cartes:lysios-patch-5
cartes:lysios-patch-4
cartes:lysios-patch-3
cartes:lysios-patch-2
cartes:lysios-patch-1
cartes:abo-serveur2
cartes:clim
cartes:zone-en-favori
cartes:categories_toujours_visibles
cartes:rechercher_ici_avant_resultats
cartes:test-2365
cartes:panoramax-contribution
cartes:add-categories-validations
cartes:gel-bug-prod
cartes:osm-note-2
cartes:broken
cartes:wikidata_booking
cartes:fuse7.3
cartes:lysios-patrimoine-3
cartes:gps2
cartes:atproto-fix-2
cartes:styles-secondaires-mais-maison
cartes:atproto-scopes
cartes:itineraire-printemps-2026
cartes:modal-sheet-5.6
cartes:nlnet-cost-climate-perf
cartes:pb-icones-religieux
cartes:couvoiture
cartes:etiennejr-patch-2
cartes:meteo-fainéante
cartes:logo-static-url
cartes:poc-page-vitrine
cartes:remove-compass
cartes:test-reproduce-1795
cartes:display-cycleway-lanes-2
cartes:poc-image
cartes:add-media-condition
cartes:mapterhorn
cartes:test-indoor-equal
cartes:outdoors-VS-indoorEqual
cartes:hiking-colors
cartes:fix-blog-typing
cartes:poc-next-international
cartes:i18n
cartes:hide-odd-zoom-levels
cartes:filter_categories
cartes:resume_wikipedia
cartes:deplacement_bouttons
cartes:fix-1095
cartes:mobile_permettre_selection
cartes:position-carte-initiale
cartes:dégradé-icônes
cartes:better_wikipedia
cartes:affichage_donnees_wikidata
cartes:mobile-permettre-selection
cartes:avis-details
cartes:perf-seo
cartes:modal-sheet-5
cartes:plans-novembre
cartes:display-cycleway-lanes
cartes:fix-1227
cartes:fix-1234
cartes:etiennejr-patch-1
cartes:update-1240
cartes:fix-1236
cartes:fix-1131
cartes:photon-search-street
cartes:fix-1221
cartes:article-avis
cartes:net-haut-zoom
cartes:baies-moins-visibles
cartes:belles-fiches-lieu
cartes:fix-1157
cartes:bug-page-vie-privée
cartes:use-watername
cartes:fix-1176
cartes:carte-du-onde
cartes:fix-1166
cartes:page-news
cartes:tchou
cartes:add-icon-alias
cartes:vitesse
cartes:photon-opensearch
cartes:private-in-italic
cartes:bâtiments-3D
cartes:merge-categories
cartes:handle-private-highway
cartes:improve-findcategory
cartes:injection-pmtiles
cartes:fix-1128
cartes:check-icons
cartes:update-readme
cartes:category-rugby
cartes:bug-position-carte-vs-lieu
cartes:limites-vitesse
cartes:improve-find-category-from-tags-v2
cartes:integrer
cartes:document-osmfeature
cartes:translate-document
cartes:velo-fin-aout-25
cartes:velo-ete-2025
cartes:moins-de-maptiler
cartes:planet-pmtiles-tilemaker
cartes:fix-1048
cartes:panoramax-leger
cartes:plume
cartes:horaires-i18n
cartes:planet
cartes:maj-deps-juillet-2025
cartes:improve-find-category-from-tags
cartes:bug-encart
cartes:interactions-encart-mobile
cartes:clic-on-station
cartes:fix-1028
cartes:fix-1014
cartes:edit
cartes:add-big-rivers
cartes:add-shortbread-tiles
cartes:handle-deleted-osm-elements-v2
cartes:codeberg
cartes:improve-useEffect
cartes:immoloc
cartes:update-dashboard
cartes:analyze
cartes:terradraw
cartes:sombre2
cartes:calendar
cartes:poi-sprites-using-svg
cartes:style-sombre
cartes:sprites
cartes:annuaire
cartes:motis-gtfs-attributes
cartes:next-styled-components
cartes:dev
cartes:cool2
cartes:cool
cartes:panoramax-angle
cartes:env-static-urls
cartes:borders-only
cartes:panoramax2
cartes:intelligence
cartes:debug-iles
cartes:nouveau-serveur
cartes:france-protomaps
cartes:turbo
cartes:fouss/cartes-#338
cartes:blog2
cartes:legislatives
cartes:presentation
cartes:pas-de-geoloc-si-hash-different
cartes:protomaps
cartes:vaul
cartes:carte-trains
cartes:citiz
cartes:maj-paquets
cartes:icones
cartes:ui2
cartes:bblog
cartes:voyagevoyage
cartes:test-image-origine
cartes:bugimagefin
cartes:searchParams
cartes:voyage
cartes:avion
cartes:perf
cartes:studio
cartes:piscine
cartes:journée
cartes:année
cartes:journée-transition
cartes:score-dès-acceuil
cartes:fix-space-problem
cartes:rebase-5août
cartes:correspondance
cartes:règles-séparées
cartes:indeps-acre
cartes:demo
cartes:indeps
cartes:indeps-cachés
cartes:indication-temps-plein
cartes:indeps-refactor-simulations
cartes:indeps-vue-comparaison
cartes:indeps-inversion
cartes:barème-continu
cartes:indeps-démo
cartes:textes-branches-sécu
cartes:engine-enum
cartes:2019
cartes:transport
cartes:publicodes
cartes:as
cartes:infrance-nouvelle-landing
cartes:better-translation
cartes:co2
cartes:simplifATMP
cartes:controle-SMIC
cartes:webi18n
cartes:bug-avantages-en-nature
cartes:revert-352-infrance-navigation-v2
cartes:laem-patch-1
cartes:robots.txt
cartes:improve-perf
cartes:iframe-bugfix
cartes:quickfixes
cartes:lib
cartes:irsimple
cartes:hiringinfrance.com
cartes:dégradé
cartes:refstate
cartes:johan
cartes:zrr
cartes:logo-interactif
cartes:revert-216-improve-tracking
cartes:redesign2
cartes:zrr2
cartes:fixtrad
cartes:correction-salaire-brut
cartes:petit-state
cartes:alien-consolidate
cartes:translate-ui
cartes:npm
cartes:alien-brut-net
cartes:translatable
cartes:différent
cartes:ir18
cartes:fix-typo
cartes:add-tracking
cartes:fix-collect-missing
cartes:défauts-partout
cartes:fix-double-unfold-three
cartes:fix-double-unfold
cartes:versement-transport
cartes:blocker-questions
Member
Copy link

Je me suis aidée de Copilot pour trouver pourquoi la modale de fonds de carte ne s'enlevait pas lorsqu'on cliquait sur un POI (voir #1324).

Explication du fix

Dans useMapClick, on marque la prop searchParams['choix du style'] comme étant undefined:

if (styleChooserOpen)
setTimeout(() => setSearchParams({ 'choix du style': undefined }), 100)

Le problème viendrait du fait qu'on écrase cette mise-à-zéro à différents endroits plus tard. Par exemple :

Lines 196 to 203 in 2b78776
setSearchParams({
allez: buildAllezPart(
osmFeatureName || osmFeatureCategory || 'sans nom',
encodePlace(realFeatureType, id),
longitude,
latitude
)
})

Effectivement, entre deux, React n'a pas encore renouvelé le "render". Lorsqu'on applique setSearchParams({ allez: ... }), l'ancienne valeur de "choix du style" (= oui) est toujours utilisée...

Pour réparer cette ambiguïté, on peut changer la valeur initiale de searchParams à window.location.search lorsque useSetSearchParams() est appelé.

Est-ce que ce raisonnement vous semble juste aussi ?

Reproduire

J'ai testé en faisant :

  • j'ouvre le menu des fonds de cartes, voire je change de fond
    • dans l'url style=base&choix+du+style=oui apparaît
  • je clique sur un POI sur la carte
  • le menu des fonds de cartes se ferme bien
    • dans l'url style=base&choix+du+style=oui a disparu

Closes #1324

Je me suis aidée de Copilot pour trouver pourquoi la modale de fonds de carte ne s'enlevait pas lorsqu'on cliquait sur un POI (voir #1324). ## Explication du fix Dans `useMapClick`, on marque la prop `searchParams['choix du style']` comme étant `undefined`: https://codeberg.org/cartes/web/src/commit/2b78776ab8e63d755d57f0d7ff1073a2693ef011/app/effects/useMapClick.ts#L44-L45 Le problème viendrait du fait qu'on écrase cette mise-à-zéro à différents endroits plus tard. Par exemple : https://codeberg.org/cartes/web/src/commit/2b78776ab8e63d755d57f0d7ff1073a2693ef011/app/effects/useMapClick.ts#L196-L203 Effectivement, entre deux, React n'a pas encore renouvelé le "render". Lorsqu'on applique `setSearchParams({ allez: ... })`, l'ancienne valeur de "choix du style" (= oui) est toujours utilisée... Pour réparer cette ambiguïté, on peut changer la valeur initiale de `searchParams` à `window.location.search` lorsque `useSetSearchParams()` est appelé. Est-ce que ce raisonnement vous semble juste aussi ? ## Reproduire J'ai testé en faisant : - j'ouvre le menu des fonds de cartes, voire je change de fond - dans l'url `style=base&choix+du+style=oui` apparaît - je clique sur un POI sur la carte - le menu des fonds de cartes se ferme bien - dans l'url `style=base&choix+du+style=oui` a disparu Closes #1324
use window.location.search when creating new query string, as searchParams is sometimes stale

Salut,
Merci d'avoir regardé !
Ca me parait bizarre d'utiliser windows.location.search comme variable, donc je préfère que @laem regarde pour valider ou non.
(Le but est que le menu des fonds de carte se ferme quand on clique sur un POI, car sinon la fiche lieu n'apparait pas).

Salut, Merci d'avoir regardé ! Ca me parait bizarre d'utiliser `windows.location.search` comme variable, donc je préfère que @laem regarde pour valider ou non. (Le but est que le menu des fonds de carte se ferme quand on clique sur un POI, car sinon la fiche lieu n'apparait pas).
Owner
Copy link

Oui je ne suis pas sûr que ce soit un bon changement. Ça pourrait résoudre ce problème ici, mais changer d'autres comportements sur cette fonction qui est changée partout. Le useCallback écoute searchParams, donc normalement il ne devrait pas y avoir besoin d'utiliser window dans son corps, elle sera recréée avec les nouveaux SP.

Ici on a un problème de concurrence peut-être due à la closure "onClick" dans useMapClick. Je pense que le plus simple est de

Je viens de pousser une correction alternative. @hgcl dis-moi si ça te semble résoudre le problème et si la solution te va.

Oui je ne suis pas sûr que ce soit un bon changement. Ça pourrait résoudre ce problème ici, mais changer d'autres comportements sur cette fonction qui est changée partout. Le useCallback écoute searchParams, donc normalement il ne devrait pas y avoir besoin d'utiliser window dans son corps, elle sera recréée avec les nouveaux SP. Ici on a un problème de concurrence peut-être due à la closure "onClick" dans useMapClick. Je pense que le plus simple est de Je viens de pousser une correction alternative. @hgcl dis-moi si ça te semble résoudre le problème et si la solution te va.
Author
Member
Copy link

@laem ça fait complètement sens, merci d'avoir regardé ! Bonne idée aussi, de simplement sortir closeStyleChooser du tout et le réintégrer aux endroits nécessaires.

Au-delà de ça, je ne suis pas sûre de comprendre la dernière notification automatique de Codeberg (juste au-dessous). Est-ce qu'il faut rebase pour pouvoir push ?

@laem ça fait complètement sens, merci d'avoir regardé ! Bonne idée aussi, de simplement sortir `closeStyleChooser` du tout et le réintégrer aux endroits nécessaires. Au-delà de ça, je ne suis pas sûre de comprendre la dernière notification automatique de Codeberg (juste au-dessous). Est-ce qu'il faut rebase pour pouvoir push ?

oui, comme la PR a trainé, il y a eu beaucoup de modifs entre temps, il faudrait rebaser puis push force.
Mais entre temps on a aussi reformatté tous les fichiers ​😱
Mael a proposé une méthode ici pour résoudre tous les conflits
#1521 (comment)
Si c'est trop galère, ne perds pas de temps à essayer de tout corriger, et recommences dans une nouvelle branche à jour, ça sera 1010% plus simple.

oui, comme la PR a trainé, il y a eu beaucoup de modifs entre temps, il faudrait rebaser puis push force. Mais entre temps on a aussi reformatté tous les fichiers ​😱​ Mael a proposé une méthode ici pour résoudre tous les conflits https://codeberg.org/cartes/web/pulls/1521#issuecomment-10312746 Si c'est trop galère, ne perds pas de temps à essayer de tout corriger, et recommences dans une nouvelle branche à jour, ça sera 1010% plus simple.

Je ferme ici car repris dans #1555

Je ferme ici car repris dans #1555
etienneJr closed this pull request 2026年02月07日 10:26:23 +01:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No reviewers
Labels
Clear labels
🎨 Design
À propos de l'interface et de l'UX
💡 Idée
Nouvelle feature à intégrer
question
Further information is requested
🌍 OSM
À propos de l'affichage et l'édition des éléments OSM
🌱 Amélioration
Amélioration/fix de l'existant
🐞 Bug
Something isn't working
📊 SEO
📋 Catégories
À propos des catégories de recherche et de l'annuaire
📖 Wiki
📝Avis
A propos de la fonction avis et de bluesky
📢 Oyez
📷 Photos
A propos des photos (sources, affichage)
🔍Recherche
A propos de la barre de recherche et de photon
🔥 Actuel
🔧 tech
🖌 Styles
Styles de la carte
🧝i18n
🧪 R&D
🚍 Transports
🚙 Voiture
🚨Prioritaire
Ticket à traiter rapidement
🚲Vélo
Cartes
climat
Communication
demo
Cette branche doit être déployée comme une démo
dependencies
Pull requests that update a dependency file
javascript
Pull requests that update javascript code
Pas urgent
Plein-air
Tuiles
Verso
Vieux
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cartes/web!1515
Reference in a new issue
cartes/web
No description provided.
Delete branch "fix-map-style-modal-not-closing"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?