package Ġcom . identity _ cr isis . thes amar it ans . activity . launcher Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . os . Build Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . identity _ cr isis . thes amar it ans . R Ċ import Ġcom . identity _ cr isis . thes amar it ans . util . ConnectionManager Ċ import Ġkotlinx . android . synt hetic . main . activity _ login .* Ċ Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġed Email : ĠEditText ĊĠĠĠ Ġlateinit Ġvar Ġed Password : ĠEditText ĊĠĠĠ Ġlateinit Ġvar Ġbtn Login : ĠButton ĊĠĠĠ Ġlateinit Ġvar Ġtxt Register : ĠTextView ĊĠĠĠ Ġlateinit Ġvar Ġshared Preferences : ĠSharedPreferences ĊĠĠĠ Ġvar Ġuid Ġ= Ġ"" ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĊĠĠĠĠĠĠĠ Ġed Email Ġ= ĠfindViewById ( R . id . ed Email ) ĊĠĠĠĠĠĠĠ Ġed Password Ġ= ĠfindViewById ( R . id . ed Password ) ĊĠĠĠĠĠĠĠ Ġbtn Login Ġ= ĠfindViewById ( R . id . btn Login ) ĊĠĠĠĠĠĠĠ Ġtxt Register Ġ= ĠfindViewById ( R . id . txt Register ) ĊĊĠĠĠĠĠĠĠ Ġshared Preferences Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget SharedPreferences ( getString ( R . string . shared Preference ), ĠContext . MODE _ PRIVATE ) ĊĊĠĠĠĠĠĠĠ Ġbtn Login . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcm Ġ= Ġthis . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Network : ĠNetwork Info ? Ġ= Ġcm . active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Connected : ĠBoolean Ġ= Ġactive Network ?. isConnected Or Connecting Ġ== Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Login Activity "," Internet Ġavailable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Login Activity "," Internet Ġnot Ġavailable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalert No Net () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtxt Register . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Login Activity , ĠRegister Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogin () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġed Email . text . toString (). trim () ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġed Password . text . toString (). trim () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( email . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġed Email . error Ġ= Ġ" Mandatory Ġfield " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( password . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġed Password . error Ġ= Ġ" Mandatory Ġfield " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠprogressBar . visibility = ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance (). signIn With Email And Password ( email , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility = View . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Login Activity ," Login Ġerror !! ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Main ", Ġ" Cannot ĠLogin Ġuser Ġwith Ġuid Ġ${ it . message }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility = View . IN VISIBLE Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . is Successful ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ add On Complete Listener ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed Email . setText ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġed Password . setText ("") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuid Ġ= ĠFirebase Auth . getInstance (). uid . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences . edit (). putString (" UID ", Ġuid ). apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Main ", Ġ" Successfully ĠLogin ĠUser ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Login Activity , Ġ" Successfully ĠLogin !", ĠToast . LENGTH _ SHORT ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Login Activity , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility = View . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġalert No Net () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠAlertDialog . Builder ( this @ Login Activity ) ĊĠĠĠĠĠĠĠ Ġdialog . setTitle (" Error ") ĊĠĠĠĠĠĠĠ Ġdialog . setMessage (" Internet ĠConnection Ġis ĠNot ĠFound ") ĊĠĠĠĠĠĠĠ Ġdialog . set Positive Button (" Open ĠSettings ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsettings Intent Ġ= ĠIntent ( Settings . ACTION _ WI RE LESS _ SETTINGS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( settings Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . finish Affinity ( this @ Login Activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . set Negative Button (" Exit ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . finish Affinity ( this @ Login Activity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . create () ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠ Ġ} Ċ }