]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/standalone/videos/embed.ts
Add ability to set a start time
[github/Chocobozzz/PeerTube.git] / client / src / standalone / videos / embed.ts
index 739ed5f457c62055399bf8d9b62c3906893f0479..a99bc586fd71de6dd4251684d05e31f82822b46d 100644 (file)
@@ -1,10 +1,9 @@
 import './embed.scss'
 
 import * as videojs from 'video.js'
-import 'videojs-hotkeys'
-import '../../assets/player/peertube-videojs-plugin'
-import 'videojs-dock/dist/videojs-dock.es.js'
+
 import { VideoDetails } from '../../../../shared'
+import { getVideojsOptions } from '../../assets/player/peertube-player'
 
 function getVideoUrl (id: string) {
   return window.location.origin + '/api/v1/videos/' + id
@@ -20,53 +19,41 @@ const videoId = urlParts[urlParts.length - 1]
 
 loadVideoInfo(videoId)
   .then(videoInfo => {
-    const videoElement = document.getElementById('video-container') as HTMLVideoElement
-    const previewUrl = window.location.origin + videoInfo.previewPath
-    videoElement.poster = previewUrl
-
-    const videojsOptions = {
-      controls: true,
-      autoplay: false,
-      plugins: {
-        peertube: {
-          videoFiles: videoInfo.files,
-          playerElement: videoElement,
-          videoViewUrl: getVideoUrl(videoId) + '/views',
-          videoDuration: videoInfo.duration
-        },
-        hotkeys: {
-          enableVolumeScroll: false
-        }
-      },
-      controlBar: {
-        children: [
-          'playToggle',
-          'currentTimeDisplay',
-          'timeDivider',
-          'durationDisplay',
-          'liveDisplay',
-
-          'flexibleWidthSpacer',
-          'progressControl',
+    const videoContainerId = 'video-container'
 
-          'webTorrentButton',
+    const videoElement = document.getElementById(videoContainerId) as HTMLVideoElement
+    let autoplay = false
+    let startTime = 0
 
-          'muteToggle',
-          'volumeControl',
+    try {
+      let params = new URL(window.location.toString()).searchParams
+      autoplay = params.has('autoplay') && (params.get('autoplay') === '1' || params.get('autoplay') === 'true')
 
-          'resolutionMenuButton',
-          'peerTubeLinkButton',
-
-          'fullscreenToggle'
-        ]
-      }
+      const startTimeParamString = params.get('start')
+      const startTimeParamNumber = parseInt(startTimeParamString, 10)
+      if (isNaN(startTimeParamNumber) === false) startTime = startTimeParamNumber
+    } catch (err) {
+      console.error('Cannot get params from URL.', err)
     }
-    videojs('video-container', videojsOptions, function () {
+
+    const videojsOptions = getVideojsOptions({
+      autoplay,
+      inactivityTimeout: 1500,
+      videoViewUrl: getVideoUrl(videoId) + '/views',
+      playerElement: videoElement,
+      videoFiles: videoInfo.files,
+      videoDuration: videoInfo.duration,
+      enableHotkeys: true,
+      peertubeLink: true,
+      poster: window.location.origin + videoInfo.previewPath,
+      startTime
+    })
+    videojs(videoContainerId, videojsOptions, function () {
       const player = this
 
       player.dock({
         title: videoInfo.name,
-        description: 'Use P2P, other may know you are watching that video.'
+        description: 'Uses P2P, others may know you are watching this video.'
       })
     })
   })