From 20d211990425af8d9bb5c8eba204d2b485bcd19a Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Sun, 2 Sep 2018 20:54:23 +0200 Subject: add like, dislike and subscribe button hotkeys --- .../+video-channels/video-channels.component.html | 2 +- .../+video-channels/video-channels.component.ts | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) (limited to 'client/src/app/+video-channels') diff --git a/client/src/app/+video-channels/video-channels.component.html b/client/src/app/+video-channels/video-channels.component.html index e5a32dc92..8d6f81e1b 100644 --- a/client/src/app/+video-channels/video-channels.component.html +++ b/client/src/app/+video-channels/video-channels.component.html @@ -9,7 +9,7 @@
{{ videoChannel.displayName }}
{{ videoChannel.nameWithHost }}
- +
{{ videoChannel.followersCount }} subscribers
diff --git a/client/src/app/+video-channels/video-channels.component.ts b/client/src/app/+video-channels/video-channels.component.ts index ee2c86915..82b4a345e 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,13 +6,18 @@ 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' @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 @@ -20,7 +25,8 @@ export class VideoChannelsComponent implements OnInit, OnDestroy { private route: ActivatedRoute, private authService: AuthService, private videoChannelService: VideoChannelService, - private restExtractor: RestExtractor + private restExtractor: RestExtractor, + private hotkeysService: HotkeysService ) { } ngOnInit () { @@ -33,10 +39,22 @@ export class VideoChannelsComponent implements OnInit, OnDestroy { ) .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, '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 () { -- cgit v1.2.3