package Ġcom . che ise _ proj . data . repository Ċ Ċ import Ġcom . che ise _ proj . data . model . Profile Data Ċ import Ġcom . che ise _ proj . data . model . Profile Data . Companion . profile Mapper Ċ import Ġcom . che ise _ proj . data . model . UserData Ċ import Ġcom . che ise _ proj . data . model . UserData . Companion . user Mapper Ċ import Ġcom . che ise _ proj . data . source . local . User Local Source Ċ import Ġcom . che ise _ proj . data . source . remote . User Remote Source Ċ import Ġcom . che ise _ proj . domain . entities . user . Profile Entity Ċ import Ġcom . che ise _ proj . domain . entities . user . User Entity Ċ import Ġcom . che ise _ proj . domain . repository . UserRepository Ċ import Ġio . reactivex . Observable Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠUser Repository Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġuser Remote : ĠUser Remote Source , ĊĠĠĠ Ġprivate Ġval Ġuser Local : ĠUser Local Source Ċ ) Ġ: ĠUser Repository Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Auth User ( email : ĠString , Ġpassword : ĠString ): ĠObservable < User Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Remote . fetch Auth User ( email , Ġpassword ). map Ġ{ Ġt : ĠUser Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġuser Mapper (). data To Entity ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser Profile (): ĠObservable < Profile Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Local . getUser Profile (). map Ġ{ Ġt : ĠProfile Data Ġ-> Ġprofile Mapper (). data To Entity ( t ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Observable () ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Remote . fetch UserProfile (). map Ġ{ Ġt : ĠProfile Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Local . save Profile ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Mapper (). data To Entity ( t ) ĊĠĠĠĠĠĠĠ Ġ}. concat With ( local ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister New User ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġemail : ĠString , ĊĠĠĠĠĠĠĠ Ġpassword : ĠString ĊĠĠĠ Ġ): ĠObservable < User Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Remote . register User ( name , Ġemail , Ġpassword ). map Ġ{ Ġt : ĠUser Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Local . save User ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġuser Mapper (). data To Entity ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }