2020-07-26 23:57:28 -05:00
import QuickConnectSettings from 'quickConnectSettings' ;
import globalize from 'globalize' ;
import toast from 'toast' ;
export default function ( view ) {
let quickConnectSettingsInstance = null ;
view . addEventListener ( 'viewshow' , function ( ) {
let codeElement = view . querySelector ( '#txtQuickConnectCode' ) ;
2020-09-03 16:51:15 -05:00
quickConnectSettingsInstance = new QuickConnectSettings ( ) ;
2020-07-26 23:57:28 -05:00
view . querySelector ( '#btnQuickConnectActivate' ) . addEventListener ( 'click' , ( ) => {
quickConnectSettingsInstance . activate ( quickConnectSettingsInstance ) . then ( ( ) => {
renderPage ( ) ;
} ) ;
} ) ;
view . querySelector ( '#btnQuickConnectAuthorize' ) . addEventListener ( 'click' , ( ) => {
if ( ! codeElement . validity . valid ) {
toast ( globalize . translate ( 'QuickConnectInvalidCode' ) ) ;
return ;
}
let code = codeElement . value ;
quickConnectSettingsInstance . authorize ( code ) ;
} ) ;
2020-09-03 16:51:15 -05:00
view . querySelector ( '.quickConnectSettingsContainer' ) . addEventListener ( 'submit' , ( e ) => {
e . preventDefault ( ) ;
} ) ;
2020-07-26 23:57:28 -05:00
renderPage ( ) ;
} ) ;
function renderPage ( forceActive = false ) {
ApiClient . getQuickConnect ( 'Status' ) . then ( ( status ) => {
let btn = view . querySelector ( '#btnQuickConnectActivate' ) ;
let container = view . querySelector ( '.quickConnectSettingsContainer' ) ;
// The activation button should only be visible when quick connect is unavailable (with the text replaced with an error) or when it is available (so it can be activated)
// The authorization container is only usable when quick connect is active, so it should be hidden otherwise
container . style . display = 'none' ;
if ( status === 'Unavailable' ) {
btn . textContent = globalize . translate ( 'QuickConnectNotAvailable' ) ;
btn . disabled = true ;
btn . classList . remove ( 'button-submit' ) ;
btn . classList . add ( 'button' ) ;
} else if ( status === 'Active' || forceActive ) {
container . style . display = '' ;
btn . style . display = 'none' ;
}
return true ;
} ) . catch ( ( e ) => {
throw e ;
} ) ;
}
}