]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/videos/+video-watch/video-watch.component.ts
Fix hotkey translations
[github/Chocobozzz/PeerTube.git] / client / src / app / videos / +video-watch / video-watch.component.ts
index 25643cfded64a9b0fd28ac0eeca563fc632d9686..ea10b22ad021f73e8fa172e16a3e5209bbe2b1fd 100644 (file)
@@ -9,6 +9,7 @@ import { NotificationsService } from 'angular2-notifications'
 import { forkJoin, Subscription } from 'rxjs'
 import * as videojs from 'video.js'
 import 'videojs-hotkeys'
+import { Hotkey, HotkeysService } from 'angular2-hotkeys'
 import * as WebTorrent from 'webtorrent'
 import { UserVideoRateType, VideoCaption, VideoPrivacy, VideoRateType, VideoState } from '../../../../../shared'
 import '../../../assets/player/peertube-videojs-plugin'
@@ -21,6 +22,7 @@ import { VideoDownloadComponent } from './modal/video-download.component'
 import { VideoReportComponent } from './modal/video-report.component'
 import { VideoShareComponent } from './modal/video-share.component'
 import { VideoBlacklistComponent } from './modal/video-blacklist.component'
+import { SubscribeButtonComponent } from '@app/shared/user-subscription/subscribe-button.component'
 import { addContextMenu, getVideojsOptions, loadLocaleInVideoJS } from '../../../assets/player/peertube-player'
 import { ServerService } from '@app/core'
 import { I18n } from '@ngx-translate/i18n-polyfill'
@@ -41,6 +43,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
   @ViewChild('videoReportModal') videoReportModal: VideoReportComponent
   @ViewChild('videoSupportModal') videoSupportModal: VideoSupportComponent
   @ViewChild('videoBlacklistModal') videoBlacklistModal: VideoBlacklistComponent
+  @ViewChild('subscribeButton') subscribeButton: SubscribeButtonComponent
 
   player: videojs.Player
   playerElement: HTMLVideoElement
@@ -55,6 +58,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
   likesBarTooltipText = ''
   hasAlreadyAcceptedPrivacyConcern = false
   remoteServerDown = false
+  hotkeys: Hotkey[]
 
   private videojsLocaleLoaded = false
   private paramsSub: Subscription
@@ -77,6 +81,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
     private redirectService: RedirectService,
     private videoCaptionService: VideoCaptionService,
     private i18n: I18n,
+    private hotkeysService: HotkeysService,
     @Inject(LOCALE_ID) private localeId: string
   ) {}
 
@@ -115,6 +120,24 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
               .catch(err => this.handleError(err))
         })
     })
+
+    this.hotkeys = [
+      new Hotkey('shift+l', (event: KeyboardEvent): boolean => {
+        this.setLike()
+        return false
+      }, undefined, this.i18n('Like the video')),
+      new Hotkey('shift+d', (event: KeyboardEvent): boolean => {
+        this.setDislike()
+        return false
+      }, undefined, this.i18n('Dislike the video')),
+      new Hotkey('shift+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 () {
@@ -122,6 +145,9 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
 
     // Unsubscribe subscriptions
     this.paramsSub.unsubscribe()
+
+    // Unbind hotkeys
+    if (this.isUserLoggedIn()) this.hotkeysService.remove(this.hotkeys)
   }
 
   setLike () {