Skip to content

Commit c1beaf4

Browse files
authored
fix(metadata): fixed contributors bug and updated models (#505)
1 parent d5b8356 commit c1beaf4

File tree

15 files changed

+45
-41
lines changed

15 files changed

+45
-41
lines changed

src/app/features/files/models/get-resource-short-info-response.model.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ApiData, IdentifiersJsonApiResponse, JsonApiResponse } from '@osf/shared/models';
1+
import { ApiData, IdentifiersResponseJsonApi, JsonApiResponse } from '@osf/shared/models';
22

33
export type GetResourceShortInfoResponse = JsonApiResponse<
44
ApiData<
@@ -8,7 +8,7 @@ export type GetResourceShortInfoResponse = JsonApiResponse<
88
date_created: string;
99
date_modified: string;
1010
},
11-
{ identifiers: IdentifiersJsonApiResponse },
11+
{ identifiers: IdentifiersResponseJsonApi },
1212
null,
1313
null
1414
>,

src/app/features/files/models/get-short-info-response.model.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ApiData, IdentifiersJsonApiResponse, JsonApiResponse } from '@shared/models';
1+
import { ApiData, IdentifiersResponseJsonApi, JsonApiResponse } from '@shared/models';
22

33
export type GetShortInfoResponse = JsonApiResponse<
44
ApiData<
@@ -8,7 +8,7 @@ export type GetShortInfoResponse = JsonApiResponse<
88
date_created: string;
99
date_modified: string;
1010
},
11-
{ identifiers: IdentifiersJsonApiResponse },
11+
{ identifiers: IdentifiersResponseJsonApi },
1212
null,
1313
null
1414
>,

src/app/features/metadata/dialogs/license-dialog/license-dialog.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';
77

88
import { ChangeDetectionStrategy, Component, inject, OnInit, signal, viewChild } from '@angular/core';
99

10-
import { Metadata } from '@osf/features/metadata/models';
10+
import { MetadataModel } from '@osf/features/metadata/models';
1111
import { LicenseComponent, LoadingSpinnerComponent } from '@osf/shared/components';
1212
import { LicenseModel, LicenseOptions } from '@shared/models';
1313
import { LicensesSelectors, LoadAllLicenses } from '@shared/stores/licenses';
@@ -29,7 +29,7 @@ export class LicenseDialogComponent implements OnInit {
2929

3030
selectedLicenseId = signal<string | null>(null);
3131
selectedLicenseOptions = signal<LicenseOptions | null>(null);
32-
metadata: Metadata | null = null;
32+
metadata: MetadataModel | null = null;
3333
isSubmitting = signal<boolean>(false);
3434

3535
licenseComponent = viewChild<LicenseComponent>('licenseComponent');

src/app/features/metadata/mappers/metadata.mapper.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { LicensesMapper } from '@osf/shared/mappers';
1+
import { IdentifiersMapper, LicensesMapper } from '@osf/shared/mappers';
22

3-
import { CustomItemMetadataRecord, CustomMetadataJsonApi, Metadata, MetadataJsonApi } from '../models';
3+
import { CustomItemMetadataRecord, CustomMetadataJsonApi, MetadataJsonApi, MetadataModel } from '../models';
44

55
export class MetadataMapper {
6-
static fromMetadataApiResponse(response: MetadataJsonApi): Metadata {
6+
static fromMetadataApiResponse(response: MetadataJsonApi): MetadataModel {
77
return {
88
id: response.id,
99
title: response.attributes.title,
@@ -19,12 +19,7 @@ export class MetadataMapper {
1919
year: response.attributes.node_license.year || '',
2020
}
2121
: undefined,
22-
identifiers: response.embeds?.identifiers?.data.map((identifier) => ({
23-
id: identifier.id,
24-
type: identifier.type,
25-
category: identifier.attributes.category,
26-
value: identifier.attributes.value,
27-
})),
22+
identifiers: IdentifiersMapper.fromJsonApi(response.embeds?.identifiers),
2823
provider: response.embeds?.provider?.data.id,
2924
public: response.attributes.public,
3025
currentUserPermissions: response.attributes.current_user_permissions,

src/app/features/metadata/metadata.component.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export class MetadataComponent implements OnInit {
125125
metadata = select(MetadataSelectors.getResourceMetadata);
126126
isMetadataLoading = select(MetadataSelectors.getLoading);
127127
customItemMetadata = select(MetadataSelectors.getCustomItemMetadata);
128-
contributors = select(ContributorsSelectors.getContributors);
128+
bibliographicContributors = select(ContributorsSelectors.getBibliographicContributors);
129129
isContributorsLoading = select(ContributorsSelectors.isContributorsLoading);
130130
cedarRecords = select(MetadataSelectors.getCedarRecords);
131131
cedarTemplates = select(MetadataSelectors.getCedarTemplates);
@@ -186,8 +186,6 @@ export class MetadataComponent implements OnInit {
186186

187187
showRegistrationDoi = computed(() => this.resourceType() === ResourceType.Registration);
188188

189-
bibliographicContributors = computed(() => this.contributors().filter((contributor) => contributor.isBibliographic));
190-
191189
hasWriteAccess = computed(() => {
192190
const metadata = this.metadata();
193191
if (!metadata) return false;

src/app/features/metadata/models/metadata-json-api.model.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import { ApiData, InstitutionsJsonApiResponse, LicenseDataJsonApi, LicenseRecordJsonApi } from '@osf/shared/models';
1+
import {
2+
ApiData,
3+
IdentifiersResponseJsonApi,
4+
InstitutionsJsonApiResponse,
5+
LicenseDataJsonApi,
6+
LicenseRecordJsonApi,
7+
} from '@osf/shared/models';
28
import { UserPermissions } from '@shared/enums';
39

410
export interface MetadataJsonApiResponse {
@@ -22,13 +28,11 @@ export interface MetadataAttributesJsonApi {
2228
}
2329

2430
interface MetadataEmbedsJsonApi {
25-
identifiers: {
26-
data: { id: string; type: string; attributes: { category: string; value: string } }[];
27-
};
31+
affiliated_institutions: InstitutionsJsonApiResponse;
32+
identifiers: IdentifiersResponseJsonApi;
2833
license: {
2934
data: LicenseDataJsonApi;
3035
};
31-
affiliated_institutions: InstitutionsJsonApiResponse;
3236
provider?: {
3337
data: { id: string; type: string; attributes: { name: string } };
3438
};

src/app/features/metadata/models/metadata.model.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Identifier, Institution, LicenseModel } from '@osf/shared/models';
22
import { UserPermissions } from '@shared/enums';
33

4-
export interface Metadata {
4+
export interface MetadataModel {
55
id: string;
66
title: string;
77
description: string;

src/app/features/metadata/services/metadata.service.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import {
1919
MetadataJsonApi,
2020
MetadataJsonApiResponse,
2121
} from '../models';
22-
import { CrossRefFundersResponse, CustomItemMetadataRecord, Metadata } from '../models/metadata.model';
22+
import { CrossRefFundersResponse, CustomItemMetadataRecord, MetadataModel } from '../models/metadata.model';
2323

2424
@Injectable({
2525
providedIn: 'root',
@@ -127,7 +127,7 @@ export class MetadataService {
127127
);
128128
}
129129

130-
getResourceMetadata(resourceId: string, resourceType: ResourceType): Observable<Partial<Metadata>> {
130+
getResourceMetadata(resourceId: string, resourceType: ResourceType): Observable<Partial<MetadataModel>> {
131131
const params = this.getMetadataParams(resourceType);
132132

133133
const baseUrl = `${this.apiUrl}/${this.urlMap.get(resourceType)}/${resourceId}/`;
@@ -141,7 +141,7 @@ export class MetadataService {
141141
resourceId: string,
142142
resourceType: ResourceType,
143143
updates: Partial<BaseNodeAttributesJsonApi>
144-
): Observable<Metadata> {
144+
): Observable<MetadataModel> {
145145
const payload = {
146146
data: {
147147
id: resourceId,
@@ -163,7 +163,7 @@ export class MetadataService {
163163
resourceType: ResourceType,
164164
licenseId: string,
165165
licenseOptions?: LicenseOptions
166-
): Observable<Metadata> {
166+
): Observable<MetadataModel> {
167167
const payload = {
168168
data: {
169169
id: resourceId,

src/app/features/metadata/store/metadata.model.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import {
66
} from '@osf/features/metadata/models';
77
import { AsyncStateModel } from '@shared/models';
88

9-
import { CrossRefFunder, Metadata } from '../models';
9+
import { CrossRefFunder, MetadataModel } from '../models';
1010

1111
export interface MetadataStateModel {
12-
metadata: AsyncStateModel<Metadata | null>;
12+
metadata: AsyncStateModel<MetadataModel | null>;
1313
customMetadata: AsyncStateModel<CustomItemMetadataRecord | null>;
1414
fundersList: AsyncStateModel<CrossRefFunder[]>;
1515
cedarTemplates: AsyncStateModel<CedarMetadataTemplateJsonApi | null>;

src/app/features/metadata/store/metadata.state.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { inject, Injectable } from '@angular/core';
66

77
import { handleSectionError } from '@osf/shared/helpers';
88

9-
import { CedarMetadataRecord, CedarMetadataRecordJsonApi, Metadata } from '../models';
9+
import { CedarMetadataRecord, CedarMetadataRecordJsonApi, MetadataModel } from '../models';
1010
import { MetadataService } from '../services';
1111

1212
import {
@@ -48,7 +48,7 @@ export class MetadataState {
4848
tap((resource) => {
4949
ctx.patchState({
5050
metadata: {
51-
data: resource as Metadata,
51+
data: resource as MetadataModel,
5252
isLoading: false,
5353
error: null,
5454
},

0 commit comments

Comments
 (0)