Use fetch instead of XMLHttpRequest (#292)
authorFlorent F <florent.fayolle69@gmail.com>
Wed, 14 Feb 2018 10:02:51 +0000 (11:02 +0100)
committerChocobozzz <me@florianbigard.com>
Wed, 14 Feb 2018 10:02:51 +0000 (11:02 +0100)
client/src/standalone/videos/embed.ts

index 9c672529f35b3dcde7349eb36e3d01bd2faf125c..d0676968e386b2bbebd816b492f9d69b709ba780 100644 (file)
@@ -6,54 +6,42 @@ import '../../assets/player/peertube-videojs-plugin'
 import 'videojs-dock/dist/videojs-dock.es.js'
 import { VideoDetails } from '../../../../shared'
 
-function loadVideoInfo (videoId: string, callback: (err: Error, res?: VideoDetails) => void) {
-  const xhttp = new XMLHttpRequest()
-  xhttp.onreadystatechange = function () {
-    if (this.readyState === 4 && this.status === 200) {
-      const json = JSON.parse(this.responseText)
-      return callback(null, json)
-    }
-  }
-
-  xhttp.onerror = err => callback(err.error)
-
-  const url = window.location.origin + '/api/v1/videos/' + videoId
-  xhttp.open('GET', url, true)
-  xhttp.send()
+async function loadVideoInfo (videoId: string) {
+  const response = await fetch(window.location.origin + '/api/v1/videos/' + videoId)
+  return response.json();
 }
 
 const urlParts = window.location.href.split('/')
 const videoId = urlParts[urlParts.length - 1]
 
-loadVideoInfo(videoId, (err, videoInfo) => {
-  if (err) {
-    console.error(err)
-    return
-  }
-
-  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,
-        peerTubeLink: true
-      },
-      hotkeys: {
-        enableVolumeScroll: false
+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,
+          peerTubeLink: true
+        },
+        hotkeys: {
+          enableVolumeScroll: false
+        }
       }
     }
-  }
-  videojs('video-container', videojsOptions, function () {
-    const player = this
+    videojs('video-container', videojsOptions, function () {
+      const player = this
 
-    player.dock({
-      title: videoInfo.name
+      player.dock({
+        title: videoInfo.name
+      })
     })
   })
-})
+  .catch(err => {
+    console.error(err);
+  })