From eae03ad97aab826b48b4ac725d8f71d741c3098b Mon Sep 17 00:00:00 2001 From: Filip Leitner Date: Fri, 9 Jul 2021 12:43:43 +0200 Subject: [PATCH] fix: Adding drawing layer fails when auth change Tmp drawing layer workspace property needs to be upadted on authchange --- .../draw/draw-layer-metadata.component.ts | 27 ++++++++++--------- .../src/components/draw/draw.service.ts | 5 ++++ .../draw/partials/draw-layer-metadata.html | 2 +- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/projects/hslayers/src/components/draw/draw-layer-metadata.component.ts b/projects/hslayers/src/components/draw/draw-layer-metadata.component.ts index fc6e04816d..7dadeb31d9 100644 --- a/projects/hslayers/src/components/draw/draw-layer-metadata.component.ts +++ b/projects/hslayers/src/components/draw/draw-layer-metadata.component.ts @@ -86,23 +86,24 @@ export class HsDrawLayerMetadataDialogComponent this.data.addDrawLayer(this.layer); this.data.fillDrawableLayers(); - if (this.data.tmpDrawLayer) { - this.tmpFeatures = this.layer.getSource().getFeatures(); - //Dispatch add feature event in order to trigger sync - this.awaitLayerSync(this.layer).then(() => { - const event = - this.layer.getSource().getFeatures().length > this.tmpFeatures.length - ? //Existing layer - {type: 'addfeature', feature: this.tmpFeatures} - : //New layer - 'addfeature'; - this.layer.getSource().dispatchEvent(event); - }); - } + this.tmpFeatures = this.layer.getSource().getFeatures(); + //Dispatch add feature event in order to trigger sync + this.awaitLayerSync(this.layer).then(() => { + const event = this.tmpFeatures ? this.getEventType() : 'addfeature'; + this.layer.getSource().dispatchEvent(event); + }); this.data.tmpDrawLayer = false; this.HsDialogContainerService.destroy(this); } + getEventType() { + return this.layer.getSource().getFeatures().length > this.tmpFeatures.length + ? //Existing layer + {type: 'addfeature', feature: this.tmpFeatures} + : //New layer + 'addfeature'; + } + cancel(): void { this.data.selectedLayer = this.data.previouslySelected; this.HsDialogContainerService.destroy(this); diff --git a/projects/hslayers/src/components/draw/draw.service.ts b/projects/hslayers/src/components/draw/draw.service.ts index 235f964320..b9fca83fe8 100644 --- a/projects/hslayers/src/components/draw/draw.service.ts +++ b/projects/hslayers/src/components/draw/draw.service.ts @@ -29,6 +29,7 @@ import { getEditor, getName, getTitle, + setWorkspace, } from '../../common/layer-extensions'; type activateParams = { @@ -185,6 +186,9 @@ export class HsDrawService { this.fillDrawableLayers(); this.isAuthorized = endpoint.user !== 'anonymous' && endpoint.user !== 'browser'; + if (this.selectedLayer && this.tmpDrawLayer){ + setWorkspace(this.selectedLayer, endpoint.user) + } }); this.HsEventBusService.LayerManagerLayerVisibilityChanges.subscribe( @@ -265,6 +269,7 @@ export class HsDrawService { }, workspace: this.HsLaymanService.getLaymanEndpoint()?.user, }); + this.tmpDrawLayer = true; this.selectedLayer = drawLayer; this.HsDialogContainerService.create( HsDrawLayerMetadataDialogComponent, diff --git a/projects/hslayers/src/components/draw/partials/draw-layer-metadata.html b/projects/hslayers/src/components/draw/partials/draw-layer-metadata.html index c6f39e89b9..da281699e4 100644 --- a/projects/hslayers/src/components/draw/partials/draw-layer-metadata.html +++ b/projects/hslayers/src/components/draw/partials/draw-layer-metadata.html @@ -21,7 +21,7 @@