package Ġcom . black c rows ys . ui . login Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġcom . black c rows ys . R Ċ import Ġcom . black c rows ys . exceptions . App Exception Ċ import Ġcom . black c rows ys . function extensions . getField Value Ċ import Ġcom . black c rows ys . function extensions . show Long Toast Text Ċ import Ġcom . black c rows ys . ui . ViewModel Factory Ċ import Ġcom . black c rows ys . ui . pin . Set PIN Activity Ċ import Ġcom . black c rows ys . util . ViewState Ċ import Ġdagger . android . Android Injection Ċ import Ġkotlinx . android . synt hetic . main . activity _ login .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠLogin With Api Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġstart Login Activity ( initial Context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( initial Context , ĠLogin With Api Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Context . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Factory ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlogin With Api Activity ViewModel : ĠLogin With Api Activity ViewModel ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĊĠĠĠĠĠĠĠ Ġlogin With Api Activity ViewModel Ġ= ĠViewModel Providers . of ( this , ĠviewModel Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Login With Api Activity ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġ// http Interceptor . url Ġ= Ġ" http :// ip . js ont est . com /" ĊĊĠĠĠĠĠĠĠ Ġlogin With Api Activity ViewModel . view State Response . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess State ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbtn Login . setOnClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin With Api Activity ViewModel . login With Api ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Username View . getField Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Password View . getField Value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġet Url View . getField Value () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess State ( view State : ĠView State ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( view State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Exception Ġ= Ġview State . throwable Ġas ĠApp Exception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Login Activity ", Ġ"${ app Exception . message }. ĠCause : Ġ${ app Exception . secondary Message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Long Toast Text ( view State . throwable . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠView State . Success < *> Ġ-> ĠSet PIN Activity . start Set PIN Activity ( this , Ġview State . data Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ