Skip to content

Commit

Permalink
fix: custom transfer json missing connector endpoint (#455)
Browse files Browse the repository at this point in the history
  • Loading branch information
richardtreier authored Aug 28, 2023
1 parent f55cd0c commit b437f54
Show file tree
Hide file tree
Showing 11 changed files with 68 additions and 79 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,6 @@ export class AssetPropertyGridGroupBuilder {
return {
icon: 'link',
label: 'Connector Endpoint',
labelTitle: AssetProperties.originator,
...this.propertyGridUtils.guessValue(endpoint),
};
}
Expand Down
8 changes: 4 additions & 4 deletions src/app/core/services/api/contract-offer.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ export class ContractOfferService {
): ContractOffer {
return {
...contractOfferDto,
asset: this.assetPropertyMapper.buildAssetFromProperties(
contractOfferDto.asset.properties,
{connectorEndpoint},
),
asset: this.assetPropertyMapper.buildAsset({
connectorEndpoint,
properties: contractOfferDto.asset.properties,
}),
};
}
}
1 change: 0 additions & 1 deletion src/app/core/services/asset-properties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ export const AssetProperties = {
id: `${edc}id`,
name: `${sovity}name`,
contentType: `${sovity}contenttype`,
originator: `${sovity}originator`,
originatorOrganization: `${sovity}originatorOrganization`,
description: `${sovity}description`,
version: `${sovity}version`,
Expand Down
49 changes: 21 additions & 28 deletions src/app/core/services/asset-property-mapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,30 +27,26 @@ export class AssetPropertyMapper {
private activeFeatureSet: ActiveFeatureSet,
) {}

buildAssetFromProperties(
props: Record<string, string | null>,
opts?: {connectorEndpoint?: string},
): Asset {
const language = props[AssetProperties.language]
? this.languageSelectItemService.findById(
props[AssetProperties.language]!,
)
: null;
const dataCategory = props[AssetProperties.dataCategory]
? this.dataCategorySelectItemService.findById(
props[AssetProperties.dataCategory]!,
)
: null;
const dataSubcategory = props[AssetProperties.dataSubcategory]
? this.dataSubcategorySelectItemService.findById(
props[AssetProperties.dataSubcategory]!,
)
: null;
const transportMode = props[AssetProperties.transportMode]
? this.transportModeSelectItemService.findById(
props[AssetProperties.transportMode]!,
)
: null;
buildAsset(opts: {
connectorEndpoint: string;
properties: Record<string, string | null>;
}): Asset {
const props = opts.properties;
const lookup = <T>(key: string, fn: (id: string) => T) =>
props[key] ? fn(props[key]!) : null;

const language = lookup(AssetProperties.language, (id) =>
this.languageSelectItemService.findById(id),
);
const dataCategory = lookup(AssetProperties.dataCategory, (id) =>
this.dataCategorySelectItemService.findById(id),
);
const dataSubcategory = lookup(AssetProperties.dataSubcategory, (id) =>
this.dataSubcategorySelectItemService.findById(id),
);
const transportMode = lookup(AssetProperties.transportMode, (id) =>
this.transportModeSelectItemService.findById(id),
);
const keywords = (props[AssetProperties.keywords] ?? '')
.split(',')
.map((it) => it.trim())
Expand All @@ -64,7 +60,7 @@ export class AssetPropertyMapper {
name: props[AssetProperties.name] ?? id,
version: props[AssetProperties.version],
contentType: props[AssetProperties.contentType],
originator: opts?.connectorEndpoint ?? props[AssetProperties.originator],
originator: opts.connectorEndpoint,
originatorOrganization:
props[AssetProperties.curatorOrganizationName] ??
'Unknown Organization',
Expand Down Expand Up @@ -109,9 +105,6 @@ export class AssetPropertyMapper {
props[AssetProperties.id] = trimmedOrNull(metadata?.id);
props[AssetProperties.name] = trimmedOrNull(metadata?.name);
props[AssetProperties.version] = trimmedOrNull(metadata?.version);
props[AssetProperties.originator] = trimmedOrNull(
this.config.connectorEndpoint,
);
props[AssetProperties.curatorOrganizationName] = trimmedOrNull(
this.config.curatorOrganizationName,
);
Expand Down
21 changes: 12 additions & 9 deletions src/app/core/services/asset-service-mapped.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {Injectable} from '@angular/core';
import {Inject, Injectable} from '@angular/core';
import {Observable} from 'rxjs';
import {map} from 'rxjs/operators';
import {APP_CONFIG, AppConfig} from '../config/app-config';
import {EdcApiService} from './api/edc-api.service';
import {AssetPropertyMapper} from './asset-property-mapper';
import {Asset} from './models/asset';
Expand All @@ -13,19 +14,21 @@ import {Asset} from './models/asset';
})
export class AssetServiceMapped {
constructor(
@Inject(APP_CONFIG) private config: AppConfig,
private assetPropertyMapper: AssetPropertyMapper,
private edcApiService: EdcApiService,
) {}

fetchAssets(): Observable<Asset[]> {
return this.edcApiService
.getAssetPage()
.pipe(
map((assetPage) =>
assetPage.assets.map((asset) =>
this.assetPropertyMapper.buildAssetFromProperties(asset.properties),
),
return this.edcApiService.getAssetPage().pipe(
map((assetPage) =>
assetPage.assets.map((asset) =>
this.assetPropertyMapper.buildAsset({
connectorEndpoint: this.config.connectorEndpoint,
properties: asset.properties,
}),
),
);
),
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,10 @@ export class BrokerCatalogMapper {
private buildUiDataOffer(offer: CatalogDataOffer): BrokerDataOffer {
return {
...offer,
asset: this.assetPropertyMapper.buildAssetFromProperties(
offer.properties,
),
asset: this.assetPropertyMapper.buildAsset({
connectorEndpoint: offer.connectorEndpoint,
properties: offer.properties,
}),
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import {BehaviorSubject, Subject} from 'rxjs';
import {filter, map, switchMap} from 'rxjs/operators';
import {AssetDetailDialogDataService} from '../../../../component-library/catalog/asset-detail-dialog/asset-detail-dialog-data.service';
import {AssetDetailDialogService} from '../../../../component-library/catalog/asset-detail-dialog/asset-detail-dialog.service';
import {EdcApiService} from '../../../../core/services/api/edc-api.service';
import {AssetPropertyMapper} from '../../../../core/services/asset-property-mapper';
import {AssetServiceMapped} from '../../../../core/services/asset-service-mapped';
import {Asset} from '../../../../core/services/models/asset';
import {Fetched} from '../../../../core/services/models/fetched';
import {AssetCreateDialogResult} from '../asset-create-dialog/asset-create-dialog-result';
Expand All @@ -27,28 +26,23 @@ export class AssetPageComponent implements OnInit, OnDestroy {
private fetch$ = new BehaviorSubject(null);

constructor(
private edcApiService: EdcApiService,
private assetServiceMapped: AssetServiceMapped,
private assetDetailDialogDataService: AssetDetailDialogDataService,
private assetDetailDialogService: AssetDetailDialogService,
private dialog: MatDialog,
private assetPropertyMapper: AssetPropertyMapper,
) {}

ngOnInit(): void {
this.fetch$
.pipe(
switchMap(() => {
return this.edcApiService.getAssetPage().pipe(
return this.assetServiceMapped.fetchAssets().pipe(
map(
(assetPage): AssetList => ({
filteredAssets: assetPage.assets
.map((asset) =>
this.assetPropertyMapper.buildAssetFromProperties(
asset.properties,
),
)
.filter((asset) => asset.name?.includes(this.searchText)),
numTotalAssets: assetPage.assets.length,
(assets): AssetList => ({
filteredAssets: assets.filter((asset) =>
asset.name?.includes(this.searchText),
),
numTotalAssets: assets.length,
}),
),
Fetched.wrap({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ export class ContractAgreementCardMappedService {
buildContractAgreementCardMapped(
contractAgreement: ContractAgreementCard,
): ContractAgreementCardMapped {
let asset = this.assetPropertyMapper.buildAssetFromProperties(
contractAgreement.asset.properties,
);
let asset = this.assetPropertyMapper.buildAsset({
connectorEndpoint: contractAgreement.counterPartyAddress,
properties: contractAgreement.asset.properties,
});

return {
...contractAgreement,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@ import {Component, OnDestroy, OnInit} from '@angular/core';
import {MatDialogRef} from '@angular/material/dialog';
import {Subject} from 'rxjs';
import {finalize, takeUntil} from 'rxjs/operators';
import {EdcApiService} from '../../../../core/services/api/edc-api.service';
import {
ContractDefinitionService,
PolicyDefinition,
PolicyService,
} from '../../../../core/services/api/legacy-managent-api-client';
import {AssetEntryBuilder} from '../../../../core/services/asset-entry-builder';
import {AssetPropertyMapper} from '../../../../core/services/asset-property-mapper';
import {AssetServiceMapped} from '../../../../core/services/asset-service-mapped';
import {ContractDefinitionBuilder} from '../../../../core/services/contract-definition-builder';
import {Asset} from '../../../../core/services/models/asset';
import {NotificationService} from '../../../../core/services/notification.service';
Expand All @@ -28,11 +27,10 @@ export class ContractDefinitionEditorDialog implements OnInit, OnDestroy {
loading = false;

constructor(
private edcApiService: EdcApiService,
private assetServiceMapped: AssetServiceMapped,
public form: ContractDefinitionEditorDialogForm,
private notificationService: NotificationService,
private policyService: PolicyService,
private assetPropertyMapper: AssetPropertyMapper,
private contractDefinitionService: ContractDefinitionService,
private contractDefinitionBuilder: ContractDefinitionBuilder,
private dialogRef: MatDialogRef<ContractDefinitionEditorDialog>,
Expand All @@ -46,13 +44,11 @@ export class ContractDefinitionEditorDialog implements OnInit, OnDestroy {
.subscribe((polices) => {
this.policies = polices;
});
this.edcApiService
.getAssetPage()
this.assetServiceMapped
.fetchAssets()
.pipe(takeUntil(this.ngOnDestroy$))
.subscribe((assetPage) => {
this.assets = assetPage.assets.map((it) =>
this.assetPropertyMapper.buildAssetFromProperties(it.properties),
);
.subscribe((assets) => {
this.assets = assets;
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
<a
class="link"
href="javascript:void(0)"
(click)="onAssetDetailsClick(item.transferProcessId)">
(click)="onAssetDetailsClick(item)">
<mat-icon class="mat-icon-[14px]">open_in_new</mat-icon>
<div>
{{ item.assetName }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,18 +58,21 @@ export class TransferHistoryPageComponent implements OnInit, OnDestroy {
);
}

loadAssetDetails(transferProcessId: string): Observable<Asset> {
loadAssetDetails(item: TransferHistoryEntry): Observable<Asset> {
return this.edcApiService
.getTransferProcessAsset(transferProcessId)
.getTransferProcessAsset(item.transferProcessId)
.pipe(
map((asset) =>
this.assetPropertyMapper.buildAssetFromProperties(asset.properties),
this.assetPropertyMapper.buildAsset({
connectorEndpoint: item.counterPartyConnectorEndpoint,
properties: asset.properties,
}),
),
);
}

onAssetDetailsClick(transferProcessId: string) {
this.loadAssetDetails(transferProcessId).subscribe({
onAssetDetailsClick(item: TransferHistoryEntry) {
this.loadAssetDetails(item).subscribe({
next: (asset) => {
const data = this.assetDetailDialogDataService.assetDetails(
asset,
Expand Down

0 comments on commit b437f54

Please sign in to comment.