diff --git a/src/app/features/profile/components/profile-information/profile-information.component.html b/src/app/features/profile/components/profile-information/profile-information.component.html index e03ceb58f..613865457 100644 --- a/src/app/features/profile/components/profile-information/profile-information.component.html +++ b/src/app/features/profile/components/profile-information/profile-information.component.html @@ -14,12 +14,10 @@

{{ currentUser()?.fullName }}

- @if (currentUser()?.social?.orcid) { + @if (orcidId()) { } diff --git a/src/app/features/profile/components/profile-information/profile-information.component.ts b/src/app/features/profile/components/profile-information/profile-information.component.ts index 25d7f1a4d..3304a8ce2 100644 --- a/src/app/features/profile/components/profile-information/profile-information.component.ts +++ b/src/app/features/profile/components/profile-information/profile-information.component.ts @@ -43,6 +43,11 @@ export class ProfileInformationComponent { userSocials = computed(() => mapUserSocials(this.currentUser()?.social, SOCIAL_LINKS)); + orcidId = computed(() => { + const orcid = this.currentUser()?.external_identity?.ORCID; + return orcid?.status?.toUpperCase() === 'VERIFIED' ? orcid.id : undefined; + }); + toProfileSettings() { this.editProfile.emit(); } diff --git a/src/app/shared/mappers/user/user.mapper.ts b/src/app/shared/mappers/user/user.mapper.ts index 50b7b8b71..0a89499c6 100644 --- a/src/app/shared/mappers/user/user.mapper.ts +++ b/src/app/shared/mappers/user/user.mapper.ts @@ -32,6 +32,7 @@ export class UserMapper { employment: user.attributes.employment, iri: user.links.iri, social: user.attributes.social, + external_identity: user.attributes.external_identity, defaultRegionId: user.relationships?.default_region?.data?.id, canViewReviews: user.attributes.can_view_reviews === true, // [NS] Do not simplify it timezone: user.attributes.timezone, diff --git a/src/app/shared/models/user/external-identity.model.ts b/src/app/shared/models/user/external-identity.model.ts new file mode 100644 index 000000000..9703400e0 --- /dev/null +++ b/src/app/shared/models/user/external-identity.model.ts @@ -0,0 +1,8 @@ +export interface OrcidInfo { + id: string; + status: string; +} + +export interface ExternalIdentityModel { + ORCID?: OrcidInfo | null; +} diff --git a/src/app/shared/models/user/user-json-api.model.ts b/src/app/shared/models/user/user-json-api.model.ts index fd2fc083f..99ffcf74a 100644 --- a/src/app/shared/models/user/user-json-api.model.ts +++ b/src/app/shared/models/user/user-json-api.model.ts @@ -2,6 +2,7 @@ import { ResponseDataJsonApi } from '../common/json-api.model'; import { Education } from './education.model'; import { Employment } from './employment.model'; +import { ExternalIdentityModel } from './external-identity.model'; import { SocialModel } from './social.model'; export type UserResponseJsonApi = ResponseDataJsonApi; @@ -47,6 +48,7 @@ export interface UserAttributesJsonApi { suffix: string; locale: string; social: SocialModel; + external_identity: ExternalIdentityModel; timezone: string; } diff --git a/src/app/shared/models/user/user.models.ts b/src/app/shared/models/user/user.models.ts index 2eadb1721..cbde55356 100644 --- a/src/app/shared/models/user/user.models.ts +++ b/src/app/shared/models/user/user.models.ts @@ -1,5 +1,6 @@ import { Education } from './education.model'; import { Employment } from './employment.model'; +import { ExternalIdentityModel } from './external-identity.model'; import { SocialModel } from './social.model'; export interface UserData { @@ -24,6 +25,7 @@ export interface UserModel { timezone: string; locale: string; social: SocialModel; + external_identity: ExternalIdentityModel; defaultRegionId: string; link?: string; iri?: string;