package Ġcom . q on version . android . sdk . autom ations Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent . FLAG _ ACTIVITY _ NEW _ TASK Ċ import Ġandroid . content . SharedPreferences Ċ import Ġcom . q on version . android . sdk . Constants . PENDING _ PUSH _ TOKEN _ KEY Ċ import Ġcom . q on version . android . sdk . Constants . PUSH _ TOKEN _ KEY Ċ import Ġcom . q on version . android . sdk . Q on version Ċ import Ġcom . q on version . android . sdk . Q on version Error Ċ import Ġcom . q on version . android . sdk . Q on version ErrorCode Ċ import Ġcom . q on version . android . sdk . Q on version Repository Ċ import Ġcom . q on version . android . sdk . Q on version Show Screen Callback Ċ import Ġcom . q on version . android . sdk . billing . to Boolean Ċ import Ġcom . q on version . android . sdk . logger . Console Logger Ċ import Ġcom . q on version . android . sdk . autom ations . mvp . Screen Activity Ċ import Ġjava . lang . Exception Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠQ Autom ations Manager Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠQ on version Repository , ĊĠĠĠ Ġprivate Ġval Ġpreferences : ĠSharedPreferences , ĊĠĠĠ Ġprivate Ġval Ġevent Mapper : ĠAutom ations Event Mapper , ĊĠĠĠ Ġprivate Ġval Ġapp Context : ĠApplication Ċ ) Ġ{ ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġvar Ġautom ations Delegate : ĠWeak Reference < Autom ations Delegate >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ@ Synchron ized Ġset ĊĠĠĠĠĠĠĠ Ġ@ Synchron ized Ġget ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠConsole Logger () ĊĠĠĠ Ġprivate Ġvar Ġpending Token : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġon App Foreground () Ġ{ ĊĠĠĠĠĠĠĠ Ġpending Token ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Push Token ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandle Push If Possible ( message Data : ĠMap < String , ĠString >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpick Screen Ġ= Ġmessage Data [ P ICK _ SCREEN ] ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpick Screen . to Boolean (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . release (" handle Push If Possible () Ġ-> ĠQ on version Ġpush Ġnotification Ġwas Ġreceived ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġshould Show Screen Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġevent Mapper . getEvent From Remote Message ( message Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Show Screen Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġautom ations Delegate ?. get ()?. should Handle Event ( event , Ġmessage Data ) Ġ?: Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Show Screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Screen If Possible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Push Token ( token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Token Ġ= Ġload Token () ĊĠĠĠĠĠĠĠ Ġif Ġ( token . isNotEmpty () Ġ&& Ġ! old Token . equals ( token )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Pending Token To Pref ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Q on version . app State . is Background ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpending Token Ġ= Ġtoken ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Push Token ( token ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Screen ( screen Id : ĠString , Ġcallback : ĠQ on version Show Screen Callback ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . screens ( screen Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġscreen Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġautom ations Delegate ?. get ()?. context For Screen Intent () Ġ?: Ġapp Context ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠScreen Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Screen Activity . INT ENT _ HTML _ PAGE , Ġscreen . html Page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Screen Activity . INT ENT _ SCREEN _ ID , Ġscreen Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context Ġ! is ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" load Screen () Ġ-> ĠScreen Ġintent Ġwill Ġprocess Ġwith Ġa Ġnon - Activity Ġcontext ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġ" Failed Ġto Ġstart Ġscreen Ġwith Ġid Ġ$ screen Id Ġwith Ġexception : Ġ$ e " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . release (" load Screen () Ġ-> Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. onError ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ on version Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠQ on version ErrorCode . Unknown Error , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġload Ġscreen Ġwith Ġid Ġ$ screen Id . Ġ${ it . additional Message }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . release (" load Screen () Ġ-> Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. onError ( Q on version Error ( it . code , ĠerrorMessage )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġautom ations Did Start Executing ( action Result : ĠQ ActionResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġautom ations Delegate ?. get ()?. autom ations Did Start Executing ( action Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġlog Delegate Error For FunctionName ( object Ġ{} . java Class . enc lo sing Method ?. name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġautom ations Did Fail Executing ( action Result : ĠQ ActionResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġautom ations Delegate ?. get ()?. autom ations Did Fail Executing ( action Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġlog Delegate Error For FunctionName ( object Ġ{} . java Class . enc lo sing Method ?. name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġautom ations Did Finish Executing ( action Result : ĠQ ActionResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġautom ations Delegate ?. get ()?. autom ations Did Finish Executing ( action Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġlog Delegate Error For FunctionName ( object Ġ{} . java Class . enc lo sing Method ?. name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġautom ations Did Show Screen ( screen Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġautom ations Delegate ?. get ()?. autom ations Did Show Screen ( screen Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġlog Delegate Error For FunctionName ( object Ġ{} . java Class . enc lo sing Method ?. name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġautom ations Finished () Ġ{ ĊĠĠĠĠĠĠĠ Ġautom ations Delegate ?. get ()?. autom ations Finished () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġlog Delegate Error For FunctionName ( object Ġ{} . java Class . enc lo sing Method ?. name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog Delegate Error For FunctionName ( function Name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . release (" Autom ations Delegate .$ function Name () Ġfunction Ġcan Ġnot Ġbe Ġexecuted . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" It Ġlooks Ġlike ĠAutom ations . set Delegate () Ġwas Ġnot Ġcalled Ġor Ġdelegate Ġhas Ġbeen Ġdestroyed Ġby ĠGC ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Screen If Possible () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . action Points ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget QueryParams (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġaction Point Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Point ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" load Screen If Possible () Ġ-> Ġ ĠScreen Ġwith Ġid Ġ${ it . screen Id } Ġwas Ġfound Ġto Ġshow ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Screen ( it . screen Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġlogger . release (" load Screen If Possible () Ġ-> Ġ ĠNo Ġscreens Ġto Ġshow ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug (" load Screen If Possible () Ġ-> ĠFailed Ġto Ġretrieve Ġscreen Id Ġto Ġshow ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget QueryParams (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQUERY _ PARAM _ TYPE Ġto ĠQUERY _ PARAM _ TYPE _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQUERY _ PARAM _ ACTIVE Ġto ĠQUERY _ PARAM _ ACTIVE _ VALUE . toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Push Token ( token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . set Push Token ( token ) ĊĊĠĠĠĠĠĠĠ Ġpending Token Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Pending Token To Pref ( token : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġpreferences . edit (). putString ( PENDING _ PUSH _ TOKEN _ KEY , Ġtoken ). apply () ĊĊĠĠĠ Ġprivate Ġfun Ġload Token () Ġ= Ġpreferences . getString ( PUSH _ TOKEN _ KEY , Ġ"") ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP ICK _ SCREEN Ġ= Ġ" q on v . pick _ screen " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠQUERY _ PARAM _ TYPE Ġ= Ġ" type " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠQUERY _ PARAM _ ACTIVE Ġ= Ġ" active " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠQUERY _ PARAM _ TYPE _ VALUE Ġ= Ġ" screen _ view " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠQUERY _ PARAM _ ACTIVE _ VALUE Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ } Ċ