57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
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)
|
|
})
|
|
}
|
|
|
|
}
|