Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,17 @@ 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';
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';
Expand Down Expand Up @@ -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
Expand All @@ -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,
Expand Down Expand Up @@ -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<WorkspaceItem>) => {
this.itemService.findByHref(workspaceItemRD.payload._links.item.href)
this.getActualSubmissionItem()
.then((submissionItemRD: RemoteData<SubmissionObject>) => {
if (!submissionItemRD?.hasSucceeded || !submissionItemRD.payload?._links?.item?.href) {
return;
}
this.itemService.findByHref(submissionItemRD.payload._links.item.href)
.pipe(getFirstCompletedRemoteData())
.subscribe((itemRD: RemoteData<Item>) => {
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'];
Expand Down Expand Up @@ -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<WorkspaceItem>) => {
.subscribe((response: RemoteData<SubmissionObject>) => {

// show validation errors in every section
const workspaceitem = response.payload;
Expand Down Expand Up @@ -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<RemoteData<WorkspaceItem>> {
return this.workspaceItemService.findById(this.submissionId)
private async getActualSubmissionItem(): Promise<RemoteData<SubmissionObject>> {
return this.submissionService.retrieveSubmission(this.submissionId)
.pipe(getFirstCompletedRemoteData()).toPromise();
}

Expand Down
Loading