Handle playlist without videos available
This commit is contained in:
parent
010382b603
commit
5a2f775a21
|
@ -34,6 +34,10 @@
|
|||
This live has ended.
|
||||
</div>
|
||||
|
||||
<div i18n class="alert alert-warning" *ngIf="noPlaylistVideoFound">
|
||||
There are no videos available in this playlist.
|
||||
</div>
|
||||
|
||||
<div class="alert alert-danger" *ngIf="video?.blacklisted">
|
||||
<div class="blocked-label" i18n>This video is blocked.</div>
|
||||
{{ video.blacklistedReason }}
|
||||
|
|
|
@ -9,6 +9,7 @@ import { VideoState } from '@shared/models'
|
|||
})
|
||||
export class VideoAlertComponent {
|
||||
@Input() video: VideoDetails
|
||||
@Input() noPlaylistVideoFound: boolean
|
||||
|
||||
isVideoToTranscode () {
|
||||
return this.video && this.video.state.id === VideoState.TO_TRANSCODE
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<div
|
||||
*ngIf="playlist && currentPlaylistPosition" class="playlist"
|
||||
*ngIf="playlist && (currentPlaylistPosition || noPlaylistVideos)" class="playlist"
|
||||
myInfiniteScroller [onItself]="true" (nearOfBottom)="onPlaylistVideosNearOfBottom()"
|
||||
>
|
||||
<div class="playlist-info">
|
||||
|
|
|
@ -18,6 +18,7 @@ export class VideoWatchPlaylistComponent {
|
|||
@Input() playlist: VideoPlaylist
|
||||
|
||||
@Output() videoFound = new EventEmitter<string>()
|
||||
@Output() noVideoFound = new EventEmitter<void>()
|
||||
|
||||
playlistElements: VideoPlaylistElement[] = []
|
||||
playlistPagination: ComponentPagination = {
|
||||
|
@ -28,10 +29,11 @@ export class VideoWatchPlaylistComponent {
|
|||
|
||||
autoPlayNextVideoPlaylist: boolean
|
||||
autoPlayNextVideoPlaylistSwitchText = ''
|
||||
|
||||
loopPlaylist: boolean
|
||||
loopPlaylistSwitchText = ''
|
||||
noPlaylistVideos = false
|
||||
|
||||
noPlaylistVideos = false
|
||||
currentPlaylistPosition: number
|
||||
|
||||
constructor (
|
||||
|
@ -100,6 +102,7 @@ export class VideoWatchPlaylistComponent {
|
|||
const firstAvailableVideo = this.playlistElements.find(e => !!e.video)
|
||||
if (!firstAvailableVideo) {
|
||||
this.noPlaylistVideos = true
|
||||
this.noVideoFound.emit()
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -11,12 +11,15 @@
|
|||
<img class="placeholder-image" *ngIf="playerPlaceholderImgSrc" [src]="playerPlaceholderImgSrc" alt="Placeholder image" i18n-alt>
|
||||
</div>
|
||||
|
||||
<my-video-watch-playlist #videoWatchPlaylist [playlist]="playlist" (videoFound)="onPlaylistVideoFound($event)"></my-video-watch-playlist>
|
||||
<my-video-watch-playlist
|
||||
#videoWatchPlaylist [playlist]="playlist"
|
||||
(noVideoFound)="onPlaylistNoVideoFound()" (videoFound)="onPlaylistVideoFound($event)"
|
||||
></my-video-watch-playlist>
|
||||
|
||||
<my-plugin-placeholder pluginId="player-next"></my-plugin-placeholder>
|
||||
</div>
|
||||
|
||||
<my-video-alert [video]="video"></my-video-alert>
|
||||
<my-video-alert [video]="video" [noPlaylistVideoFound]="noPlaylistVideoFound"></my-video-alert>
|
||||
|
||||
<!-- Video information -->
|
||||
<div *ngIf="video" class="margin-content video-bottom">
|
||||
|
|
|
@ -72,6 +72,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
|||
playlist: VideoPlaylist = null
|
||||
|
||||
remoteServerDown = false
|
||||
noPlaylistVideoFound = false
|
||||
|
||||
private nextVideoUUID = ''
|
||||
private nextVideoTitle = ''
|
||||
|
@ -178,6 +179,10 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
|||
this.loadVideo(videoId)
|
||||
}
|
||||
|
||||
onPlaylistNoVideoFound () {
|
||||
this.noPlaylistVideoFound = true
|
||||
}
|
||||
|
||||
isUserLoggedIn () {
|
||||
return this.authService.isLoggedIn()
|
||||
}
|
||||
|
@ -286,6 +291,8 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
|||
private loadPlaylist (playlistId: string) {
|
||||
if (this.isSameElement(this.playlist, playlistId)) return
|
||||
|
||||
this.noPlaylistVideoFound = false
|
||||
|
||||
this.playlistService.getVideoPlaylist(playlistId)
|
||||
.subscribe({
|
||||
next: playlist => {
|
||||
|
|
Loading…
Reference in New Issue