2017-09-26 01:55:58 +00:00
|
|
|
window.StreamablePlayer = class StreamablePlayer extends PlayerJSPlayer
|
|
|
|
constructor: (data) ->
|
|
|
|
if not (this instanceof StreamablePlayer)
|
|
|
|
return new StreamablePlayer(data)
|
|
|
|
|
|
|
|
super(data)
|
|
|
|
|
|
|
|
load: (data) ->
|
2022-01-28 15:18:10 +00:00
|
|
|
@ready = false
|
|
|
|
@finishing = false
|
|
|
|
@setMediaProperties(data)
|
2017-09-26 01:55:58 +00:00
|
|
|
|
2022-01-28 15:18:10 +00:00
|
|
|
waitUntilDefined(window, 'playerjs', =>
|
|
|
|
iframe = $('<iframe/>')
|
|
|
|
.attr(
|
|
|
|
src: "https://streamable.com/e/#{data.id}"
|
|
|
|
allow: 'autoplay; fullscreen'
|
|
|
|
)
|
|
|
|
|
|
|
|
removeOld(iframe)
|
|
|
|
@setupPlayer(iframe[0])
|
|
|
|
@player.on('ready', =>
|
|
|
|
# Streamable does not implement ended event since it loops
|
|
|
|
# gotta use a timeupdate hack
|
|
|
|
@player.on('timeupdate', (time) =>
|
|
|
|
if time.duration - time.seconds < 1 and not @finishing
|
|
|
|
setTimeout(=>
|
|
|
|
if CLIENT.leader
|
|
|
|
socket.emit('playNext')
|
|
|
|
@pause()
|
|
|
|
, (time.duration - time.seconds) * 1000)
|
|
|
|
@finishing = true
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|