package Ġcom . inverse . un official . prox ert v . ui . home . login Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 1 7 . lean back . app . Gu ided Step Fragment Ċ import Ġandroid . support . v 1 7 . lean back . widget . Guid ance St y list Ċ import Ġandroid . support . v 1 7 . lean back . widget . Gu ided Action Ċ import Ġandroid . text . InputType Ċ import Ġandroid . widget . Toast Ċ import Ġcom . inverse . un official . prox ert v . R Ċ import Ġcom . inverse . un official . prox ert v . base . App Ċ import Ġcom . inverse . un official . prox ert v . base . Crash Reporting Ċ import Ġcom . inverse . un official . prox ert v . base . Pro xer Repository Ċ import Ġcom . inverse . un official . prox ert v . base . client . util . Api ErrorException Ċ import Ġrx . Subscription Ċ import Ġrx . android . schedul ers . Android Schedulers Ċ import Ġrx . schedul ers . Schedulers Ċ Ċ /** Ċ Ġ* ĠFragment Ġhandling Ġthe Ġuser Ġlogin . Ċ Ġ*/ Ċ class ĠLogin Fragment Ġ: ĠGu ided Step Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepository : ĠPro xer Repository ĊĠĠĠ Ġprivate Ġvar Ġlogin Subscription : ĠSubscription ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġusername : ĠString Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġpassword : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ{@ inheritDoc } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġrepository Ġ= ĠApp . component . get Pro xer Repository () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġinformation Ġrequired Ġto Ġprovide Ġguidance Ġto Ġthe Ġuser . ĠThis Ġhook Ġis Ġcalled Ġduring ĊĠĠĠĠ Ġ* Ġ{@ link Ġ# onCreate View }. Ġ ĠMay Ġbe Ġoverridden Ġto Ġreturn Ġa Ġcustom Ġsubclass Ġof Ġ{@ link ĊĠĠĠĠ Ġ* ĠGuid ance St y list . Guid ance } Ġfor Ġuse Ġin Ġa Ġsubclass Ġof Ġ{@ link ĠGuid ance St y list }. ĠThe Ġdefault ĊĠĠĠĠ Ġ* Ġreturns Ġa ĠGuid ance Ġobject Ġwith Ġempty Ġfields ; Ġsubclasses Ġshould Ġoverride . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠsavedInstanceState ĠThe Ġsaved Ġinstance Ġstate Ġfrom ĠonCreate View . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe ĠGuid ance Ġobject Ġrepresenting Ġthe Ġinformation Ġused Ġto Ġguide Ġthe Ġuser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate Guid ance ( savedInstanceState : ĠBundle ?): ĠGuid ance St y list . Guid ance Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= ĠgetString ( R . string . login _ title ) ĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= ĠgetString ( R . string . login _ description ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠGuid ance St y list . Guid ance ( title , Ġdescription , Ġ"", Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠF ills Ġout Ġthe Ġset Ġof Ġactions Ġavailable Ġto Ġthe Ġuser . ĠThis Ġhook Ġis Ġcalled Ġduring Ġ{@ link ĊĠĠĠĠ Ġ* Ġ# onCreate }. ĠThe Ġdefault Ġleaves Ġthe Ġlist Ġof Ġactions Ġempty ; Ġsubclasses Ġshould Ġoverride . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġactions ĠA Ġnon - null , Ġempty Ġlist Ġready Ġto Ġbe Ġpopulated . ĊĠĠĠĠ Ġ* Ġ@ param ĠsavedInstanceState ĠThe Ġsaved Ġinstance Ġstate Ġfrom ĠonCreate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate Actions ( actions : ĠMutable List < Gu ided Action >, ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactions . add ( Gu ided Action . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id ( USERNAME _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. editable ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Type ( InputType . TYPE _ CLASS _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit InputType ( InputType . TYPE _ CLASS _ TEXT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. description ( getString ( R . string . login _ username _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĊĠĠĠĠĠĠĠ Ġactions . add ( Gu ided Action . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id ( PASSWORD _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. editable ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. input Type ( InputType . TYPE _ CLASS _ TEXT Ġor ĠInput Type . TYPE _ TEXT _ VARI ATION _ PASSWORD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit InputType ( InputType . TYPE _ CLASS _ TEXT Ġor ĠInput Type . TYPE _ TEXT _ VARI ATION _ PASSWORD ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. description ( getString ( R . string . login _ password _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĊĠĠĠĠĠĠĠ Ġactions . add ( Gu ided Action . Builder ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. id ( LOGIN _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. title ( getString ( R . string . login _ action _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. hasNext ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCallback Ġinvoked Ġwhen Ġan Ġaction Ġhas Ġbeen Ġedited , Ġfor Ġexample Ġwhen Ġuser Ġclicks Ġconfirm Ġbutton ĊĠĠĠĠ Ġ* Ġin ĠI ME Ġwindow . Ġ ĠDefault Ġimplementation Ġcalls Ġdeprecated Ġmethod ĊĠĠĠĠ Ġ* Ġ[. on Gu ided Action Edited ] Ġand Ġreturns Ġ[ Gu ided Action . ACTION _ ID _ NEXT ]. ĊĊĠĠĠĠ Ġ* Ġ@ param Ġaction ĠThe Ġaction Ġthat Ġhas Ġbeen Ġedited . ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠID Ġof Ġthe Ġaction Ġwill Ġbe Ġfocused Ġor Ġ[ Gu ided Action . ACTION _ ID _ NEXT ], ĊĠĠĠĠ Ġ* Ġ* Ġ[ Gu ided Action . ACTION _ ID _ CURRENT ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Gu ided Action Edited And Pro ceed ( action : ĠGu ided Action ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUSER NAME _ ID Ġ-> Ġusername Ġ= Ġaction . title . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPASSWORD _ ID Ġ-> Ġpassword Ġ= Ġaction . title . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Gu ided Action Edited And Pro ceed ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCallback Ġinvoked Ġwhen Ġan Ġaction Ġhas Ġbeen Ġcanceled Ġediting , Ġfor Ġexample Ġwhen Ġuser Ġcloses ĊĠĠĠĠ Ġ* ĠI ME Ġwindow Ġby ĠBACK Ġkey . Ġ ĠDefault Ġimplementation Ġcalls Ġdeprecated Ġmethod ĊĠĠĠĠ Ġ* Ġ[. on Gu ided Action Edited ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġaction ĠThe Ġaction Ġwhich Ġhas Ġbeen Ġcanceled Ġediting . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Gu ided Action Edit Canceled ( action : ĠGu ided Action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUSER NAME _ ID Ġ-> Ġusername Ġ= Ġaction . title . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPASSWORD _ ID Ġ-> Ġpassword Ġ= Ġaction . title . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Gu ided Action Edit Canceled ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCallback Ġinvoked Ġwhen Ġan Ġaction Ġis Ġtaken Ġby Ġthe Ġuser . ĠSub classes Ġshould Ġoverride Ġin ĊĠĠĠĠ Ġ* Ġorder Ġto Ġact Ġon Ġthe Ġuser 's Ġdecisions . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġaction ĠThe Ġchosen Ġaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Gu ided Action Clicked ( action : ĠGu ided Action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( action . id Ġ== ĠLOGIN _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Subscription ?. unsubscribe () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( validate Input ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Subscription Ġ= Ġrepository . login ( username , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġrepository . sync UserList ( true ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġon Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Gu ided Step Fragments () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġon Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Ġis ĠApi ErrorException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMsg ( error . msg Ġ?: ĠgetString ( R . string . login _ error _ general )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCrash Reporting . log Exception ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMsg ( getString ( R . string . login _ error _ general )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Input (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername . isBlank () Ġ-> Ġshow ErrorMsg ( getString ( R . string . login _ error _ username _ empty )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword . isBlank () Ġ-> Ġshow ErrorMsg ( getString ( R . string . login _ error _ password _ empty )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow ErrorMsg ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġmsg , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER NAME _ ID Ġ= Ġ 1 L ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPASSWORD _ ID Ġ= Ġ 2 L ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠLOGIN _ ID Ġ= Ġ 3 L ĊĠĠĠ Ġ} Ċ } ĊĊĊĊĊĊĊĊ ĊĊĊĊĊĊ