]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Fix broken player on live reload
authorChocobozzz <me@florianbigard.com>
Mon, 24 Oct 2022 08:32:35 +0000 (10:32 +0200)
committerChocobozzz <me@florianbigard.com>
Mon, 24 Oct 2022 08:32:35 +0000 (10:32 +0200)
client/src/standalone/videos/embed.ts
client/src/standalone/videos/shared/live-manager.ts

index 5384ada1cd23e5f11607ce68bea316dff641ef00..451e548403ab2300eed4374c81790d8e82e74ffb 100644 (file)
@@ -259,6 +259,7 @@ export class PeerTubeEmbed {
 
     if (this.player) {
       this.player.dispose()
+      this.player = undefined
       alreadyHadPlayer = true
     }
 
index 422d39793ccbf91ad19aea4c095b94a96d62f840..ec11d0b61a628f7788a75403a42411c3ef646779 100644 (file)
@@ -6,6 +6,8 @@ import { Translations } from './translations'
 export class LiveManager {
   private liveSocket: Socket
 
+  private listeners = new Map<string, (payload: LiveVideoEventPayload) => void>()
+
   constructor (
     private readonly playerHTML: PlayerHTML
   ) {
@@ -26,18 +28,26 @@ export class LiveManager {
       this.liveSocket = io(window.location.origin + '/live-videos')
     }
 
-    this.liveSocket.on('state-change', (payload: LiveVideoEventPayload) => {
+    const listener = (payload: LiveVideoEventPayload) => {
       if (payload.state === VideoState.PUBLISHED) {
         this.playerHTML.removeInformation()
         onPublishedVideo()
         return
       }
-    })
+    }
+
+    this.liveSocket.on('state-change', listener)
+    this.listeners.set(video.uuid, listener)
 
     this.liveSocket.emit('subscribe', { videoId: video.id })
   }
 
   stopListeningForChanges (video: VideoDetails) {
+    const listener = this.listeners.get(video.uuid)
+    if (listener) {
+      this.liveSocket.off('state-change', listener)
+    }
+
     this.liveSocket.emit('unsubscribe', { videoId: video.id })
   }