jf-roku/components/quickConnect/QuickConnectDialog.bs
2023-11-11 11:05:21 -05:00

72 lines
2.2 KiB
Plaintext

import "pkg:/source/api/userauth.bs"
import "pkg:/source/api/baserequest.bs"
import "pkg:/source/utils/config.bs"
import "pkg:/source/utils/session.bs"
sub init()
m.quickConnectTimer = m.top.findNode("quickConnectTimer")
m.quickConnectTimer.observeField("fire", "quickConnectStatus")
m.quickConnectTimer.control = "start"
m.top.observeFieldScoped("buttonSelected", "onButtonSelected")
end sub
sub quickConnectStatus()
m.quickConnectTimer.control = "stop"
m.checkTask = CreateObject("roSGNode", "QuickConnect")
m.checkTask.secret = m.top.quickConnectJson.secret
m.checkTask.observeField("authenticated", "OnAuthenticated")
m.checkTask.control = "run"
end sub
sub OnAuthenticated()
m.checkTask.unobserveField("authenticated")
' Did we get the A-OK to authenticate?
authenticated = m.checkTask.authenticated
if authenticated < 0
' Still waiting, check again in 3 seconds...
authenticated = 0
m.checkTask.observeField("authenticated", "OnAuthenticated")
m.quickConnectTimer.control = "start"
else if authenticated > 0
' We've been given the go ahead, try to authenticate via Quick Connect...
authenticated = AuthenticateViaQuickConnect(m.top.quickConnectJson.secret)
if authenticated <> invalid and authenticated = true
currentUser = AboutMe()
session.user.Login(currentUser, m.top.saveCredentials)
session.user.LoadUserPreferences()
LoadUserAbilities()
m.top.close = true
m.top.authenticated = true
else
m.top.close = true
m.top.authenticated = false
end if
end if
end sub
sub quickConnectClosed()
m.quickConnectTimer.control = "stop"
if m.checkTask <> invalid
m.checkTask.unobserveField("authenticated")
end if
m.top.close = true
end sub
sub onButtonSelected()
' only one button at the moment...
quickConnectClosed()
end sub
function onKeyEvent(key as string, press as boolean) as boolean
if not press then return false
' Note that "OK" does not get sent here, hence onButtonSelected() above.
if key = "back"
quickConnectClosed()
return true
end if
return false
end function