Joost Klitsie
10/29/2020, 6:27 PM<ReactPlayer
config={{
file: {
hlsOptions: {
forceHLS: true,
debug: false,
xhrSetup: function(xhr, url) {
if (needsAuth(url)) {
xhr.setRequestHeader('Authorization', getToken())
}
},
},
},
}}
/>
I saw the things on https://play.kotlinlang.org/hands-on/Building%20Web%20Applications%20with%20React%20and%20Kotlin%20JS/07_Using_Packages_From_NPM but I can't wrap my head around itJoost Klitsie
10/29/2020, 6:31 PM@file:JsModule("react-player")
@file:JsNonModule
import org.w3c.xhr.XMLHttpRequest
import react.*
@JsName("default")
external val reactPlayer: RClass<ReactPlayerProps>
external interface ReactPlayerProps : RProps {
var url: String
var controls: Boolean
var config: ReactPlayerConfig
}
@JsName("config")
external interface ReactPlayerConfig: RProps {
var file: FileConfig
}
@JsName("file")
external class FileConfig {
var hlsOptions: HlsOptions
}
@JsName("hlsOptions")
external class HlsOptions {
var forceHLS: Boolean
var debug: Boolean
var xhrSetup: (XMLHttpRequest, String) -> Unit
}
andylamax
10/30/2020, 7:48 AMJoost Klitsie
10/30/2020, 11:20 AMJoost Klitsie
10/30/2020, 11:20 AMJoost Klitsie
10/30/2020, 11:20 AMJoost Klitsie
10/30/2020, 11:20 AM@file:JsModule("react-player")
@file:JsNonModule
package com.klitsie.pubquiz.app.component.edit
import react.*
@JsName("default")
external val reactPlayer: RClass<ReactPlayerProps>
external interface ReactPlayerProps : RProps {
var url: String
var controls: Boolean
var config: Config?
}
@JsName("Config")
external interface Config {
var file: FileConfig?
}
@JsName("FileConfig")
external interface FileConfig {
var forceHLS: Boolean
var hlsOptions: HlsConfig
}
Joost Klitsie
10/30/2020, 11:20 AM@file:JsModule("hls.js")
@file:JsNonModule
package com.klitsie.pubquiz.app.component.edit
import org.w3c.xhr.XMLHttpRequest
@JsName("HlsConfig")
external interface HlsConfig {
var debug: Boolean
var xhrSetup: (xhr: XMLHttpRequest, url: String) -> Unit
}
Joost Klitsie
10/30/2020, 11:21 AMval token = tokenMemoryStorage.value.value ?: "NO_TOKEN"
reactPlayer {
attrs.url = "<https://127.0.0.1:8442/content/video/adnovum_video.mp4>"
val hlsOptions = object: HlsConfig {
override var debug: Boolean = true
override var xhrSetup = { xhr: XMLHttpRequest, _: String ->
xhr.setRequestHeader("Authorization", "bearer $token")
}
}
attrs.config =
object : Config {
override var file: FileConfig? = object: FileConfig {
override var forceHLS: Boolean = true
override var hlsOptions: HlsConfig = hlsOptions
}
}
}
Joost Klitsie
10/30/2020, 11:21 AMimplementation(npm("react-player", "2.6.2"))
implementation(npm("hls.js", "0.14.16"))
Joost Klitsie
10/30/2020, 11:21 AMJoost Klitsie
10/30/2020, 11:21 AMJoost Klitsie
10/30/2020, 11:21 AMJoost Klitsie
10/30/2020, 11:21 AM