package Ġk tu . edu . pro jekt as . app . ui . user Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Patterns Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Settings Ċ import Ġk tu . edu . pro jekt as . R Ċ import Ġk tu . edu . pro jekt as . databinding . Fragment Login Binding Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ Ċ // Ġfragment Ġclass Ġfor Ġuser 's Ġlogin Ċ class ĠLogin Fragment : ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Login Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Auth : ĠFirebase Auth ĊĠĠĠ Ġprivate Ġvar Ġf db : ĠFirebase Fire store Ġ= ĠFirebase Fire store . getInstance () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġf db . firestore Settings Ġ= ĠFirebase Fire store Settings . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Persistence Enabled ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġm Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ?) !!. support ActionBar !!. hide () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ?) !!. support ActionBar !!. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Login Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġview Lifecycle Owner ĊĊĠĠĠĠĠĠĠ Ġbinding . bt Signup . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. find Nav Controller ()?. navigate ( R . id . action _ login Fragment _ to _ register Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . bt Login . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Login () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġuser Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( binding . et Email . edit Text ?. text . toString (). trim (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Email . error Ġ= Ġ" Email Ġis Ġrequired !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Email . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif (! Patterns . EMAIL _ ADDRESS . matcher ( binding . et Email . edit Text ?. text . toString ()). matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Email . error Ġ= Ġ" Please Ġprovide Ġa Ġvalid Ġemail !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Email . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( binding . et Password . edit Text ?. text . toString (). trim (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Password . error Ġ= Ġ" Password Ġis Ġrequired !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Password . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( binding . et Password . edit Text ?. text . toString (). length Ġ< Ġ 6 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Password . error Ġ= Ġ" Password Ġis Ġtoo Ġshort Ġ- Ġit Ġhas Ġto Ġbe Ġat Ġleast Ġ 6 Ġcharacters Ġlong !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Password . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġm Auth . signIn With Email And Password ( binding . et Email . edit Text ?. text . toString (), Ġbinding . et Password . edit Text ?. text . toString ()). add On Complete Listener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( task . is Successful ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// activity ?. let Ġ{ ĠSn ackbar . make ( it . findViewById ( R . id . drawer _ layout ), Ġ" User Ġhas Ġbeen Ġregistered !", ĠSn ackbar . LENGTH _ LONG ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ? . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. find Nav Controller ()?. navigate ( R . id . action _ login Fragment _ to _ home Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. let Ġ{ ĠSn ackbar . make ( it . findViewById ( R . id . drawer _ layout ), Ġ" Failed Ġto Ġlogin , Ġplease Ġcheck Ġyour Ġcredentials !", ĠSn ackbar . LENGTH _ LONG ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }