package Ġcom . hone group p . family Register . view . authentication ĊĊ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . firebase . ui . auth . Auth UI Ċ import Ġcom . firebase . ui . auth . Id p Response Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . hone group p . family Register . R Ċ import Ġcom . hone group p . family Register . controller . Authentication Controller Ċ import Ġcom . hone group p . family Register . model . User Ċ import Ġcom . hone group p . family Register . utility . Email Path Switch Util Ċ import Ġcom . hone group p . family Register . utility . ID o uble Click To Exit Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġis Ġresponsible Ġfor ĠLogin Ġfunctionality . Ċ Ġ* Ġuse Ġthe ĠAuth UI Ġapi Ċ Ġ* Ġ*/ Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠID o uble Click To Exit Ġ{ ĊĠĠĠ Ġ// ĠThis Ġis Ġthe Ġrequest Ġcode Ġfor Ġsign Ġin ĊĠĠĠ Ġvar ĠRC _ SIGN _ IN Ġ= Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠChoose Ġauthentication Ġproviders ĊĠĠĠĠĠĠĠ Ġval Ġproviders Ġ= Ġarray ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuth UI . Id p Config . Email Builder (). build (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuth UI . Id p Config . Google Builder (). build () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġand Ġlaunch Ġsign - in Ġintent ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuth UI . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create SignIn Intent Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Available Providers ( providers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Theme ( R . style . Login Theme ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set T os And Privacy Policy Urls ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . term _ of _ service _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . privacy _ policy _ url )). setIs Smart Lock Enabled ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRC _ SIGN _ IN ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandle Ġthe Ġresult Ġof Ġauthentication , Ġreceive Ġinformation Ġand Ġupload ĊĠĠĠĠ Ġ* Ġit Ġto Ġfirebase */ ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ ĠresultCode : ĠInt , ĊĠĠĠĠĠĠĠ Ġdata : ĠIntent ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠRC _ SIGN _ IN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠId p Response . from Result Intent ( data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSuccessfully Ġsigned Ġd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠFirebase Auth . getInstance (). currentUser ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġthe ĠuserName Ġand Ġuser Contact ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuser Contact Ġ= Ġ" Default " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠuserName Ġ= Ġ" Default " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user . email Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Contact Ġ= Ġuser . email . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserName Ġ= Ġuser !!. displayName Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelative Path Ġ= ĠEmail Path Switch Util . email To Path ( user Contact ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAuthentication Controller ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. store User ( this , ĠUser ( username Ġ= ĠuserName ), Ġrelative Path ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( response Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġthe Ġuser Ġpress Ġback Ġbutton , Ġexit Ġthe Ġapp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish Affinity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ