package Ġcom . we 2 dx . hod op . firebase Ċ Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . we 2 dx . hod op . utils . Application Constants Ċ import Ġcom . we 2 dx . hod op . utils . Application Utility Ċ import Ġio . reactivex . Comp letable Ċ Ċ class ĠFirebase Services Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfirebase Auth : ĠFirebase Auth Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Auth . getInstance () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfire store DB : ĠFirebase Fire store Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Fire store . getInstance () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġlogin ( email : ĠString , Ġpassword : ĠString ) Ġ= ĠComp letable . create Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠ Ġfirebase Auth . signIn With Email And Password ( email , Ġpassword ). add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! emitter . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onError ( it . exception !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġfun Ġsave UserData ( userID : ĠString , username : ĠString , Ġpassword : ĠString , email : ĠString ) Ġ= ĠComp letable . create Ċ // ĠĠĠ Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġfire store DB . collection ( Application Constants . USERS ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( userID ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. set () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister ( email : ĠString , Ġpassword : ĠString ) Ġ= ĠComp letable . create Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠ Ġfirebase Auth . createUser With Email And Password ( email , Ġpassword ). add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! emitter . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onError ( it . exception !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlogout () Ġ= Ġfirebase Auth . sign Out () ĊĊĠĠĠ Ġfun ĠcurrentUser () Ġ= Ġfirebase Auth . currentUser Ċ Ċ } ĊĠĠĠĠĊ