package Ġ` in `. dragon bra . vap ull a . activity Ċ Ċ import Ġ` in `. dragon bra . jav aste am . util . Strings Ċ import Ġ` in `. dragon bra . vap ull a . R Ċ import Ġ` in `. dragon bra . vap ull a . anim . Auto Parallel Transition Ċ import Ġ` in `. dragon bra . vap ull a . anim . Transition Listener Ċ import Ġ` in `. dragon bra . vap ull a . anim . Vector Anim Compat Ċ import Ġ` in `. dragon bra . vap ull a . extension .* Ċ import Ġ` in `. dragon bra . vap ull a . presenter . Login Presenter Ċ import Ġ` in `. dragon bra . vap ull a . util . Utils Ċ import Ġ` in `. dragon bra . vap ull a . view . Login View Ċ import Ġandroid . graphics . drawable . Anim atable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . support . constraint . Constraint Set Ċ import Ġandroid . support . graphics . drawable . Anim atable 2 Compat Ċ import Ġandroid . support . transition . Transition Ċ import Ġandroid . support . transition . Transition Manager Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġkotlinx . android . synt hetic . main . activity _ login .* Ċ import Ġkotlinx . android . synt hetic . main . login _ button .* Ċ import Ġkotlinx . android . synt hetic . main . login _ error _ text .* Ċ import Ġkotlinx . android . synt hetic . main . login _ loading _ text .* Ċ import Ġkotlinx . android . synt hetic . main . login _ logo _ top .* Ċ import Ġkotlinx . android . synt hetic . main . login _ password .* Ċ import Ġkotlinx . android . synt hetic . main . login _ retry _ button .* Ċ import Ġkotlinx . android . synt hetic . main . login _ steam _ guard .* Ċ import Ġkotlinx . android . synt hetic . main . login _ steam _ guard _ button .* Ċ import Ġkotlinx . android . synt hetic . main . login _ steam _ guard _ cancel .* Ċ import Ġkotlinx . android . synt hetic . main . login _ username .* Ċ import Ġorg . jetbrains . ank o . clear Task Ċ import Ġorg . jetbrains . ank o . intent For Ċ import Ġorg . jetbrains . ank o . new Task Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠLogin Activity Ġ: ĠV ap ull a Base Activity < Login View , ĠLogin Presenter >(), ĠLogin View Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġlogin Presenter : ĠLogin Presenter ĊĊĠĠĠ Ġlateinit Ġvar Ġhandler : ĠHandler ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġv ap ull a (). graph . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĊĠĠĠĠĠĠĠ Ġhandler Ġ= ĠHandler () ĊĊĠĠĠĠĠĠĠ Ġloading Text . set Factory ( Text Switch er . factory ( this )) ĊĠĠĠĠĠĠĠ Ġloading Text . in Animation Ġ= ĠAnimation Utils . load Animation ( this , Ġandroid . R . anim . fade _ in ) ĊĠĠĠĠĠĠĠ Ġloading Text . out Animation Ġ= ĠAnimation Utils . load Animation ( this , Ġandroid . R . anim . fade _ out ) ĊĊĠĠĠĠĠĠĠ Ġlogin . click Ġ{ Ġlogin () Ġ} ĊĊĠĠĠĠĠĠĠ Ġsteam Guard Button . click Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġsteam Guard Input . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code . length Ġ< Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsteam Guard Layout . error Ġ= ĠgetString ( R . string . edit Text Error Steam Guard ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ click ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . hide Keyboard From ( this @ Login Activity , Ġit ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransition Ġ= ĠAuto Parallel Transition () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransition . addListener ( object Ġ: ĠTransition Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition End ( transition : ĠTransition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Loading Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . login ( code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraint Set Ġ= ĠConstraint Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . clone ( this , ĠR . layout . activity _ login _ frame _ loading ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( root Layout , Ġtransition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root Layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġretry Button . click Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Text . setText ( null ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraint Set Ġ= ĠConstraint Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . clone ( this , ĠR . layout . activity _ login _ frame _ loading ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( root Layout , ĠAuto Parallel Transition ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root Layout ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġface Anim Ġ= Ġget Drawable ( R . drawable . animated _ vap ull a _ from _ face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv ap ull a Logo Bottom . setImage Drawable ( face Anim ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠVector Anim Compat . register Animation Callback ( face Anim Ġas ĠAnim atable , Ġobject Ġ: ĠAnim atable 2 Compat . Animation Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( drawable : ĠDrawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ap ull a Logo Top . setImage Drawable ( get Drawable ( R . drawable . vap ull a _ top )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ap ull a Logo Bottom . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ap ull a Logo Middle . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Loading Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . retry () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġface Anim . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsteam Guard Button Cancel . click Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . cancel Steam Guard () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġusername . bind Layout () ĊĠĠĠĠĠĠĠ Ġpassword . bind Layout () ĊĠĠĠĠĠĠĠ Ġsteam Guard Input . bind Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Presenter (): ĠLogin Presenter Ġ= Ġlogin Presenter ĊĊĠĠĠ Ġoverride Ġfun Ġshow Loading ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Text . setText ( text ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Loading ( finished Action : Ġ(() Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtransition Ġ= ĠAuto Parallel Transition () ĊĠĠĠĠĠĠĠ Ġ/* transition . addListener ( object Ġ: ĠTransition Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Transition End ( transition : ĠTransition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Loading Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinished Action ?. invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) */ ĊĊĠĠĠĠĠĠĠ Ġval Ġconstraint Set Ġ= ĠConstraint Set () ĊĠĠĠĠĠĠĠ Ġconstraint Set . clone ( this , ĠR . layout . activity _ login _ frame _ loading ) ĊĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( root Layout , Ġtransition ) ĊĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root Layout ) ĊĊĠĠĠĠĠĠĠ Ġstart Loading Animation () ĊĠĠĠĠĠĠĠ Ġfinished Action ?. invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogin Success () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent For < Home Activity >(). new Task (). clear Task ()) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Steam Guard ( is 2 Fa : ĠBoolean , ĠerrorMessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Loading Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Text . setText ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . text Ġ= ĠerrorMessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Text . setText ( if Ġ( is 2 Fa ) ĠgetString ( R . string . loading Text Steam Guard Mobile ) Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . loading Text Steam Guard Email )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠerrorMessage ?. let Ġ{ ĠR . layout . activity _ login _ frame _ steam guard _ error Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġrun Ġ{ ĠR . layout . activity _ login _ frame _ steam guard Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraint Set Ġ= ĠConstraint Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . clone ( this , Ġlayout ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( root Layout , ĠAuto Parallel Transition ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root Layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Login Form ( errorMessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Loading Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Text . setText ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . text Ġ= ĠerrorMessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Ġ= ĠerrorMessage ?. let Ġ{ ĠR . layout . activity _ login _ frame _ form _ error Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġrun Ġ{ ĠR . layout . activity _ login _ frame _ form Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraint Set Ġ= ĠConstraint Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . clone ( this , Ġlayout ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( root Layout , ĠAuto Parallel Transition ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root Layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Failed Screen () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Loading Animation () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġv ap ull a Logo Bottom . invisible () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv ap ull a Logo Middle . invisible () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġface Anim Ġ= Ġget Drawable ( R . drawable . animated _ vap ull a _ to _ face ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv ap ull a Logo Top . setImage Drawable ( face Anim ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( face Anim Ġas ĠAnim atable ). start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Text . setText ( getString ( R . string . loading Text Failed )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconstraint Set Ġ= ĠConstraint Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . clone ( this , ĠR . layout . activity _ login _ frame _ failed ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( root Layout , ĠAuto Parallel Transition ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconstraint Set . apply To ( root Layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogin () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġusername . text . toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Strings . isNull OrEmpty ( username )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Layout . error Ġ= ĠgetString ( R . string . edit Text Error Username ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword . text . toString () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Strings . isNull OrEmpty ( password )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Layout . error Ġ= ĠgetString ( R . string . edit Text Error Password ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠUtils . hide Keyboard From ( this @ Login Activity , Ġlogin ) ĊĊĠĠĠĠĠĠĠ Ġstart Loading ({ Ġpresenter . login ( username , Ġpassword ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Loading Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġv ap ull a Logo Middle . drawable Ġas ĠAnim atable ĊĠĠĠĠĠĠĠ Ġval Ġd 2 Ġ= Ġv ap ull a Logo Bottom . drawable Ġas ĠAnim atable ĊĊĠĠĠĠĠĠĠ ĠVector Anim Compat . register Animation Callback ( d , Ġobject Ġ: ĠAnim atable 2 Compat . Animation Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( drawable : ĠDrawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd 2 . stop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd 2 . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġd . start () ĊĠĠĠĠĠĠĠ Ġhandler . post Delayed ({ Ġd 2 . start () Ġ}, Ġ 3 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Loading Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler . remove Callbacks And Messages ( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġv ap ull a Logo Middle . drawable Ġas ĠAnim atable ĊĠĠĠĠĠĠĠ Ġval Ġd 2 Ġ= Ġv ap ull a Logo Bottom . drawable Ġas ĠAnim atable ĊĊĠĠĠĠĠĠĠ ĠVector Anim Compat . clear Animation Callbacks ( d ) ĊĠĠĠĠĠĠĠ ĠVector Anim Compat . clear Animation Callbacks ( d 2 ) ĊĊĠĠĠĠĠĠĠ Ġd . stop () ĊĠĠĠĠĠĠĠ Ġd 2 . stop () ĊĠĠĠ Ġ} Ċ } Ċ