Reset playlist add component when video changes

pull/1935/head
Chocobozzz 2019-05-17 14:34:21 +02:00
parent 67c687236f
commit 1c8ddbfaa0
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 48 additions and 21 deletions

View File

@ -1,4 +1,4 @@
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } from '@angular/core' import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core'
import { VideoPlaylistService } from '@app/shared/video-playlist/video-playlist.service' import { VideoPlaylistService } from '@app/shared/video-playlist/video-playlist.service'
import { AuthService, Notifier } from '@app/core' import { AuthService, Notifier } from '@app/core'
import { forkJoin } from 'rxjs' import { forkJoin } from 'rxjs'
@ -22,7 +22,7 @@ type PlaylistSummary = {
templateUrl: './video-add-to-playlist.component.html', templateUrl: './video-add-to-playlist.component.html',
changeDetection: ChangeDetectionStrategy.OnPush changeDetection: ChangeDetectionStrategy.OnPush
}) })
export class VideoAddToPlaylistComponent extends FormReactive implements OnInit { export class VideoAddToPlaylistComponent extends FormReactive implements OnInit, OnChanges {
@Input() video: Video @Input() video: Video
@Input() currentVideoTimestamp: number @Input() currentVideoTimestamp: number
@Input() lazyLoad = false @Input() lazyLoad = false
@ -54,15 +54,33 @@ export class VideoAddToPlaylistComponent extends FormReactive implements OnInit
} }
ngOnInit () { ngOnInit () {
this.resetOptions(true)
this.buildForm({ this.buildForm({
displayName: this.videoPlaylistValidatorsService.VIDEO_PLAYLIST_DISPLAY_NAME displayName: this.videoPlaylistValidatorsService.VIDEO_PLAYLIST_DISPLAY_NAME
}) })
this.init()
}
ngOnChanges (simpleChanges: SimpleChanges) {
if (simpleChanges['video']) {
this.unload()
}
}
init () {
this.resetOptions(true)
if (this.lazyLoad !== true) this.load() if (this.lazyLoad !== true) this.load()
} }
unload () {
this.videoPlaylists = []
this.init()
this.cd.markForCheck()
}
load () { load () {
forkJoin([ forkJoin([
this.videoPlaylistService.listAccountPlaylists(this.user.account, '-updatedAt'), this.videoPlaylistService.listAccountPlaylists(this.user.account, '-updatedAt'),

View File

@ -79,6 +79,11 @@ export class VideoActionsDropdownComponent implements OnChanges {
} }
ngOnChanges () { ngOnChanges () {
if (this.loaded) {
this.loaded = false
this.playlistAdd.unload()
}
this.buildActions() this.buildActions()
} }

View File

@ -119,23 +119,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
if (videoId) this.loadVideo(videoId) if (videoId) this.loadVideo(videoId)
}) })
this.hotkeys = [ this.initHotkeys()
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 () { ngOnDestroy () {
@ -565,4 +549,24 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
this.player = undefined this.player = undefined
} }
} }
private initHotkeys () {
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)
}
} }