]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/videos/+video-watch/modal/video-share.component.ts
Merge branch 'feature/correctly-send-activities' into develop
[github/Chocobozzz/PeerTube.git] / client / src / app / videos / +video-watch / modal / video-share.component.ts
index 678cccfb5dfcc0557909850b04a60be677070a6e..c6205e355ca53076f14e7eb454a3af96901b8ad5 100644 (file)
@@ -1,9 +1,10 @@
-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 { VideoDetails } from '../../../shared/video/video-details.model'
+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',
 
 @Component({
   selector: 'my-video-share',
@@ -11,31 +12,36 @@ import { VideoDetails } from '../../../shared/video/video-details.model'
   styleUrls: [ './video-share.component.scss' ]
 })
 export class VideoShareComponent {
   styleUrls: [ './video-share.component.scss' ]
 })
 export class VideoShareComponent {
+  @ViewChild('modal') modal: ElementRef
+
   @Input() video: VideoDetails = null
 
   @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 () {
   }
 
   getVideoIframeCode () {
-    return '<iframe width="560" height="315" ' +
-           'src="' + this.video.embedUrl + '" ' +
-           'frameborder="0" allowfullscreen>' +
-           '</iframe>'
+    const embedUrl = buildVideoLink(this.getVideoTimestampIfEnabled(), this.video.embedUrl)
+
+    return buildVideoEmbed(embedUrl)
   }
 
   getVideoUrl () {
   }
 
   getVideoUrl () {
-    return window.location.href
+    return buildVideoLink(this.getVideoTimestampIfEnabled())
   }
 
   notSecure () {
   }
 
   notSecure () {
@@ -43,6 +49,16 @@ export class VideoShareComponent {
   }
 
   activateCopiedMessage () {
   }
 
   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
   }
 }
   }
 }