Reduce latency when adding a video to playlist

pull/4813/head
Chocobozzz 2022-02-22 11:41:44 +01:00
parent 4edee628a0
commit 89e3de8dc6
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 17 additions and 4 deletions

View File

@ -56,6 +56,8 @@ export class VideoAddToPlaylistComponent extends FormReactive implements OnInit,
private listenToPlaylistChangeSub: Subscription
private playlistsData: CachedPlaylist[] = []
private pendingAddId: number
constructor (
protected formValidatorService: FormValidatorService,
private authService: AuthService,
@ -215,8 +217,9 @@ export class VideoAddToPlaylistComponent extends FormReactive implements OnInit,
}
isPrimaryCheckboxChecked (playlist: PlaylistSummary) {
return playlist.elements.filter(e => e.enabled)
.length !== 0
// Reduce latency when adding a video to a playlist using pendingAddId
return this.pendingAddId === playlist.id ||
playlist.elements.filter(e => e.enabled).length !== 0
}
toggleOptionalRow (playlist: PlaylistSummary) {
@ -367,6 +370,8 @@ export class VideoAddToPlaylistComponent extends FormReactive implements OnInit,
if (element.startTimestamp) body.startTimestamp = element.startTimestamp
if (element.stopTimestamp && element.stopTimestamp !== this.video.duration) body.stopTimestamp = element.stopTimestamp
this.pendingAddId = playlist.id
this.videoPlaylistService.addVideoInPlaylist(playlist.id, body)
.subscribe({
next: res => {
@ -379,9 +384,17 @@ export class VideoAddToPlaylistComponent extends FormReactive implements OnInit,
if (element) element.playlistElementId = res.videoPlaylistElement.id
},
error: err => this.notifier.error(err.message),
error: err => {
this.pendingAddId = undefined
this.cd.markForCheck()
complete: () => this.cd.markForCheck()
this.notifier.error(err.message)
},
complete: () => {
this.pendingAddId = undefined
this.cd.markForCheck()
}
})
}