From dbf9d29980c3d8755ee4c0539bc5acdc97373742 Mon Sep 17 00:00:00 2001 From: Giuseppe Digilio Date: Tue, 14 May 2024 18:15:47 +0200 Subject: [PATCH] [DURACOM-235] Refactored creation in order to navigate to created object page --- .../create-collection-page.component.html | 3 +- .../create-community-page.component.html | 3 +- .../create-comcol-page.component.ts | 45 ++++++++++++------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/src/app/collection-page/create-collection-page/create-collection-page.component.html b/src/app/collection-page/create-collection-page/create-collection-page.component.html index ddce9dbec4..465042f6e3 100644 --- a/src/app/collection-page/create-collection-page/create-collection-page.component.html +++ b/src/app/collection-page/create-collection-page/create-collection-page.component.html @@ -6,6 +6,5 @@ + (back)="navigateToHome()"> diff --git a/src/app/community-page/create-community-page/create-community-page.component.html b/src/app/community-page/create-community-page/create-community-page.component.html index d99069f6c8..666f8e2ce0 100644 --- a/src/app/community-page/create-community-page/create-community-page.component.html +++ b/src/app/community-page/create-community-page/create-community-page.component.html @@ -9,6 +9,5 @@ + (back)="navigateToHome()"> diff --git a/src/app/shared/comcol/comcol-forms/create-comcol-page/create-comcol-page.component.ts b/src/app/shared/comcol/comcol-forms/create-comcol-page/create-comcol-page.component.ts index 9034bffe8e..af97b712d7 100644 --- a/src/app/shared/comcol/comcol-forms/create-comcol-page/create-comcol-page.component.ts +++ b/src/app/shared/comcol/comcol-forms/create-comcol-page/create-comcol-page.component.ts @@ -2,7 +2,7 @@ import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; import { Observable } from 'rxjs'; -import { mergeMap, take } from 'rxjs/operators'; +import { map, mergeMap, take, tap } from 'rxjs/operators'; import { ComColDataService } from '../../../../core/data/comcol-data.service'; import { CommunityDataService } from '../../../../core/data/community-data.service'; import { RemoteData } from '../../../../core/data/remote-data'; @@ -16,6 +16,8 @@ import { RequestParam } from '../../../../core/cache/models/request-param.model' import { RequestService } from '../../../../core/data/request.service'; import { Collection } from '../../../../core/shared/collection.model'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; +import { of } from 'rxjs/internal/observable/of'; +import { getHomePageRoute } from '../../../../app-routing-paths'; /** * Component representing the create page for communities and collections @@ -83,33 +85,46 @@ export class CreateComColPageComponent i this.parentUUID$.pipe( take(1), mergeMap((uuid: string) => { - const params = uuid ? [new RequestParam('parent', uuid)] : []; - return this.dsoDataService.create(dso, ...params) - .pipe(getFirstSucceededRemoteDataPayload() - ); - })) - .subscribe((dsoRD: TDomain) => { + const params = uuid ? [new RequestParam('parent', uuid)] : []; + return this.dsoDataService.create(dso, ...params) + .pipe(getFirstSucceededRemoteDataPayload() + ); + }), + mergeMap((dsoRD: TDomain) => { if (isNotUndefined(dsoRD)) { this.newUUID = dsoRD.uuid; if (uploader.queue.length > 0) { - this.dsoDataService.getLogoEndpoint(this.newUUID).pipe(take(1)).subscribe((href: string) => { - uploader.options.url = href; - uploader.uploadAll(); - }); + return this.dsoDataService.getLogoEndpoint(this.newUUID).pipe( + take(1), + tap((href: string) => { + uploader.options.url = href; + uploader.onCompleteAll = () => { + this.navigateToNewPage(); + this.notificationsService.success(null, this.translate.get(this.type.value + '.create.notifications.success')); + }; + uploader.uploadAll(); + }), + map(() => false) + ); } else { - this.navigateToNewPage(); + this.dsoDataService.refreshCache(dsoRD); + return of(true); } - this.dsoDataService.refreshCache(dsoRD); } + }) + ).subscribe((notify: boolean) => { + if (notify) { + this.navigateToNewPage(); this.notificationsService.success(null, this.translate.get(this.type.value + '.create.notifications.success')); - }); + } + }); } /** * Navigate to home page */ navigateToHome() { - this.router.navigate(['/home']); + this.router.navigate([getHomePageRoute()]); } /**