94 lines
2.7 KiB
TypeScript
94 lines
2.7 KiB
TypeScript
![]() |
import { Component, Input, OnChanges, OnInit, ViewChild } from '@angular/core'
|
||
|
import { RedirectService, ScreenService } from '@app/core'
|
||
|
import { VideoDetails } from '@app/shared/shared-main'
|
||
|
import { VideoShareComponent } from '@app/shared/shared-share-modal'
|
||
|
import { SupportModalComponent } from '@app/shared/shared-support-modal'
|
||
|
import { VideoActionsDisplayType, VideoDownloadComponent } from '@app/shared/shared-video-miniature'
|
||
|
import { VideoPlaylist } from '@app/shared/shared-video-playlist'
|
||
|
import { UserVideoRateType, VideoCaption } from '@shared/models/videos'
|
||
|
|
||
|
@Component({
|
||
|
selector: 'my-action-buttons',
|
||
|
templateUrl: './action-buttons.component.html',
|
||
|
styleUrls: [ './action-buttons.component.scss' ]
|
||
|
})
|
||
|
export class ActionButtonsComponent implements OnInit, OnChanges {
|
||
|
@ViewChild('videoShareModal') videoShareModal: VideoShareComponent
|
||
|
@ViewChild('supportModal') supportModal: SupportModalComponent
|
||
|
@ViewChild('videoDownloadModal') videoDownloadModal: VideoDownloadComponent
|
||
|
|
||
|
@Input() video: VideoDetails
|
||
|
@Input() videoCaptions: VideoCaption[]
|
||
|
@Input() playlist: VideoPlaylist
|
||
|
|
||
|
@Input() isUserLoggedIn: boolean
|
||
|
|
||
|
@Input() currentTime: number
|
||
|
@Input() currentPlaylistPosition: number
|
||
|
|
||
|
likesBarTooltipText = ''
|
||
|
|
||
|
tooltipSupport = ''
|
||
|
tooltipSaveToPlaylist = ''
|
||
|
|
||
|
videoActionsOptions: VideoActionsDisplayType = {
|
||
|
playlist: false,
|
||
|
download: true,
|
||
|
update: true,
|
||
|
blacklist: true,
|
||
|
delete: true,
|
||
|
report: true,
|
||
|
duplicate: true,
|
||
|
mute: true,
|
||
|
liveInfo: true
|
||
|
}
|
||
|
|
||
|
userRating: UserVideoRateType
|
||
|
|
||
|
constructor (
|
||
|
private screenService: ScreenService,
|
||
|
private redirectService: RedirectService
|
||
|
) { }
|
||
|
|
||
|
ngOnInit () {
|
||
|
// Hide the tooltips for unlogged users in mobile view, this adds confusion with the popover
|
||
|
if (this.isUserLoggedIn || !this.screenService.isInMobileView()) {
|
||
|
this.tooltipSupport = $localize`Support options for this video`
|
||
|
this.tooltipSaveToPlaylist = $localize`Save to playlist`
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ngOnChanges () {
|
||
|
this.setVideoLikesBarTooltipText()
|
||
|
}
|
||
|
|
||
|
showDownloadModal () {
|
||
|
this.videoDownloadModal.show(this.video, this.videoCaptions)
|
||
|
}
|
||
|
|
||
|
isVideoDownloadable () {
|
||
|
return this.video && this.video instanceof VideoDetails && this.video.downloadEnabled && !this.video.isLive
|
||
|
}
|
||
|
|
||
|
showSupportModal () {
|
||
|
this.supportModal.show()
|
||
|
}
|
||
|
|
||
|
showShareModal () {
|
||
|
this.videoShareModal.show(this.currentTime, this.currentPlaylistPosition)
|
||
|
}
|
||
|
|
||
|
onRateUpdated (userRating: UserVideoRateType) {
|
||
|
this.userRating = userRating
|
||
|
this.setVideoLikesBarTooltipText()
|
||
|
}
|
||
|
|
||
|
onVideoRemoved () {
|
||
|
this.redirectService.redirectToHomepage()
|
||
|
}
|
||
|
|
||
|
private setVideoLikesBarTooltipText () {
|
||
|
this.likesBarTooltipText = `${this.video.likes} likes / ${this.video.dislikes} dislikes`
|
||
|
}
|
||
|
}
|