X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Bvideo-channels%2Fvideo-channels.component.ts;h=41ff82e98d6febc285dd3ab284febb0a734ba4ea;hb=c47106315ae3c403239cda29c49b4bba51ddccb2;hp=ee2c86915e50d398de25a0946cebf0a9c760bae0;hpb=2d3741d6d92e9bd1f41694c7442a6d1da434e1f2;p=oweals%2Fpeertube.git diff --git a/client/src/app/+video-channels/video-channels.component.ts b/client/src/app/+video-channels/video-channels.component.ts index ee2c86915..41ff82e98 100644 --- a/client/src/app/+video-channels/video-channels.component.ts +++ b/client/src/app/+video-channels/video-channels.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core' import { ActivatedRoute } from '@angular/router' import { VideoChannel } from '@app/shared/video-channel/video-channel.model' import { VideoChannelService } from '@app/shared/video-channel/video-channel.service' @@ -6,37 +6,57 @@ import { RestExtractor } from '@app/shared' import { catchError, distinctUntilChanged, map, switchMap } from 'rxjs/operators' import { Subscription } from 'rxjs' import { AuthService } from '@app/core' +import { Hotkey, HotkeysService } from 'angular2-hotkeys' +import { SubscribeButtonComponent } from '@app/shared/user-subscription/subscribe-button.component' +import { I18n } from '@ngx-translate/i18n-polyfill' @Component({ templateUrl: './video-channels.component.html', styleUrls: [ './video-channels.component.scss' ] }) export class VideoChannelsComponent implements OnInit, OnDestroy { + @ViewChild('subscribeButton') subscribeButton: SubscribeButtonComponent + videoChannel: VideoChannel + hotkeys: Hotkey[] private routeSub: Subscription constructor ( + private i18n: I18n, private route: ActivatedRoute, private authService: AuthService, private videoChannelService: VideoChannelService, - private restExtractor: RestExtractor + private restExtractor: RestExtractor, + private hotkeysService: HotkeysService ) { } ngOnInit () { this.routeSub = this.route.params .pipe( - map(params => params[ 'videoChannelId' ]), + map(params => params[ 'videoChannelName' ]), distinctUntilChanged(), - switchMap(videoChannelId => this.videoChannelService.getVideoChannel(videoChannelId)), + switchMap(videoChannelName => this.videoChannelService.getVideoChannel(videoChannelName)), catchError(err => this.restExtractor.redirectTo404IfNotFound(err, [ 400, 404 ])) ) .subscribe(videoChannel => this.videoChannel = videoChannel) + this.hotkeys = [ + new Hotkey('S', (event: KeyboardEvent): boolean => { + this.subscribeButton.subscribed ? + this.subscribeButton.unsubscribe() : + this.subscribeButton.subscribe() + return false + }, undefined, this.i18n('Subscribe to the account')) + ] + if (this.isUserLoggedIn()) this.hotkeysService.add(this.hotkeys) } ngOnDestroy () { if (this.routeSub) this.routeSub.unsubscribe() + + // Unbind hotkeys + if (this.isUserLoggedIn()) this.hotkeysService.remove(this.hotkeys) } isUserLoggedIn () {