package Ġcom . web add ict ed . h ilt session . view . login Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . web add ict ed . h ilt session . R Ċ import Ġcom . web add ict ed . h ilt session . data . model . home . UserInfo Res po Ċ import Ġcom . web add ict ed . h ilt session . databinding . Frm Login Binding Ċ import Ġcom . web add ict ed . h ilt session . utils . api utils . ApiResponse Ċ import Ġcom . web add ict ed . h ilt session . utils . common . Global Utils Ċ import Ġcom . web add ict ed . h ilt session . utils . common . Global Utils . show Toast Ċ import Ġcom . web add ict ed . h ilt session . utils . common . Image Picker Helper Ċ import Ġcom . web add ict ed . h ilt session . utils . common . Permission Helper Ċ import Ġcom . web add ict ed . h ilt session . utils . common . Validation Helper Ċ import Ġcom . web add ict ed . h ilt session . view . base . Base Fragment Ċ import Ġcom . web add ict ed . h ilt session . view . home . Home Activity Ċ import Ġcom . web add ict ed . h ilt session . view model . Login ViewModel Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠLogin Fragment Ġ: ĠBase Fragment ( R . layout . frm _ login ) Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Binding : ĠF rm Login Binding ĊĠĠĠ Ġprivate Ġval Ġlogin ViewModel : ĠLogin ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠLogin Fragment :: class . qualified Name ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( bundle : ĠBundle ): ĠLogin Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠLogin Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind To ( binding : ĠView Data Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding Ġ= Ġbinding Ġas ĠF rm Login Binding ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġclick Listener () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding . ed t Email . setText ( getString ( R . string . my _ mail _ id )) ĊĠĠĠĠĠĠĠ Ġm Binding . ed t Mobile . setText ( getString ( R . string . my _ mob ie _ no )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclick Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding . btn Login . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġm Binding . txt Signup . setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onClick ( v ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . txt _ signup Ġ-> Ġnavigate Screen ( Signup Fragment . TAG ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ login Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List . add ( Manifest . permission . ACCESS _ F INE _ LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List . add ( Manifest . permission . ACCESS _ CO AR SE _ LOCATION ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List . add ( Manifest . permission . FO REG ROUND _ SERVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Helper . request Multiple Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠPermission Helper . Permission Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Permission Granted ( m Custom Permission : ĠList < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( validate ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Utils . delay ( 1 0 0 0 ) Ġ{ Ġ_: ĠBoolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck UserInfo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Permission Denied ( m Custom Permission : ĠList < String >) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck UserInfo () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . get Db UserInfo Api ( m Binding . ed t Email . text . toString ()) ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . get Db UserInfo Res po . observe ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Api Res po ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . loading Ty re Iv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġis Failure : ĠBoolean , Ġresult : ĠApiResponse < UserInfo Res po >? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Failure ) Ġcheck UserInfo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġresult ?. data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user ?. email . equals ( m Binding . ed t Email . text . toString ()) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser ?. mobile Phone . equals ( m Binding . ed t Mobile . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. show Toast ( getString ( R . string . login _ successfully )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin ViewModel . set Pref UserInfo ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHome Activity . new Clear Login ( m Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. show Toast ( getString ( R . string . email _ mobile _ not _ match )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠisValid Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ(! Validation Helper . validate Mobile No ( m Binding . ed t Mobile , Ġm Binding . input Mobile )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisValid Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! Validation Helper . validate Email ( m Binding . ed t Email , Ġm Binding . input Email )) ĠisValid Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn ĠisValid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate Screen ( tag : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfrm : ĠFragment ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġwhen Ġ( tag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSign up Fragment . TAG Ġ-> Ġfrm Ġ= ĠSign up Fragment . getInstance ( Bundle ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( frm Ġ!= Ġnull ) Ġnavigate Fragment ( R . id . container , Ġfrm , Ġtrue ) ĊĠĠĠ Ġ} Ċ }