components_quickConnect_QuickConnect.bs

import "pkg:/source/api/baseRequest.bs"
import "pkg:/source/api/userAuth.bs"
import "pkg:/source/roku_modules/log/LogMixin.brs"
import "pkg:/source/utils/config.bs"

sub init()
  m.log = new log.Logger("QuickConnect")
  m.top.functionName = "monitorQuickConnect"
end sub

sub monitorQuickConnect()
  m.log.debug("Polling Quick Connect approval status")
  authenticated = checkQuickConnect(m.top.secret)

  if authenticated = true
    m.log.info("Quick Connect approved on server - exchanging secret for auth token")
    loggedIn = AuthenticateViaQuickConnect(m.top.secret)
    if loggedIn
      currentUser = AboutMe()
      ' Hydrate in-memory user state only. The post-auth save-credentials prompt
      ' in QuickConnectDialog decides whether to persist the token to registry.
      user.Login(currentUser, false)
      user.LoadUserPreferences()
      m.log.info("Quick Connect authentication succeeded")
      m.top.authenticated = 1
      return
    end if
    m.log.warn("Quick Connect token exchange failed after server approval")
  else
    m.log.debug("Quick Connect not yet approved - dialog will resume polling")
  end if

  m.top.authenticated = -1
end sub