package Ġcom . y aky . bet aser ie following . ui . activities Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . y aky . bet aser ie following . Exception . Credential Exception Ċ import Ġcom . y aky . bet aser ie following . R Ċ import Ġcom . y aky . bet aser ie following . data . classes . User Ċ import Ġcom . y aky . bet aser ie following . domain . request . Request To Beta Ser ie Ċ import Ġcom . y aky . bet aser ie following . ui . App Ċ import Ġkotlinx . android . synt hetic . main . login .* Ċ import Ġorg . jetbrains . ank o .* Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . IOException ĊĊĊĊĊ Ċ class ĠLogin Activity : ĠBase Activity (), ĠMenuItem . On MenuItem ClickListener , ĠAn ko Logger Ġ{ ĊĠĠĠ Ġvar Ġuser : ĠUser ? Ġ= Ġnull ĊĠĠĠ Ġ/// TODO : Ġclass Ġcontain in Ġall Ġthe Ġkey ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠuserName Key Prefs : ĠString Ġ= Ġ" name " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġuser Password Key Prefs : ĠString Ġ= Ġ" password " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtoken Key From Api : ĠString Ġ= Ġ" token " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbundle Key User : ĠString Ġ= Ġ" user " ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . login ) ĊĠĠĠĠĠĠĠ Ġ/// TODO : Ġbet er Ġprefs Ġman ag ment Ġ? ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( App . instance ) ĊĠĠĠĠĠĠĠ Ġif ( prefs . getString ( userName Key Prefs , Ġ"") Ġ!= Ġ"" Ġ&& Ġprefs . getString ( user Password Key Prefs ," ") Ġ!= Ġ""){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser ( prefs . getString ( userName Key Prefs , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . set Encrypted Password ( Ġprefs . getString ( user Password Key Prefs , "" )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin . setText ( user . login ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug {" using Ġprefs Ġfor Ġlogin "} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetToken ( user , Ġ Ġ{ token : ĠString Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . token Ġ= ĠJSONObject ( token ). getString ( token Key From Api ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" token Ġ: Ġ" Ġ+ Ġuser . token Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . user Ġ= Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĠstartActivity ( Intent ( this , ĠList Series Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNullPointerException Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . instance . toast ( App . instance . getString ( R . string . Login Null Pointer Server )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvalidate . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġlogin . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġ"" Ġ|| Ġpassword Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast ( App . instance . getString ( R . string . Login Input Error )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/// TODO Ġ: Ġwait er Ġfor Ġuser Ġinfo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew User Ġ= ĠUser ( user , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug {" using Ġinput Ġuser Ġfor Ġlogin Ġ"} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetToken ( new User , Ġ{ token : ĠString Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew User . token Ġ= ĠJSONObject ( token ). getString ( token Key From Api ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo Ġ{ Ġ" token Ġ: Ġ" Ġ+ Ġnew User . token Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . edit (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( userName Key Prefs , Ġnew User . login ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( user Password Key Prefs , Ġnew User . password ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . user Ġ= Ġnew User ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġ Ġfun Ġon MenuItem Click ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġdebug Ġ{ Ġ" on MenuItem Click Ġover rid en Ġ: Ġ=> Ġsend Ġuser "} ĊĠĠĠĠĠĠĠ Ġitem . isChecked Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu List Series Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠList Series Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( bundle Key User , Ġthis . user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprivate Ġfun ĠgetToken ( user : ĠUser , Ġcallback : Ġ( m : ĠString ) Ġ-> ĠUnit ) ĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠRequest To Beta Ser ie (). request Credential ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( response Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo {" call Ġcallback "} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarn {" Response Ġis Ġnull Ġ=> Ġthrow Ġnull Ġpointer Ġexception "} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNullPointerException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCredential Exception Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . instance . toast ( App . instance . getString ( R . string . Login Wrong Credential )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIOException Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . instance . toast ( App . instance . getString ( R . string . Connection Exception )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ }