VideoDetails,
VideoService
} from '../shared-main'
+import { LiveStreamInformationComponent } from '../shared-video-live'
import { VideoAddToPlaylistComponent } from '../shared-video-playlist'
import { VideoDownloadComponent } from './video-download.component'
report?: boolean
duplicate?: boolean
mute?: boolean
+ liveInfo?: boolean
}
@Component({
@ViewChild('videoDownloadModal') videoDownloadModal: VideoDownloadComponent
@ViewChild('videoReportModal') videoReportModal: VideoReportComponent
@ViewChild('videoBlockModal') videoBlockModal: VideoBlockComponent
+ @ViewChild('liveStreamInformationModal') liveStreamInformationModal: LiveStreamInformationComponent
@Input() video: Video | VideoDetails
@Input() videoCaptions: VideoCaption[] = []
delete: true,
report: true,
duplicate: true,
- mute: true
+ mute: true,
+ liveInfo: false
}
@Input() placement = 'left'
ngOnChanges () {
if (this.loaded) {
this.loaded = false
- this.playlistAdd.reload()
+ if (this.playlistAdd) this.playlistAdd.reload()
}
this.buildActions()
this.videoBlockModal.show()
}
+ showLiveInfoModal (video: Video) {
+ this.modalOpened.emit()
+
+ this.liveStreamInformationModal.show(video)
+ }
+
/* Actions checker */
isVideoUpdatable () {
return this.video.isUnblockableBy(this.user)
}
+ isVideoLiveInfoAvailable () {
+ return this.video.isLiveInfoAvailableBy(this.user)
+ }
+
isVideoDownloadable () {
return this.video &&
this.video.isLive !== true &&
}
canVideoBeDuplicated () {
- return this.video.canBeDuplicatedBy(this.user)
+ return !this.video.isLive && this.video.canBeDuplicatedBy(this.user)
}
isVideoAccountMutable () {
if (res === false) return
this.videoBlocklistService.unblockVideo(this.video.id)
- .subscribe(
- () => {
+ .subscribe({
+ next: () => {
this.notifier.success($localize`Video ${this.video.name} unblocked.`)
this.video.blacklisted = false
this.videoUnblocked.emit()
},
- err => this.notifier.error(err.message)
- )
+ error: err => this.notifier.error(err.message)
+ })
}
async removeVideo () {
if (res === false) return
this.videoService.removeVideo(this.video.id)
- .subscribe(
- () => {
+ .subscribe({
+ next: () => {
this.notifier.success($localize`Video ${this.video.name} deleted.`)
this.videoRemoved.emit()
},
- error => this.notifier.error(error.message)
- )
+ error: err => this.notifier.error(err.message)
+ })
}
duplicateVideo () {
this.redundancyService.addVideoRedundancy(this.video)
- .subscribe(
- () => {
+ .subscribe({
+ next: () => {
const message = $localize`This video will be duplicated by your instance.`
this.notifier.success(message)
},
- err => this.notifier.error(err.message)
- )
+ error: err => this.notifier.error(err.message)
+ })
}
muteVideoAccount () {
const params = { nameWithHost: Actor.CREATE_BY_STRING(this.video.account.name, this.video.account.host) }
this.blocklistService.blockAccountByUser(params)
- .subscribe(
- () => {
+ .subscribe({
+ next: () => {
this.notifier.success($localize`Account ${params.nameWithHost} muted.`)
this.videoAccountMuted.emit()
},
- err => this.notifier.error(err.message)
- )
+ error: err => this.notifier.error(err.message)
+ })
}
onVideoBlocked () {
isDisplayed: () => this.displayOptions.download && this.isVideoDownloadable(),
iconName: 'download'
},
+ {
+ label: $localize`Display live information`,
+ handler: ({ video }) => this.showLiveInfoModal(video),
+ isDisplayed: () => this.displayOptions.liveInfo && this.isVideoLiveInfoAvailable(),
+ iconName: 'live'
+ },
{
label: $localize`Update`,
linkBuilder: ({ video }) => [ '/videos/update', video.uuid ],