package Ġcom . ra q un . android . data . source Ċ Ċ import Ġcom . ra q un . android . R aq un App Ċ import Ġcom . ra q un . android . session . State Ċ import Ġcom . ra q un . android . data . source . local . User Local DataSource Ċ import Ġcom . ra q un . android . data . source . remote . User Remote DataSource Ċ import Ġcom . ra q un . android . model .* Ċ import Ġcom . ra q un . android . api . request . Register Request Ċ import Ġcom . ra q un . android . api . response . Paged Response Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġty ln Ġon Ġ 0 7 / 0 8 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠUser Repository Ġ@ Inject Ġconstructor ( private Ġval Ġuser Local DataSource : ĠUser Local DataSource , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġuser Remote DataSource : ĠUser Remote DataSource ) Ġ: ĠUser DataSource Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser Credentials (): ĠUser ? Ġ= Ġuser Local DataSource . getUser Credentials () ĊĊĠĠĠ Ġoverride Ġfun Ġsave User ( register Request : ĠRegister Request ): ĠComp letable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġuser Remote DataSource . save User ( register Request ) ĊĊĠĠĠ Ġoverride Ġfun Ġlogin ( userName : ĠString , Ġpassword : ĠString ): ĠSingle < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Remote DataSource . login ( userName , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success ({ Ġuser : ĠUser ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR aq un App . session Manager . update Session ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Local DataSource . save Cred ant ial s ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogout (): ĠComp letable Ġ= Ġuser Remote DataSource . logout () ĊĊĠĠĠ Ġoverride Ġfun Ġcontact ( message Type : ĠInt , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Remote DataSource . contact ( message Type , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Notifications ( page : ĠPage ): ĠSingle < Paged Response < Notification >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Remote DataSource . get Notifications ( page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Favorite Products ( page : ĠPage ): ĠSingle < Paged Response < Product >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuser Remote DataSource . get Favorite Products ( page ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠBusiness Ġmethods ĊĠĠĠ Ġfun Ġis User LoggedIn () Ġ= ĠR aq un App . session Manager . getState () Ġ== ĠState . LOGIN ĊĊĠĠĠ Ġfun ĠgetCurrent User () Ġ= ĠR aq un App . session Manager . getCurrent User () ĊĊĠĠĠ Ġfun Ġdrop Session () Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Local DataSource . clear Credentials () ĊĠĠĠĠĠĠĠ ĠR aq un App . session Manager . drop Session () ĊĠĠĠ Ġ} Ċ }