import { AppStore , SetSelectedNodesAction } from '@alfresco/aca-shared/store' ; import { AlfrescoApiService } from '@alfresco/adf-core' ; import { ContentActionRef } from '@alfresco/adf-extensions' ; import { SharedLinkEntry , SharedlinksApi } from '@alfresco/js-api' ; import { Component , OnDestroy , OnInit , ViewEncapsulation } from '@angular/core' ; import { ActivatedRoute } from '@angular/router' ; import { Store } from '@ngrx/store' ; import { forkJoin , from , of , Subject } from 'rxjs' ; import { catchError , mergeMap , takeUntil } from 'rxjs/operators' ; import { AppExtensionService } from '@alfresco/aca-shared' ; @ Component ( { selector : 'app-shared-link-view' , templateUrl : './shared-link-view.component.html' , styleUrls : [ 'shared-link-view.component.scss' ] , encapsulation : ViewEncapsulation . None , host : { class : 'app-shared-link-view' } } ) export class SharedLinkViewComponent implements OnInit , OnDestroy { private onDestroy$ : Subject < boolean > = new Subject < boolean > ( ) ; private sharedLinksApi : SharedlinksApi ; sharedLinkId : string = null ; viewerToolbarActions : Array < ContentActionRef > = [ ] ; constructor ( private route , private store , private extensions , private alfrescoApiService ) { this . sharedLinksApi = new SharedlinksApi ( this . alfrescoApiService . getInstance ( ) ) ; } ngOnInit ( ) { this . route . params . pipe ( mergeMap ( ( params ) => forkJoin ( [ from ( this . sharedLinksApi . getSharedLink ( params . id ) ) , of ( params . id ) ] ) . pipe ( catchError ( ( ) => of ( [ null , params . id ] ) ) ) ) ) . subscribe ( ( [ sharedEntry , sharedId ] ) => { if ( sharedEntry ) { this . store . dispatch ( new SetSelectedNodesAction ( [ sharedEntry as any ] ) ) ; } this . sharedLinkId = sharedId ; } ) ; this . extensions . getSharedLinkViewerToolbarActions ( ) . pipe ( takeUntil ( this . onDestroy$ ) ) . subscribe ( ( actions ) => { this . viewerToolbarActions = actions ; } ) ; } ngOnDestroy ( ) { this . onDestroy$ . next ( true ) ; this . onDestroy$ . complete ( ) ; } trackByActionId ( _ , action ) { return action . id ; } }