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