import { forkJoin } from 'rxjs' import { Component, OnInit } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' import { Video, VideoChannel } from '@app/shared/shared-main' import { SearchService } from '@app/shared/shared-search' @Component({ selector: 'my-remote-interaction', templateUrl: './remote-interaction.component.html', styleUrls: [ './remote-interaction.component.scss' ] }) export class RemoteInteractionComponent implements OnInit { error = '' constructor ( private route: ActivatedRoute, private router: Router, private search: SearchService ) { } ngOnInit () { const uri = this.route.snapshot.queryParams['uri'] if (!uri) { this.error = $localize`URL parameter is missing in URL parameters` return } this.loadUrl(uri) } private loadUrl (uri: string) { forkJoin([ this.search.searchVideos({ search: uri }), this.search.searchVideoChannels({ search: uri }) ]).subscribe(([ videoResult, channelResult ]) => { let redirectUrl: string if (videoResult.data.length !== 0) { const video = videoResult.data[0] redirectUrl = Video.buildWatchUrl(video) } else if (channelResult.data.length !== 0) { const channel = new VideoChannel(channelResult.data[0]) redirectUrl = '/c/' + channel.nameWithHost } else { this.error = $localize`Cannot access to the remote resource` return } this.router.navigateByUrl(redirectUrl) }) } }