From c771c1b1f255fcdf03f86b7394f4a77b670562a0 Mon Sep 17 00:00:00 2001
From: Alicia de Dios Fuente <Alicia.DeDiosFuente@unige.ch>
Date: Mon, 27 Apr 2020 16:55:41 +0200
Subject: [PATCH] fix: delete deposit folder only when it is already
 in_progress status

---
 .../containers/deposit-file/deposit-file.container.html     | 1 +
 .../containers/deposit-file/deposit-file.container.ts       | 4 ++++
 .../deposit-folder-tree.presentational.html                 | 4 ++--
 .../deposit-folder-tree.presentational.ts                   | 3 +++
 .../deposit/stores/data-file/deposit-data-file.state.ts     | 6 +++---
 5 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/app/features/deposit/components/containers/deposit-file/deposit-file.container.html b/src/app/features/deposit/components/containers/deposit-file/deposit-file.container.html
index e6685a090..d64b09f27 100644
--- a/src/app/features/deposit/components/containers/deposit-file/deposit-file.container.html
+++ b/src/app/features/deposit/components/containers/deposit-file/deposit-file.container.html
@@ -67,6 +67,7 @@
                                 (moveChange)="moveDataFile($event)"
                                 (downloadFolder)="downloadFolder($event)"
                                 (deleteFolder)="deleteFolder($event)"
+                                [canDelete]="(currentObs | async)?.status ===  depositEnum.INPROGRESS"
       ></dlcm-deposit-folder-tree>
     </ng-container>
   </div>
diff --git a/src/app/features/deposit/components/containers/deposit-file/deposit-file.container.ts b/src/app/features/deposit/components/containers/deposit-file/deposit-file.container.ts
index c0c89f08c..7e9e88835 100644
--- a/src/app/features/deposit/components/containers/deposit-file/deposit-file.container.ts
+++ b/src/app/features/deposit/components/containers/deposit-file/deposit-file.container.ts
@@ -490,4 +490,8 @@ export class DepositFileContainer extends SharedAbstractDetailEditRoutable<Depos
       }),
     ));
   }
+
+  get depositEnum(): typeof Deposit.StatusEnum {
+    return Deposit.StatusEnum;
+  }
 }
diff --git a/src/app/features/deposit/components/presentationals/deposit-folder-tree/deposit-folder-tree.presentational.html b/src/app/features/deposit/components/presentationals/deposit-folder-tree/deposit-folder-tree.presentational.html
index 943adb6af..676beff04 100644
--- a/src/app/features/deposit/components/presentationals/deposit-folder-tree/deposit-folder-tree.presentational.html
+++ b/src/app/features/deposit/components/presentationals/deposit-folder-tree/deposit-folder-tree.presentational.html
@@ -48,7 +48,7 @@
       <mat-icon>file_download</mat-icon>
     </button>
 
-    <button *ngIf="currentFolder === node.fullFolderName"
+    <button *ngIf="currentFolder === node.fullFolderName && canDelete"
             mat-icon-button
             mat-button
             (click)="deleteFolder(node)"
@@ -95,7 +95,7 @@
       <mat-icon>file_download</mat-icon>
     </button>
 
-    <button *ngIf="currentFolder === node.fullFolderName"
+    <button *ngIf="currentFolder === node.fullFolderName && canDelete"
             mat-icon-button
             mat-button
             (click)="deleteFolder(node)"
diff --git a/src/app/features/deposit/components/presentationals/deposit-folder-tree/deposit-folder-tree.presentational.ts b/src/app/features/deposit/components/presentationals/deposit-folder-tree/deposit-folder-tree.presentational.ts
index 1b9fc4136..bbbd1a262 100644
--- a/src/app/features/deposit/components/presentationals/deposit-folder-tree/deposit-folder-tree.presentational.ts
+++ b/src/app/features/deposit/components/presentationals/deposit-folder-tree/deposit-folder-tree.presentational.ts
@@ -89,6 +89,9 @@ export class DepositFolderTreePresentational extends SharedAbstractPresentationa
   @Input()
   expandFirstLevel: boolean;
 
+  @Input()
+  canDelete: boolean = false;
+
   isReady: boolean = false;
 
   private _foldersWithIntermediateFolders: string[];
diff --git a/src/app/features/deposit/stores/data-file/deposit-data-file.state.ts b/src/app/features/deposit/stores/data-file/deposit-data-file.state.ts
index 03fe341b6..ef9f5bcf9 100644
--- a/src/app/features/deposit/stores/data-file/deposit-data-file.state.ts
+++ b/src/app/features/deposit/stores/data-file/deposit-data-file.state.ts
@@ -1,4 +1,4 @@
-import {HttpClient} from "@angular/common/http";
+import {HttpClient, HttpParams} from "@angular/common/http";
 import {
   Inject,
   Injectable,
@@ -569,12 +569,12 @@ export class DepositDataFileState extends CompositionState<DepositDataFileStateM
   }
 
   @Action(DepositDataFileAction.DeleteFolder)
-  downloadFolder(ctx: StateContext<DepositStateModel>, action: DepositDataFileAction.DeleteFolder): Observable<string> {
+  deleteFolder(ctx: StateContext<DepositStateModel>, action: DepositDataFileAction.DeleteFolder): Observable<string> {
     ctx.patchState({
       isLoadingCounter: ctx.getState().isLoadingCounter + 1,
     });
 
-    return this.apiService.post<string>(`${this._urlResource}/${action.parentId}/${this._resourceName}/${ApiActionEnum.DELETE_FOLDER}`, action.fullFolderName)
+    return this.apiService.post<string>(`${this._urlResource}/${action.parentId}/${this._resourceName}/${ApiActionEnum.DELETE_FOLDER}?${this.KEY_RELATIVE_LOCATION}=${action.fullFolderName}`)
       .pipe(
         tap(result => {
           ctx.dispatch(new DepositDataFileAction.DeleteFolderSuccess(action));
-- 
GitLab