diff --git a/demo-shell/src/app/components/shared-link-view/shared-link-view.component.html b/demo-shell/src/app/components/shared-link-view/shared-link-view.component.html index 07da8ce05d..32110f9787 100644 --- a/demo-shell/src/app/components/shared-link-view/shared-link-view.component.html +++ b/demo-shell/src/app/components/shared-link-view/shared-link-view.component.html @@ -1,5 +1,6 @@ diff --git a/demo-shell/src/app/components/shared-link-view/shared-link-view.component.ts b/demo-shell/src/app/components/shared-link-view/shared-link-view.component.ts index cd198873df..b186963434 100644 --- a/demo-shell/src/app/components/shared-link-view/shared-link-view.component.ts +++ b/demo-shell/src/app/components/shared-link-view/shared-link-view.component.ts @@ -16,7 +16,7 @@ */ import { Component, ViewEncapsulation, OnInit } from '@angular/core'; -import { ActivatedRoute } from '@angular/router'; +import { ActivatedRoute, Router } from '@angular/router'; @Component({ selector: 'app-shared-link-view', @@ -30,7 +30,7 @@ export class SharedLinkViewComponent implements OnInit { sharedLinkId: string = null; - constructor(private route: ActivatedRoute) {} + constructor(private route: ActivatedRoute, private router: Router) {} ngOnInit() { this.route.params.subscribe(params => { @@ -38,4 +38,8 @@ export class SharedLinkViewComponent implements OnInit { }); } + redirectTo404() { + this.router.navigate(['error/404']); + } + } diff --git a/docs/core/viewer.component.md b/docs/core/viewer.component.md index cb571ccafd..a34ec370c7 100644 --- a/docs/core/viewer.component.md +++ b/docs/core/viewer.component.md @@ -112,6 +112,7 @@ URL with `urlFile`. | print | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`BaseEvent`](../../lib/core/events/base.event.ts)`>` | Emitted when user clicks the 'Print' button. | | share | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`<`[`BaseEvent`](../../lib/core/events/base.event.ts)`>` | Emitted when user clicks the 'Share' button. | | showViewerChange | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when the viewer is shown or hidden. | +| invalidSharedLink | [`EventEmitter`](https://angular.io/api/core/EventEmitter)`` | Emitted when the shared link used is not valid. | ## Keyboard shortcuts diff --git a/lib/core/viewer/components/viewer.component.spec.ts b/lib/core/viewer/components/viewer.component.spec.ts index 6a6ca00536..dcdd6db1a4 100644 --- a/lib/core/viewer/components/viewer.component.spec.ts +++ b/lib/core/viewer/components/viewer.component.spec.ts @@ -624,6 +624,21 @@ describe('ViewerComponent', () => { })); + it('should raise an event when the shared link is invalid', (done) => { + spyOn(alfrescoApiService.getInstance().core.sharedlinksApi, 'getSharedLink') + .and.returnValue(Promise.reject({})); + + component.invalidSharedLink.subscribe(() => { + done(); + }); + + component.sharedLinkId = 'the-Shared-Link-id'; + component.urlFile = null; + component.mimeType = null; + + component.ngOnChanges(null); + }); + }); describe('MimeType handling', () => { diff --git a/lib/core/viewer/components/viewer.component.ts b/lib/core/viewer/components/viewer.component.ts index 6e4b60a6aa..93401c84c0 100644 --- a/lib/core/viewer/components/viewer.component.ts +++ b/lib/core/viewer/components/viewer.component.ts @@ -209,6 +209,9 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { @Output() navigateNext = new EventEmitter(); + @Output() + invalidSharedLink = new EventEmitter(); + viewerType = 'unknown'; isLoading = false; node: MinimalNodeEntryEntity; @@ -307,6 +310,7 @@ export class ViewerComponent implements OnChanges, OnInit, OnDestroy { () => { this.isLoading = false; this.logService.error('This sharedLink does not exist'); + this.invalidSharedLink.next(); }); } }