package Ġcom . bab ak bel ur . st udi ary . presentation . ui . login Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . bab ak bel ur . st udi ary . R Ċ import Ġcom . bab ak bel ur . st udi ary . core . data . Result State Ċ import Ġcom . bab ak bel ur . st udi ary . core . utils . on Failure Ċ import Ġcom . bab ak bel ur . st udi ary . core . utils . on Success Ċ import Ġcom . bab ak bel ur . st udi ary . databinding . Fragment SignIn Binding Ċ import Ġcom . bab ak bel ur . st udi ary . presentation . base . Base Fragment Ċ import Ġcom . bab ak bel ur . st udi ary . presentation . ui . home . MainActivity Ċ import Ġcom . bab ak bel ur . st udi ary . presentation . ui . home . MainActivity . Companion . EXTRA _ NAME Ċ import Ġcom . bab ak bel ur . st udi ary . presentation . ui . home . MainActivity . Companion . EXTRA _ USER _ ID Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ @ Android EntryPoint Ċ class ĠSign In Fragment Ġ: ĠBase Fragment < Fragment SignIn Binding >( Fragment SignIn Binding :: inflate ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠLogin ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġnavigate To SignUp Fragment () ĊĊĠĠĠĠĠĠĠ Ġobserve SignIn Request () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve SignIn Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . btn SignIn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġbinding . et Username . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġbinding . et Password . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . signIn Request ( username , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . signIn . observe ( view Lifecycle Owner ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠisLoading Ġ= Ġresult Ġis ĠResult State . Loading ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ Ġresult Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġresult Data . data . user [ 0 ]. id User ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġresult Data . data . user [ 0 ]. name !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . success _ login ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To MainActivity ( userId , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Activity (), Ġthrowable . message , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Password . text . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . et Password . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . isVisible Ġ= ĠisLoading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To MainActivity ( userId : ĠInt , Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIntent ( require Activity (), ĠMainActivity :: class . java ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EXTRA _ USER _ ID , ĠuserId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( EXTRA _ NAME , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To SignUp Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . tv Create Account . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent FragmentManager . beginTransaction (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . login _ container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSign Up Fragment . newInstance (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSign Up Fragment :: class . java . simple Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( SignIn Fragment :: class . java . simple Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠSign In Fragment () ĊĠĠĠ Ġ} Ċ Ċ }