components_mediaPlayers_AudioPlayer.bs
import "pkg:/source/api/ApiClient.bs"
import "pkg:/source/api/apiPool.bs"
import "pkg:/source/utils/misc.bs"
sub init()
m.isPlayReported = false
m.top.observeField("state", "audioStateChanged")
end sub
' State Change Event Handler
sub audioStateChanged()
currentState = LCase(m.top.state)
reportedPlaybackState = "update"
m.top.disableScreenSaver = (currentState = "playing")
if currentState = "playing" and not m.isPlayReported
reportedPlaybackState = "start"
m.isPlayReported = true
else if currentState = "stopped" or currentState = "finished"
reportedPlaybackState = "stop"
m.isPlayReported = false
end if
reportPlayback(reportedPlaybackState)
end sub
' Report playback to server
sub reportPlayback(state as string)
if not isValid(m.top.position) then return
params = {
"ItemId": m.global.queueManager.callFunc("getCurrentItem").id,
"PlaySessionId": m.top.content.id,
"PositionTicks": int(m.top.position) * 10000000&, 'Ensure a LongInteger is used
"IsPaused": (LCase(m.top.state) = "paused")
}
' Report playstate via side-effect task
req = GetApi().BuildPlaystateRequest(state, params)
SubmitSideEffect(req)
end sub