From 7941337e81b2ea19e60ecf0404e19b102fc1a53f Mon Sep 17 00:00:00 2001 From: nsemets Date: Fri, 10 Oct 2025 19:53:30 +0300 Subject: [PATCH 1/2] fix(view-only-link): fixed file detail page --- src/app/core/guards/is-file.guard.ts | 9 +++++++-- .../file-resource-metadata.component.html | 4 ++-- .../metadata/services/metadata.service.ts | 16 +++++++++++++++- .../mappers/contributors/contributors.mapper.ts | 3 ++- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/app/core/guards/is-file.guard.ts b/src/app/core/guards/is-file.guard.ts index e2e5e38ed..d94cfbdc3 100644 --- a/src/app/core/guards/is-file.guard.ts +++ b/src/app/core/guards/is-file.guard.ts @@ -14,6 +14,11 @@ export const isFileGuard: CanMatchFn = (route: Route, segments: UrlSegment[]) => const id = segments[0]?.path; const isMetadataPath = segments[1]?.path === 'metadata'; + + const urlObj = new URL(window.location.href); + const viewOnly = urlObj.searchParams.get('view_only'); + const extras = viewOnly ? { queryParams: { view_only: viewOnly } } : {}; + if (!id) { return false; } @@ -25,7 +30,7 @@ export const isFileGuard: CanMatchFn = (route: Route, segments: UrlSegment[]) => return true; } if (currentResource.parentId) { - router.navigate(['/', currentResource.parentId, 'files', id], { queryParamsHandling: 'preserve' }); + router.navigate(['/', currentResource.parentId, 'files', id], extras); return false; } } @@ -45,7 +50,7 @@ export const isFileGuard: CanMatchFn = (route: Route, segments: UrlSegment[]) => return true; } if (resource.parentId) { - router.navigate(['/', resource.parentId, 'files', id], { queryParamsHandling: 'preserve' }); + router.navigate(['/', resource.parentId, 'files', id], extras); return false; } } diff --git a/src/app/features/files/components/file-resource-metadata/file-resource-metadata.component.html b/src/app/features/files/components/file-resource-metadata/file-resource-metadata.component.html index 33fb23863..06c3a5c5a 100644 --- a/src/app/features/files/components/file-resource-metadata/file-resource-metadata.component.html +++ b/src/app/features/files/components/file-resource-metadata/file-resource-metadata.component.html @@ -98,11 +98,11 @@

{{ 'files.detail.resourceMetadata.fields.dateModified' | translate }}

@if (isResourceContributorsLoading()) { } @else { - @if (contributors().length && !hasViewOnly()) { + @if (hasViewOnly() || contributors().length) {

{{ 'common.labels.contributors' | translate }}

- +
} } diff --git a/src/app/features/metadata/services/metadata.service.ts b/src/app/features/metadata/services/metadata.service.ts index c3eac71a9..8447c7337 100644 --- a/src/app/features/metadata/services/metadata.service.ts +++ b/src/app/features/metadata/services/metadata.service.ts @@ -102,9 +102,11 @@ export class MetadataService { 'page[size]': 20, }; + // [NS] TODO: Check if it can be simplified let cedarUrl = `${this.apiUrl}/${this.urlMap.get(resourceType)}/${resourceId}/cedar_metadata_records/`; + if (url) { - cedarUrl = `${url}cedar_metadata_records/`; + cedarUrl = this.getMetadataUrl(url); } return this.jsonApiService.get(cedarUrl, params); @@ -212,4 +214,16 @@ export class MetadataService { return params; } + + private getMetadataUrl(url: string): string { + const parsedUrl = new URL(url); + + if (!parsedUrl.pathname.endsWith('/')) { + parsedUrl.pathname += '/'; + } + + parsedUrl.pathname += 'cedar_metadata_records/'; + + return parsedUrl.toString(); + } } diff --git a/src/app/shared/mappers/contributors/contributors.mapper.ts b/src/app/shared/mappers/contributors/contributors.mapper.ts index 9ab580df6..bf44ed469 100644 --- a/src/app/shared/mappers/contributors/contributors.mapper.ts +++ b/src/app/shared/mappers/contributors/contributors.mapper.ts @@ -20,7 +20,8 @@ export class ContributorsMapper { } static getContributor(response: ContributorDataJsonApi): ContributorModel { - const userEmbed = response.embeds.users; + const userEmbed = response.embeds?.users; + const errorMeta = userEmbed?.errors && userEmbed.errors.length > 0 ? userEmbed.errors[0]?.meta : null; const userData = userEmbed?.data; From 46fcf46e449fa8bcff314c6c2ab02fb4bf822599 Mon Sep 17 00:00:00 2001 From: nsemets Date: Fri, 10 Oct 2025 19:58:19 +0300 Subject: [PATCH 2/2] fix(social): updated linkedin --- src/app/shared/constants/social-links.const.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/shared/constants/social-links.const.ts b/src/app/shared/constants/social-links.const.ts index e7f18b186..a64cec645 100644 --- a/src/app/shared/constants/social-links.const.ts +++ b/src/app/shared/constants/social-links.const.ts @@ -12,7 +12,7 @@ export const SOCIAL_LINKS: SocialLinksModel[] = [ { id: 2, label: 'settings.profileSettings.social.labels.linkedIn', - address: 'https://linkedin.com/', + address: 'https://linkedin.com/in/', placeholder: 'in/userID, profie/view?profileID, or pub/pubID', key: 'linkedIn', icon: 'linkedin.svg',