Skip to content

Commit f4f568f

Browse files
[DURACOM-383] use async deletion for community & collection
1 parent 737e8e3 commit f4f568f

4 files changed

Lines changed: 21 additions & 7 deletions

File tree

src/app/collection-page/delete-collection-page/delete-collection-page.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111

1212
import { DSONameService } from '../../core/breadcrumbs/dso-name.service';
1313
import { CollectionDataService } from '../../core/data/collection-data.service';
14+
import { ScriptDataService } from '../../core/data/processes/script-data.service';
1415
import { Collection } from '../../core/shared/collection.model';
1516
import { BtnDisabledDirective } from '../../shared/btn-disabled.directive';
1617
import { DeleteComColPageComponent } from '../../shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component';
@@ -42,7 +43,8 @@ export class DeleteCollectionPageComponent extends DeleteComColPageComponent<Col
4243
protected route: ActivatedRoute,
4344
protected notifications: NotificationsService,
4445
protected translate: TranslateService,
46+
protected scriptDataService: ScriptDataService,
4547
) {
46-
super(dsoDataService, dsoNameService, router, route, notifications, translate);
48+
super(dsoDataService, dsoNameService, router, route, notifications, translate, scriptDataService);
4749
}
4850
}

src/app/community-page/delete-community-page/delete-community-page.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111

1212
import { DSONameService } from '../../core/breadcrumbs/dso-name.service';
1313
import { CommunityDataService } from '../../core/data/community-data.service';
14+
import { ScriptDataService } from '../../core/data/processes/script-data.service';
1415
import { Community } from '../../core/shared/community.model';
1516
import { BtnDisabledDirective } from '../../shared/btn-disabled.directive';
1617
import { DeleteComColPageComponent } from '../../shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component';
@@ -42,8 +43,9 @@ export class DeleteCommunityPageComponent extends DeleteComColPageComponent<Comm
4243
protected route: ActivatedRoute,
4344
protected notifications: NotificationsService,
4445
protected translate: TranslateService,
46+
protected scriptDataService: ScriptDataService,
4547
) {
46-
super(dsoDataService, dsoNameService, router, route, notifications, translate);
48+
super(dsoDataService, dsoNameService, router, route, notifications, translate, scriptDataService);
4749
}
4850

4951
}

src/app/core/data/processes/script-data.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export const METADATA_IMPORT_SCRIPT_NAME = 'metadata-import';
3131
export const METADATA_EXPORT_SCRIPT_NAME = 'metadata-export';
3232
export const BATCH_IMPORT_SCRIPT_NAME = 'import';
3333
export const BATCH_EXPORT_SCRIPT_NAME = 'export';
34+
export const DSPACE_OBJECT_DELETION_SCRIPT_NAME = 'dspace-object-deletion';
3435

3536
@Injectable({ providedIn: 'root' })
3637
export class ScriptDataService extends IdentifiableDataService<Script> implements FindAllData<Script> {

src/app/shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,17 @@ import {
1818

1919
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
2020
import { ComColDataService } from '../../../../core/data/comcol-data.service';
21+
import {
22+
DSPACE_OBJECT_DELETION_SCRIPT_NAME,
23+
ScriptDataService,
24+
} from '../../../../core/data/processes/script-data.service';
2125
import { RemoteData } from '../../../../core/data/remote-data';
2226
import { Collection } from '../../../../core/shared/collection.model';
2327
import { Community } from '../../../../core/shared/community.model';
24-
import { NoContent } from '../../../../core/shared/NoContent.model';
2528
import { getFirstCompletedRemoteData } from '../../../../core/shared/operators';
29+
import { getProcessDetailRoute } from '../../../../process-page/process-page-routing.paths';
30+
import { Process } from '../../../../process-page/processes/process.model';
31+
import { ProcessParameter } from '../../../../process-page/processes/process-parameter.model';
2632
import { NotificationsService } from '../../../notifications/notifications.service';
2733

2834
/**
@@ -56,6 +62,7 @@ export class DeleteComColPageComponent<TDomain extends Community | Collection> i
5662
protected route: ActivatedRoute,
5763
protected notifications: NotificationsService,
5864
protected translate: TranslateService,
65+
protected scriptDataService: ScriptDataService,
5966
) {
6067
}
6168

@@ -69,17 +76,19 @@ export class DeleteComColPageComponent<TDomain extends Community | Collection> i
6976
*/
7077
onConfirm(dso: TDomain) {
7178
this.processing$.next(true);
72-
this.dsoDataService.delete(dso.id)
79+
const parameterValues = [ Object.assign(new ProcessParameter(), { name: '-i', value: dso.uuid }) ];
80+
this.scriptDataService.invoke(DSPACE_OBJECT_DELETION_SCRIPT_NAME, parameterValues, [])
7381
.pipe(getFirstCompletedRemoteData())
74-
.subscribe((response: RemoteData<NoContent>) => {
75-
if (response.hasSucceeded) {
82+
.subscribe((rd: RemoteData<Process>) => {
83+
if (rd.hasSucceeded && rd.payload) {
7684
const successMessage = this.translate.instant((dso as any).type + '.delete.notification.success');
7785
this.notifications.success(successMessage);
86+
this.router.navigateByUrl(getProcessDetailRoute(rd.payload.processId));
7887
} else {
7988
const errorMessage = this.translate.instant((dso as any).type + '.delete.notification.fail');
8089
this.notifications.error(errorMessage);
90+
this.router.navigate(['/']);
8191
}
82-
this.router.navigate(['/']);
8392
});
8493
}
8594

0 commit comments

Comments
 (0)