diff --git a/umap/static/umap/js/modules/sync/updaters.js b/umap/static/umap/js/modules/sync/updaters.js index 5ab97375..f694d23e 100644 --- a/umap/static/umap/js/modules/sync/updaters.js +++ b/umap/static/umap/js/modules/sync/updaters.js @@ -63,6 +63,7 @@ export class DataLayerUpdater extends BaseUpdater { update({ key, metadata, value }) { const datalayer = this.getDataLayerFromID(metadata.id) if (fieldInSchema(key)) { + datalayer._loaded = true this.updateObjectValue(datalayer, key, value) } else { console.debug( @@ -92,7 +93,7 @@ export class FeatureUpdater extends BaseUpdater { upsert({ metadata, value }) { const { id, layerId } = metadata const datalayer = this.getDataLayerFromID(layerId) - const feature = this.getFeatureFromMetadata(metadata, value) + const feature = this.getFeatureFromMetadata(metadata) if (feature) { feature.geometry = value.geometry @@ -109,7 +110,7 @@ export class FeatureUpdater extends BaseUpdater { return } if (key === 'geometry') { - const feature = this.getFeatureFromMetadata(metadata, value) + const feature = this.getFeatureFromMetadata(metadata) feature.geometry = value } else { this.updateObjectValue(feature, key, value) diff --git a/umap/tests/integration/test_websocket_sync.py b/umap/tests/integration/test_websocket_sync.py index 3c42a6e1..dc1ae21a 100644 --- a/umap/tests/integration/test_websocket_sync.py +++ b/umap/tests/integration/test_websocket_sync.py @@ -421,9 +421,11 @@ def test_should_sync_datalayers(new_page, asgi_live_server, tilelayer): 1 ).click() - # Now peerA saves the layer 2 to the server - with peerA.expect_response(re.compile(".*/datalayer/update/.*")): - peerA.get_by_role("button", name="Save").click() + # Peer A should not be in dirty state + expect(peerA.locator("body")).not_to_have_class(re.compile(".*umap-is-dirty.*")) + + # Peer A should only have two markers + expect(peerA.locator(".leaflet-marker-icon")).to_have_count(2) assert DataLayer.objects.count() == 2