diff --git a/src/app/submission/sections/clarin-license-resource/section-license.component.ts b/src/app/submission/sections/clarin-license-resource/section-license.component.ts index 413b50421b9..295dbd03a14 100644 --- a/src/app/submission/sections/clarin-license-resource/section-license.component.ts +++ b/src/app/submission/sections/clarin-license-resource/section-license.component.ts @@ -16,10 +16,9 @@ import { Operation } from 'fast-json-patch'; import { ClarinLicenseDataService } from '../../../core/data/clarin/clarin-license-data.service'; import { ClarinLicense } from '../../../core/shared/clarin/clarin-license.model'; import { getFirstCompletedRemoteData, getFirstSucceededRemoteListPayload } from '../../../core/shared/operators'; -import { distinctUntilChanged, filter, find } from 'rxjs/operators'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; +import { distinctUntilChanged, filter } from 'rxjs/operators'; import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { WorkspaceitemDataService } from '../../../core/submission/workspaceitem-data.service'; +import { SubmissionService } from '../../submission.service'; import { RemoteData } from '../../../core/data/remote-data'; import parseSectionErrors from '../../utils/parseSectionErrors'; import { normalizeSectionData } from '../../../core/submission/submission-response-parsing.service'; @@ -27,7 +26,7 @@ import { License4Selector } from './license-4-selector.model'; import { ConfigurationProperty } from '../../../core/shared/configuration-property.model'; import { HELP_DESK_PROPERTY } from '../../../item-page/tombstone/tombstone.component'; import { ConfigurationDataService } from '../../../core/data/configuration-data.service'; -import { WorkspaceItem } from '../../../core/submission/models/workspaceitem.model'; +import { SubmissionObject } from '../../../core/submission/models/submission-object.model'; import { PaginatedList } from '../../../core/data/paginated-list.model'; import { ItemDataService } from '../../../core/data/item-data.service'; import { Item } from '../../../core/shared/item.model'; @@ -135,8 +134,7 @@ export class SubmissionSectionClarinLicenseComponent extends SectionModelCompone * @param clarinLicenseService * @param translateService * @param itemService - * @param workspaceItemService - * @param halService + * @param submissionService * @param rdbService * @param configurationDataService * @param requestService @@ -151,8 +149,7 @@ export class SubmissionSectionClarinLicenseComponent extends SectionModelCompone protected clarinLicenseService: ClarinLicenseDataService, protected translateService: TranslateService, protected itemService: ItemDataService, - protected workspaceItemService: WorkspaceitemDataService, - protected halService: HALEndpointService, + protected submissionService: SubmissionService, protected rdbService: RemoteDataBuildService, private configurationDataService: ConfigurationDataService, protected requestService: RequestService, @@ -196,11 +193,17 @@ export class SubmissionSectionClarinLicenseComponent extends SectionModelCompone this.formId = this.formService.getUniqueId(this.sectionData.id); // Load the accepted license of the item - this.getActualWorkspaceItem() - .then((workspaceItemRD: RemoteData) => { - this.itemService.findByHref(workspaceItemRD.payload._links.item.href) + this.getActualSubmissionItem() + .then((submissionItemRD: RemoteData) => { + if (!submissionItemRD?.hasSucceeded || !submissionItemRD.payload?._links?.item?.href) { + return; + } + this.itemService.findByHref(submissionItemRD.payload._links.item.href) .pipe(getFirstCompletedRemoteData()) .subscribe((itemRD: RemoteData) => { + if (!itemRD?.hasSucceeded || !itemRD.payload) { + return; + } // Load the metadata where is store clarin license name (`dc.rights`). const item = itemRD.payload; const dcRightsMetadata = item.metadata['dc.rights']; @@ -273,26 +276,22 @@ export class SubmissionSectionClarinLicenseComponent extends SectionModelCompone } this.updateSectionStatus(); - await this.getActualWorkspaceItem() - .then(workspaceItemRD => { + await this.getActualSubmissionItem() + .then(submissionItemRD => { + if (!submissionItemRD?.hasSucceeded || !submissionItemRD.payload?._links?.self?.href) { + return; + } const requestId = this.requestService.generateRequestId(); - const hrefObs = this.halService.getEndpoint(this.workspaceItemService.getLinkPath()); - const patchOperation2 = { op: 'replace', path: '/license', value: licenseNameRest } as Operation; - - hrefObs.pipe( - find((href: string) => hasValue(href)), - ).subscribe((href: string) => { - const request = new PatchRequest(requestId, href + '/' + workspaceItemRD.payload.id, [patchOperation2]); - this.requestService.send(request); - }); + const request = new PatchRequest(requestId, submissionItemRD.payload._links.self.href, [patchOperation2]); + this.requestService.send(request); // process the response this.rdbService.buildFromRequestUUID(requestId) .pipe(getFirstCompletedRemoteData()) - .subscribe((response: RemoteData) => { + .subscribe((response: RemoteData) => { // show validation errors in every section const workspaceitem = response.payload; @@ -462,10 +461,11 @@ export class SubmissionSectionClarinLicenseComponent extends SectionModelCompone } /** - * Get the current workspace item by the submissionId. + * Get the current submission item (workspace or workflow) by the submissionId. + * This method is route-aware and retrieves from the appropriate endpoint based on the current URL. */ - private async getActualWorkspaceItem(): Promise> { - return this.workspaceItemService.findById(this.submissionId) + private async getActualSubmissionItem(): Promise> { + return this.submissionService.retrieveSubmission(this.submissionId) .pipe(getFirstCompletedRemoteData()).toPromise(); }