Skip to content

Commit db4c02c

Browse files
[DURACOM-383] use async deletion for item
1 parent addd1b0 commit db4c02c

1 file changed

Lines changed: 20 additions & 18 deletions

File tree

src/app/item-page/edit-item-page/item-delete/item-delete.component.ts

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,25 @@ import { LinkService } from '../../../core/cache/builders/link.service';
3939
import { EntityTypeDataService } from '../../../core/data/entity-type-data.service';
4040
import { ItemDataService } from '../../../core/data/item-data.service';
4141
import { ObjectUpdatesService } from '../../../core/data/object-updates/object-updates.service';
42+
import {
43+
DSPACE_OBJECT_DELETION_SCRIPT_NAME,
44+
ScriptDataService,
45+
} from '../../../core/data/processes/script-data.service';
4246
import { RelationshipDataService } from '../../../core/data/relationship-data.service';
4347
import { RemoteData } from '../../../core/data/remote-data';
4448
import { Item } from '../../../core/shared/item.model';
4549
import { Relationship } from '../../../core/shared/item-relationships/relationship.model';
4650
import { RelationshipType } from '../../../core/shared/item-relationships/relationship-type.model';
4751
import { MetadataValue } from '../../../core/shared/metadata.models';
48-
import { NoContent } from '../../../core/shared/NoContent.model';
4952
import {
5053
getFirstCompletedRemoteData,
5154
getFirstSucceededRemoteData,
5255
getRemoteDataPayload,
5356
} from '../../../core/shared/operators';
5457
import { ViewMode } from '../../../core/shared/view-mode.model';
58+
import { getProcessDetailRoute } from '../../../process-page/process-page-routing.paths';
59+
import { Process } from '../../../process-page/processes/process.model';
60+
import { ProcessParameter } from '../../../process-page/processes/process-parameter.model';
5561
import { BtnDisabledDirective } from '../../../shared/btn-disabled.directive';
5662
import {
5763
hasValue,
@@ -172,6 +178,7 @@ export class ItemDeleteComponent
172178
protected relationshipService: RelationshipDataService,
173179
protected entityTypeService: EntityTypeDataService,
174180
protected linkService: LinkService,
181+
protected scriptDataService: ScriptDataService, // AGGIUNTO
175182
) {
176183
super(
177184
route,
@@ -416,23 +423,18 @@ export class ItemDeleteComponent
416423
*/
417424
performAction(): void {
418425
this.isDeleting$.next(true);
419-
this.subs.push(this.typeDTOs$.pipe(
420-
switchMap((types: RelationshipTypeDTO[]) =>
421-
combineLatest(
422-
types.map((type: RelationshipTypeDTO) => type.isSelected$),
423-
).pipe(
424-
defaultIfEmpty([]),
425-
map((selection: boolean[]) => types.filter(
426-
(type: RelationshipTypeDTO, index: number) => selection[index],
427-
)),
428-
map((selectedDtoTypes: RelationshipTypeDTO[]) => selectedDtoTypes.map((typeDto: RelationshipTypeDTO) => typeDto.relationshipType.id)),
429-
),
430-
),
431-
switchMap((types: string[]) => this.itemDataService.delete(this.item.id, types)),
432-
getFirstCompletedRemoteData(),
433-
).subscribe((rd: RemoteData<NoContent>) => {
434-
this.notify(rd.hasSucceeded);
435-
}));
426+
const parameterValues = [ Object.assign(new ProcessParameter(), { name: '-i', value: this.item.uuid }) ];
427+
this.scriptDataService.invoke(DSPACE_OBJECT_DELETION_SCRIPT_NAME, parameterValues, [])
428+
.pipe(getFirstCompletedRemoteData())
429+
.subscribe((rd: RemoteData<Process>) => {
430+
if (rd.hasSucceeded && rd.payload) {
431+
this.notificationsService.success(this.translateService.get('item.edit.delete.success'));
432+
this.router.navigateByUrl(getProcessDetailRoute(rd.payload.processId));
433+
} else {
434+
this.notificationsService.error(this.translateService.get('item.edit.delete.error'));
435+
this.router.navigate([getItemEditRoute(this.item)]);
436+
}
437+
});
436438
}
437439

438440
/**

0 commit comments

Comments
 (0)