-import { Component, Input, ViewChild } from '@angular/core'
-
-import { NotificationsService } from 'angular2-notifications'
-
-import { ModalDirective } from 'ngx-bootstrap/modal'
+import { Component, ElementRef, Input, ViewChild } from '@angular/core'
+import { Notifier } from '@app/core'
import { VideoDetails } from '../../../shared/video/video-details.model'
-import { buildVideoEmbed } from '../../../../assets/player/utils'
+import { buildVideoEmbed, buildVideoLink } from '../../../../assets/player/utils'
+import { I18n } from '@ngx-translate/i18n-polyfill'
+import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
+import { durationToString } from '@app/shared/misc/utils'
@Component({
selector: 'my-video-share',
styleUrls: [ './video-share.component.scss' ]
})
export class VideoShareComponent {
+ @ViewChild('modal') modal: ElementRef
+
@Input() video: VideoDetails = null
- @ViewChild('modal') modal: ModalDirective
+ startAtCheckbox = false
+ currentVideoTimestampString: string
- constructor (private notificationsService: NotificationsService) {
- // empty
- }
+ private currentVideoTimestamp: number
- show () {
- this.modal.show()
- }
+ constructor (
+ private modalService: NgbModal,
+ private notifier: Notifier,
+ private i18n: I18n
+ ) { }
+
+ show (currentVideoTimestamp?: number) {
+ this.currentVideoTimestamp = Math.floor(currentVideoTimestamp)
+ this.currentVideoTimestampString = durationToString(this.currentVideoTimestamp)
- hide () {
- this.modal.hide()
+ this.modalService.open(this.modal)
}
getVideoIframeCode () {
- return buildVideoEmbed(this.video.embedUrl)
+ const embedUrl = buildVideoLink(this.getVideoTimestampIfEnabled(), this.video.embedUrl)
+
+ return buildVideoEmbed(embedUrl)
}
getVideoUrl () {
- return window.location.href
+ return buildVideoLink(this.getVideoTimestampIfEnabled())
}
notSecure () {
}
activateCopiedMessage () {
- this.notificationsService.success('Success', 'Copied')
+ this.notifier.success(this.i18n('Copied'))
+ }
+
+ getStartCheckboxLabel () {
+ return this.i18n('Start at {{timestamp}}', { timestamp: this.currentVideoTimestampString })
+ }
+
+ private getVideoTimestampIfEnabled () {
+ if (this.startAtCheckbox === true) return this.currentVideoTimestamp
+
+ return undefined
}
}