package Ġcom . example . news app . ui . login Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . example . news app . MainActivity Ċ import Ġcom . example . news app . R Ċ import Ġcom . example . news app . domain . user Ċ import Ġcom . example . news app . net . App Service Ċ import Ġcom . example . news app . session . Session Ċ import Ġcom . example . news app . ui . register . Register Activity Ċ import Ġkotlinx . android . synt hetic . main . activity _ login .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ register .* Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġusername Ġ= ĠfindViewById < EditText >( R . id . username ) ĊĠĠĠĠĠĠĠ Ġvar Ġpassword Ġ= ĠfindViewById < EditText >( R . id . password ) ĊĠĠĠĠĠĠĠ Ġvar Ġlogin _ btn Ġ= ĠfindViewById < Button >( R . id . login ) ĊĠĠĠĠĠĠĠ Ġvar Ġregister _ btn Ġ= ĠfindViewById < Button >( R . id . register Button ) ĊĊĊĊĠĠĠĠĠĠĠ Ġclass ĠText Change Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( username . length () Ġ> Ġ 0 Ġ&& Ġpassword . length () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin _ btn . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin _ btn . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġtext Change Ġ= ĠText Change () ĊĠĠĠĠĠĠĠ Ġusername . add TextChanged Listener ( text Change ) ĊĠĠĠĠĠĠĠ Ġpassword . add TextChanged Listener ( text Change ) ĊĊĠĠĠĠĠĠĠ Ġregister _ btn . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" register Ġbutton ", Ġ" clicked ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠIntent Ġ= ĠIntent ( this , ĠRegister Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogin . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" login Ġbutton ", Ġ" clicked ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( Session . BaseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Service Ġ= Ġretrofit . create ( App Service :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Service . login ( username . text . toString (), Ġpassword . text . toString ()). enqueue ( object Ġ: ĠCallback < ResponseBody > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < ResponseBody >, Ġresponse : ĠResponse < ResponseBody >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrespon ser Ġ= Ġresponse . body ()?. string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( respon ser Ġ== Ġ" false ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . login Flag Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . login Flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . session _ key Ġ= Ġrespon ser !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget _ user () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < ResponseBody >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget _ user (){ ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl (" https :// www . dor ado . host / android / public / index . php / index /") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġapp Service Ġ= Ġretrofit . create ( App Service :: class . java ) ĊĠĠĠĠĠĠĠ Ġapp Service . get ( Session . session _ key ). enqueue ( object Ġ: ĠCallback < user > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < user >, Ġresponse : ĠResponse < user >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . username Ġ= Ġresponse !!. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . f avor _ 1 Ġ= Ġresponse !!. f avor _ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . f avor _ 2 Ġ= Ġresponse !!. f avor _ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . f avor _ 3 Ġ= Ġresponse !!. f avor _ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . f avor _ 4 Ġ= Ġresponse !!. f avor _ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSession . f avor _ 5 Ġ= Ġresponse !!. f avor _ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove To Main () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < user >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlog error (){ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" çĻ»å½ķ å¤±è´¥ ï¼ģ ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmove To Main (){ ĊĠĠĠĠĠĠĠ Ġval ĠIntent Ġ= ĠIntent ( this , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ