package Ġcom . kotlin . architecture . registration . ui . login Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . databinding . Bind able Ċ import Ġandroidx . databinding . Observable Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . kotlin . architecture . api . response . User Model Ċ import Ġcom . kotlin . architecture . base . Base ViewModel Ċ import Ġcom . kotlin . architecture . registration . R Ċ import Ġcom . kotlin . architecture . registration . api . request . Login Request Model Ċ import Ġcom . kotlin . architecture . utils . StatusCode Ċ import Ġcom . kotlin . architecture . utils . Common Utils Ċ import Ġcom . kotlin . architecture . utils . Common Utils . is Network Available Ċ Ċ class ĠLogin ViewModel ( application : ĠApplication ) Ġ: ĠBase ViewModel ( application ), ĠObservable Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= Ġget Application < Application >(). application Context ĊĊĠĠĠ Ġprivate Ġval Ġ_ user Model Ġ= ĠMutable LiveData < Result Of < User Model >>() ĊĠĠĠ Ġval Ġuser Model : ĠLive Data < Result Of < User Model >> Ġ= Ġ_ user Model ĊĊĠĠĠ Ġ@ Bind able ĊĠĠĠ Ġval Ġinput Email Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġ@ Bind able ĊĠĠĠ Ġval Ġinput Password Ġ= ĠMutable LiveData < String >() ĊĊĠĠĠ Ġfun Ġsign In () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Email . value . isNull OrEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user Model . post Value ( Result Of . Validation ( StatusCode . STATUS _ CODE _ EMAIL _ VALIDATION , Ġcontext . getString ( R . string . err _ please _ enter _ email _ address ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! input Email . value ?. let Ġ{ ĠCommon Utils . isValid EmailAddress ( it ) Ġ} !! Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user Model . post Value ( Result Of . Validation ( StatusCode . STATUS _ CODE _ EMAIL _ VALIDATION , Ġcontext . getString ( R . string . err _ please _ enter _ valid _ email _ address ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Password . value . isNull OrEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user Model . post Value ( Result Of . Validation ( StatusCode . STATUS _ CODE _ PASSWORD _ VALIDATION , Ġcontext . getString ( R . string . err _ please _ enter _ password ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! context . is Network Available () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user Model . post Value ( Result Of . Validation ( StatusCode . STATUS _ CODE _ INTER NET _ VALIDATION , Ġcontext . getString ( R . string . err _ please _ check _ your _ internet _ connection ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ user Model . post Value ( Result Of . InProgress ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogin Request Model Ġ= ĠLogin Request Model ( input Email . value . toString (), input Password . value . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Repository . getInstance (_ user Model ). call Login Api ( login Request Model ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfacebook () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgoogle () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtwitter () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove On PropertyChanged Callback ( callback : ĠObservable . On PropertyChanged Callback ?) Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd On PropertyChanged Callback ( callback : ĠObservable . On PropertyChanged Callback ?) Ġ{ ĊĊĠĠĠ Ġ} Ċ }